diff --git a/Assets/Obi.meta b/Assets/Obi.meta new file mode 100644 index 000000000..ca3faab2e --- /dev/null +++ b/Assets/Obi.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0254f5089d8c44d438ed11541da61727 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/CHANGELOG_rope.txt b/Assets/Obi/CHANGELOG_rope.txt new file mode 100644 index 000000000..8183430e4 --- /dev/null +++ b/Assets/Obi/CHANGELOG_rope.txt @@ -0,0 +1,497 @@ +# Change Log +All notable changes to “Obi - Advanced ropes for Unity” will be documented in this file. + +## [6.5.4] + +### Fixed +- Workaround for kinematic rigidbody velocities not writable in Unity 2022.1 and above. + +## [6.5.3] + +### Changed +- Updated UnsafeList with its generic version for supporting newer versions of the Collections package. + +## [6.5.2] + +### Changed +- Slightly improved overall performance by only updating collision material references during OnValidate() +- Exposed solver.activeParticles and solver.colors as a ObiNativeIntList instead of int[], which allows to use them directly in jobs. +- Updated for compatibility with newest Collections package. + +## [6.5.1] + +### Added +- Support for holes in terrain colliders. + +## [6.5] + +### Added +- Improved constraint coloring, which results in much faster blueprint generation. + +### Fixed +- Memory leak when using collision constraints in the Burst backend. +- Performance drop when using collision constraints in Burst >1.7 +- Incorrect lighting on particles in the blueprint editor, when opening the editor without having previously opened any scene. + +## [6.4] + +### Added +- Support for configurable enter play mode (domain and scene reload disabling). +- Support for in-editor hot reloading. +- Numerical fields to edit control point position and tangents added to the path editor. + +### Changed +- Better path editor integration using Unity's editor custom tool API. +- GrapplingHook sample scene now features a hook rope that extends over time, instead of extending instantly. +- Reduced memory allocation in ObiPathSmoother Decimate() method. +- Introduced a job handle pool to avoid runtime allocation of handles by both Burst and Oni backends. +- Constraint padding array in Burst solver has been turned into a member variable instead of allocating anew it every frame. +- Collision and friction batches are pooled instead of allocated every frame. + +### Fixed +- InvalidOperationException when performing certain spatial queries with jobs debugger enabled in the Burst backend. +- ObiBone collision category was internally resetting to zero upon pressing play. +- Particle render mode in blueprint editor wasn't updated every frame under specific circumstances. + +## [6.3] + +### Added +- New ObiBone actor, creates a particle-based representation of a bone hierarchy and simulates it using rod constraints. +- Built-in support for applying solver gravity in world-space. + +### Fixed +- Bug in attachments: prefab modifications were not being applied to the component. +- Slight reduction in solver memory allocation. +- Object disposed exception when using contact callbacks with a non-visible solver. + +## [6.2] + +#IMPORTANT: If updating from an older version, you’ll need to readjust collision filtering in your scenes. +Phase-based collision filtering has been replaced by mask/categroy based system. + +### Added +- New spatial query API, that allows to perform efficient distance, overlap and raycast queries. + +### Changed +- Collision phase filtering has been replaced by a category/mask system. If you upgrade existing projects to Obi 6.2, you will have to set up categories and masks appropiately. + + +## [6.1] + +### Added +- RopeCutting sample scene, where screen-space line dragged by the user is used to cut multiple 3D ropes. +- Snake sample scene, where a snake-like character implemented using a rope can be controlled by the user. + +### Changed +- Decreased minimum error in distance fields to 1e-07 + +### Fixed +- Bug in Oni backend: collision stickiness resulted in rapid particle separation from the collision surface. +- Bug that caused NaN velocity assignments to rigidbodies after removing all actors from a solver. + +## [6.0.1] + +### Fixed +- Bug in Burst backend, resulting in InvalidOperationException when enabling Burst safety checks. +- Bug in ObiSolver that caused particleToActor array entries to be null. + +## [6.0] + +### Added +- Optional simplex-based surface collion pipeline for more accurate collision detection/response. +- Predictive variable-step constraint solving that makes syncing Unity's physics no longer necessary when using substeps. +- Amount of CCD is now adjustable per-solver. +- Collision margin is now adjustable per-solver. +- Bend and bend/twist constraints now support plasticity. +- One-sided collision detection between particles. Particles with one-sided collision detection will always project penetrating particles to the side defined by their associated normal. + +### Fixed +- Bug in dynamic particle attachments that would case colliders parented under a solver to lose their attachments upon enabling/reenabling a solver. + +### Changed +- Contacts "particle" and "other" have been renamed to "bodyA" and "bodyB". bodyB might be a simplex or collider index, depending on the contact type.To access +particle indices from simplex indices, use the solver.simplices array. + +## [5.6.2] + +### Fixed +- Missed collisions using certain meshes for MeshColliders, due to a bug in bounding interval hierarchy generation. +- Corrected orientation error in the first particle of rods, when there's multiple rods in a solver. +- Corrected rendering error in rods, when there's multiple rods in a solver. + +## [5.6.1] + +### Fixed +- Bug in Burst backend: solver bounding box size was typically underestimated. +- Bug in Burst backend: when using volume constraints: "InvalidOperationException: The NativeContainer ApplyVolumeConstraintsBatchJob.particleIndices has not been assigned or constructed" +- Bug in Burst backend: not releasing native arrays when empty solvers -with zero actors in them- are present in the scene. +- Bug in Oni backend: volume constraints not working properly when multiple actors are present in the solver. +- Fixed crash when using ObiLateUpdater or ObiLateFixedUpdater with the Burst backend. +- Reduced GC allocation in dynamic particle attachments. +- Fixed bug in Skin constraints, that caused them to fail restricting particle movement in certain circumstances. + +### Changed +- Updated Oni iOS library to XCode 12.1. Make sure to use XCode 12.1 or up to build for iOS when using the Oni backend. +- ObiKinematicVelocities component has been removed. Its functionality is now built into the engine, and automatically used for kinematic rigidbodies. + +### Added +- Sample ObiContactDispatcher component, that will call custom enter/stay/exit contact events. +- Support for multiple solvers in sample script in ObiContactGrabber. +- Added util LookAroundCamera component. + +## [5.6] + +### Added +- Faster SDF generation. +- New sample scene. + +### Fixed +- Bug that causes out of bounds access when dinamically adding/removing colliders at runtime. +- Bug that prevented stitch constraints from working first time they were enabled. +- Offset in particle selection brush on high density screens. + +### Changed +- Constraint batches of multiple actors are now merged together. This greatly reduces the amount of dispatched jobs and improves performance on both backends. +- Colliders no longer have a "use distance fields" boolean value, they will always use the SDF as long as they have one. + +## [5.5] + +### Added +- Backend system: abstracts the underlying particle-based physics engine used. To the native, built-in engine (Oni), we have added a Burst-based implementation that +will run on all platforms supported by Burst. + +### Changed +- Improved path smoother, line and extruded renderer performance. + +## [5.4] + +### Fixed +- Bug that caused a crash when using Obi in conjunction with Mirror networking system (NetworkIdentity component). +- Bug that could cause a crash when disabling an actor under a disabled solver. +- Bug that prevented self-collisions to work correctly between particles created at runtime by a ObiRopeCursor. + +### Changed +- Recompiled iOS libraries using XCode 11.3.1, to circumvent bitcode compatibility issues now that XCode 11.4 and up have a bug that cause linking against Obi to fail. + + +## [5.3] + +### Added +- Added adaptive rendering decimation to ObiPathSmoother, controllable using a curvature threshold. +- Greatly increased numerical precision for rigidbody interaction when solvers are far away from the origin. +- 2D colliders now span infinitely in the Z axis. + +### Fixed +- Issue in the ObiStitcher editor that picked up incorrect particles when adding stitches. +- Issue that caused a 1-frame delay for collider geometry parented inside a solver. +- Issue in ObiParticleDragger that caused incorrect behavior with multiple solvers. +- Bug in particle advection, that assumed diffuse particle positions to be expreseed in world space. Now advection works correctly +for solvers not positioned at 0,0,0. + +## [5.2] + +### Added +- Rope tear callback (cloth.OnRopeTorn) +- Function to reset particle positions orientations and and velocities in an actor (actor.ResetParticles()) +- Added support for ObiRopeLineRenderer in SRPs. + +### Fixed +- Issue with inertia rotations, that caused wrong inertia tensors for complex compound colliders. +- Issue in particle attachments, that forced to call Bind() manually after changing their target or particle group at runtime. + + +## [5.1] + +### Added +-Smooth initial overlap resolution by using clamped depenetration velocity. +-Actors now automatically create a solver root when editing them in prefab mode. +-Brought back rope mesh baking. + +### Fixed +- Bug that caused solvers with no actors in their hierarchy to freeze Unity when updated by a fixed updater. +- Bug that prevented multiple colliders in the same object to be notified of transform changes. + +### Fixed +-Fixed bug that caused null ref when attempting to edit a rope with no blueprint. + +## [5.0] + +#IMPORTANT: You’ll need to re-create all your 4.x ObiRope components. Data serialization and workflows are significantly different from previous versions. + +### Changed +- Introduced blueprints: particle/constraint object representations are now stored in assets called "blueprints" (as opposed to being stored in the actor itself, as in previous versions). This improves +memory consumption, editor performance, completely separates data from the runtime components that operate on it, and enables easier and faster workflow. +- Non-linear, non-destructive rope editing with instant feedback. +- Simplified underlying engine, constraints are grouped in batches using graph coloring for optimal parallelism. +- Unified handles and pin constraints as "attachments". +- Pin and distance constraints now correctly report forces in Newtons. +- Unitless "Stiffness" parameters have been replaced by "Compliance" parameters in most constraint types, expressed in Newtons/meter. + +### Added +- Support for multiple cursors in a single rope. + +### Removed +- World space/local space simulation. Simulation is now always performed in solver space. +- Solvers no longer have a maxParticles attribute. They dynamically change their capacity at runtime. + +### Fixed +- Crash in certain iOS devices using the A12 cpu. + +## [4.2] + +### Added +- Remade all sample scenes to work in Unity 2019.1 and above. + + +## [4.1] + +#IMPORTANT: You’ll need to re-create all your 3.x ObiRope components, as internal data layout of previous versions as well as serialized GameObject data from previous versions is not compatible with 4.x. + +### Added +- Now you can bake the rope mesh anytime, saving it as a new mesh asset in your project. Useful for set dressing and generating static geometry. Only works for ObiRopeExtrudedMeshRederer and ObiRopeMeshRenderer. +- More accurate collision/contact model, using staggered projections. +- Approximate shock propagation for particle contacts. This makes particle stacking easier and stabler. A new parameter has been added to the solver that controls the amount of shock propagation. +- Split material friction into static and dynamic friction. +- Added rolling contacts w/ rolling friction. These are slightly more expensive than regular contacts. Can be controlled on a per-collision material basis. +- Added ObiInstancedParticleRenderer, allows to draw particles as instances of an arbitrary mesh (requires GPU instancing). +- Particle-particle collision callbacks (solver.OnParticleCollision) + +### Fixed +- Bug that caused mesh colliders with negative thickness to crash. + +### Changed +- More reliable, higher precision algorithm for distance field generation. Specially noticeable in sharp corners/crevices. + +## [4.0.2] + +#IMPORTANT: You’ll need to re-create all your 3.x ObiRope components, as internal data layout of previous versions as well as serialized GameObject data from previous versions is not compatible with 4.x. + +### Changed +- Switched the Windows compiler to Clang/LLVM, resulting in a huge performance improvement. + +### Fixed +- Null ref exception when copying a ObiCloth component. +- Issue with pin constraints overshooting when solver set to world space mode. +- Issue that prevented pin constraints being torn. + +## [4.0] + +#IMPORTANT: You’ll need to re-create all your ObiRope components, as internal data layout of previous versions as well as serialized GameObject data from previous versions is not compatible with 4.x. + +### Added +- New ObiRod actor: advanced rope that models torsion, as well as anisotropic bending and shearing. +- Added 3 new constraint types: Shear/Stretch, Bend/Twist and Chain. +- Achieved zero garbage generation trough the use of new Unity API for camera frustum planes. + +### Changed +- All particle buffers (positions, velocities, etc). are now shared between C++/C# using pointers to aligned memory. This completely eliminates the need for copying data back and forth, simplifies the API + and improves performance. The entire Oni.Get/SetParticle* family of methods has disappeared, now you can work with the particle buffers directly. +- Rope rendering modes have been replaced by ObiRopeRenderer components. + +### Fixed +- Null ref exception when initializing a disabled actor. +- Bug that caused XPBD to be time step dependent. + +## [3.5] + +### Added +- Support for 32 and 64 bit Linux architectures. +- Two-way rigidbody interaction for local-space solvers. +- Added world inertia scale. +- ObiCollider now takes a reference to a Collider, enabling the use of multiple colliders in the same GameObject. + +### Changed +- Separated world velocity scale into linear and angular components. +- World velocity scale is no longer specified per-actor, but per-solver. +- Better ObiProfiler: it now shows a per-thread pyramid diagram of internal jobs, with more human-readable names. + +### Removed +- Solvers no longer have a Collision Layers property. All solvers share the same colliders. Note that you can still use phases to ignore collisions with certain colliders. +- Local space solvers no longer need their own copy of each ObiCollider in the scene, they can all share the same colliders. This results in much higher performance for multiple local-space solvers. + +### Fixed +- Added (float3x3) typecast to particle shaders, to be GLES friendly. + +## [3.4.1] + +### Added +- "Thickness from particles" now works in Custom Mesh render mode. +- Custom Mesh mode now has a "volume scaling" parameter that squashes and stretches the mesh together with the rope. + +## [3.4] + +### Added +- Perspective-correct particle rendering. +- ObiParticleRenderer now supports custom shaders for rendering. + +### Fixed +- Bug that required to disable and re-enable ObiParticleRenderer when moving the actor to a new solver. +- Bug that caused twitching when performing more than 1 physics step per frame when using handles. + +## [3.3.1] + +### Fixed +- Removed unused variable warnings introduced in 3.3 +- Fixed null ref exception when creating a new distance field asset. +- Fixed crash when using multiple solvers in different update modes. +- Fixed some sample scenes lacking collision due to missing distance field. + +## [3.3] + +### Added +- Support for 2D rigidbody coupling has been brought back. +- Added substepping to the core solver. This allows to update each solver at a different effective frequency, and decouple the Obi + physics loop from Unity’s. +- New implementation of fine-grained parallel tasks in core solver, that boosts performance up to x1.5. +- Support for a new type of rope rendering, that can deform any mesh to follow the rope curve. +- Support for a new collision primitive: distance fields. +- Support for per-particle coloring of rope. +- ObiCollider automatically creates ObiRigidbody component if needed when reparenting it. +- Helper script (ObiKinematicVelocities) that calculates angular and linear velocities for kinematic rigidbodies that are transformed around. Useful for continuous collision detection and friction effects against objects that are being moved around using their transform instead of forces. + +### Changed +- Near-zero garbage generation for OnCollision and ObFluidUpdated solver events. +- Near-zero garbage generation for rope rendering. +- Constraints.GetBatches() now returns an IEnumerable. This means it cannot be accesed by index. There’s a helper method GetFirstBatch() that returns +the correctly typed first batch, or null if there’s none. + +### Fixed +- Null reference exception in pin constraints when visualization is enabled. +- Bug that caused asleep particles to miss collisions upon reactivation. +- Bug that caused copying a rope to “steal“ the mesh from the original one. + +## [3.2] +### Added +- Support for CapsuleCollider2D. + +### Changed +- Rope is still rendered (though not simulated) when the ObiRope component is disabled. +- Colliders/rigidbodies are no longer copied over to the C++ library each frame. Instead, only colliders that have their transform or any collision-related property altered are copied to the solver. This greatly improves performance when many colliders are present, and greatly reduces memory allocation and GC activity. +- AllocateParticles() and FreeParticles() have been merged with AddActor() and RemoveActor() respectively. A new per-particle array “particleToActor” makes it faster and easier to know which actor a particle belongs to. + +### Removed +- ObiCollisionGroup has disappeared. It is no longer necessary to manually add colliders to a group, instead each ObiSolver automatically picks up all ObiColliders in a given layer. +- MeshColliders are now always treated as two-sided thin concave meshes. Solid and one-sided modes have disappeared. + +### Fixed +- Android issue that prevented some devices from finding the Oni library. +- Removed redundant menu items. + +## [3.1.1] +### Added +- New “Line” rendering mode for ropes. This will render the rope as a camera-oriented quad strip, similar to what Unity’s LineRenderer does. This is useful for lightweight rendering and 2D games. +- Particle renderer is now much faster and also allocates less memory. +- New “hierarchical” method to generate tether constraints: this method generates more constraints than the traditional “anchor to fixed” approach, but works in the general case even if there are no fixed particles. + +### Changed +- Installation is no longer required. Obi now works right out of the box, so the installation window has been removed, and the “Editor default resources” and “Gizmos” folders removed. + +## [3.1] +### Added +- You can now choose where should the solver be updated: FixedUpdate, AfterFixedUpdate, or LateUpdate. +- Rope rendering now supports variable thickness, based on particle radii. Enabled by default, disable “thickness from particles” to get uniform thickness regardless of particle radii variations. +- Edit-time preview of “smoothness” rope parameter. +- Utility method to calculate actual rope length. +- Support for triggers. A trigger collider will generate contact constraints, but won´t enforce them. +- Contact structs returned by the OnCollision event now include the contact tangent and bitangent vectors. +- Added per-particle layer properties, for finer collision control. + +### Changed +- Faster and more accurate rigidbody impulse application, which results in better collision resolution. +- Greatly improved pin constraint stability for large mass ratios. +- ObiColliderGroup’s Colliders and Colliders2D properties are now plain arrays: “colliders” and “colliders2D”. +- Memory allocation for rope mesh generation has been reduced by 90%. +- ObiParticleRenderer memory allocation has been greatly reduced, and its performance improved. +- Pin constraints are now always drawn in particle edit mode, not only when the particles are selected. + +### Fixed +- Got rid of warnings related to obsolete platform enums in sample scripts. +- Potential bug in GCHandle deallocation affecting upcoming Unity versions (thanks to the guys at Unity for pointing me at this) +- Tearable pin constraints now work correctly. + +## [3.0.1] +### Added +- Support for iOS simulator. +- Faster collision contact generation. + +### Fixed +- Crash in Crane scene due to a bug in pin constraints. + +## [3.0] + +#IMPORTANT: You’ll need to re-generate all your ropes as internal data layout of previous versions is not compatible with this update. +### Added +- Welcome window with automatic installer. +- Upgraded constraint projection to XPBD (extended position-based dynamics). This decouples stiffness and damping from the amount of iterations, resulting in more realistic simulation. +- Solver constraint enforcement order can now be changed. This allows to change the relative importance of constraints. +- The solver now uses a task-based threading system which allows to exploit parallelism between multiple solvers. +- Custom multithreading profiler, that allows to fine-tune performance. +- Optional local-space simulation, for better numerical accuracy in large-scale worlds and greater control. +- ObiStitcher component allows to stitch together separate ropes. +- Added pencil paint mode to particle editor. +- Automatic self-collisions disabling for particles that intersect in rest pose. This allows to set larger particle radii + to ensure better self-collisions, without worrying about constraint fighting. +- Breakable pin constraints. +- Ropes are now tearable, and custom prefabs can be instantiated at both sides of the tear. +- Rope length can be changed at runtime, using the ObiRopeCursor component. +- Procedural curve geometry smoothing. + +### Changed +- Actor particle limit is no longer 16384 but 65536, matching Unity’s own vertex limit. +- Particle editor paint brush falloff has ben changed from linear to gaussian. +- Distance constraints’ compression stiffness has been replaced by a slack percentage. +- Performance improvement in mesh colliders and edge colliders. + +### Fixed +- Bug in collision detection against terrains. +- Crash in 32-bit windows systems due to memory misalignment. +- Bug that caused slow convergence and excessive jittering for particle-particle sequential contact resolution. +- Bug in hierarchical grid update that caused a crash in some cases when a hash key collision happened. +- Bug in continuous collision detection that caused particles to be pushed to the other side of very thin objects. +- Bug in ray/bounding box intersection test caused by non-IEEE754 compliant SSE division by zero. +- Bug that caused ObiParticleRenderer to ignore camera culling mask, and render in all cameras. +- Bug that caused a crash under certain conditions in 32 bit systems. +- Bug that caused particle property value field to reset to the value of the last particle when painting. +- Fixed collision stabilization bug that caused particles to sink slightly when over a dynamic rigidbody. + +## [1.2] + +### Added +- Android support. +- Upgraded constraint projection to XPBD (extended position-based dynamics). This decouples stiffness and damping from the amount of iterations. +- Solver constraint enforcement order can now be changed. This allows to change the relative importance of constraints. +- Welcome window with automatic installer. +- Resolution-preserving method to change rope length dynamically. +- Added pencil paint mode to particle editor. +- Optional local-space simulation, for better numerical accuracy in large-scale worlds and greater control. +- Custom multithreading profiler, that allows to fine-tune performance. +- Better particle visualization in editor. +- Breakable pin constraints. + +### Changed +- Actor particle limit is no longer 16384 but 65536, matching Unity’s own vertex limit. +- Particle editor paint brush falloff has ben changed from linear to gaussian. +- Distance constraints’ compression stiffness has been replaced by a slack percentage. + +### Fixed +- Bug that caused an index out of bounds exception when initializing rope with zero resolution. +- Bug that caused an error message regarding MeshFilter destruction when entering play mode with a rope selected in the hierarchy. +- Bug that prevented the particle editor window from appearing on retina displays. +- 1-frame delay between particle and rigid body physics, which affected pin and collision constraints. + +## [1.1] + +### Added +- MeshColliders are now fully supported. +- Support for 2D physics, Box2D, Circle2D and Edge2D colliders. +- Chain rendering. +- Sleep threshold that keeps particles fixed in place when their kinetic energy is low. +- Chain constraints, that allow for 100% inextensible ropes. +- Rope thickness, twist, cap sections and section shape can now be changed without the need to re-initialize the rope. +- Required constraint components are automatically removed from the object when removing the rope component in editor. + +### Fixed +- Issue with box colliders, that caused incorrect contact generation in corners when using contactOffset. + +## [1.0.0] - 2015-07-16 +- Initial release. diff --git a/Assets/Obi/CHANGELOG_rope.txt.meta b/Assets/Obi/CHANGELOG_rope.txt.meta new file mode 100644 index 000000000..7cc321af1 --- /dev/null +++ b/Assets/Obi/CHANGELOG_rope.txt.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8d9d04260bc994f1b9d444b675212dc6 +labels: +- ObiRope +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor.meta b/Assets/Obi/Editor.meta new file mode 100644 index 000000000..ec618e6c7 --- /dev/null +++ b/Assets/Obi/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d6a0c47fa0afb4e1fb441061faa32d50 +folderAsset: yes +timeCreated: 1435569421 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common.meta b/Assets/Obi/Editor/Common.meta new file mode 100644 index 000000000..5684f1cf4 --- /dev/null +++ b/Assets/Obi/Editor/Common.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3d5722720e25b4db69e767c6920cf081 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints.meta b/Assets/Obi/Editor/Common/Blueprints.meta new file mode 100644 index 000000000..5576b9554 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1af54f7feeec0410cada2fc051752b61 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools.meta b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools.meta new file mode 100644 index 000000000..6737bc72c --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa63386a67f904b399175c9931270250 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiBlueprintEditorTool.cs b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiBlueprintEditorTool.cs new file mode 100644 index 000000000..54dcca92d --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiBlueprintEditorTool.cs @@ -0,0 +1,40 @@ +using UnityEngine; +using UnityEditor; + +namespace Obi +{ + public abstract class ObiBlueprintEditorTool + { + protected ObiActorBlueprintEditor editor; + protected string m_Name; + protected Texture m_Icon; + + public string name + { + get { return m_Name; } + } + + public Texture icon + { + get + { + return m_Icon; + } + } + + public ObiBlueprintEditorTool(ObiActorBlueprintEditor editor) + { + this.editor = editor; + } + + public virtual void OnEnable(){} + public virtual void OnDisable(){} + public virtual void OnDestroy(){} + public virtual string GetHelpString() { return string.Empty; } + + public abstract void OnInspectorGUI(); + public virtual void OnSceneGUI(SceneView sceneView){} + + public virtual bool Editable(int index) { return editor.visible[index]; } + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiBlueprintEditorTool.cs.meta b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiBlueprintEditorTool.cs.meta new file mode 100644 index 000000000..95c9d3dd5 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiBlueprintEditorTool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ca0c1c4cbbd024d49b15bf3439506500 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiPaintBrushEditorTool.cs b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiPaintBrushEditorTool.cs new file mode 100644 index 000000000..0676df0d8 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiPaintBrushEditorTool.cs @@ -0,0 +1,127 @@ +using UnityEngine; +using UnityEditor; + +namespace Obi +{ + public class ObiPaintBrushEditorTool : ObiBlueprintEditorTool + { + public ObiRaycastBrush paintBrush; + public bool selectionMask = false; + public int sourcePropertyIndex = 0; /**("BrushIcon"); + m_Name = "Property painting"; + + paintBrush = new ObiRaycastBrush(editor.sourceMesh, + () => + { + // As RecordObject diffs with the end of the current frame, + // and this is a multi-frame operation, we need to use RegisterCompleteObjectUndo instead. + Undo.RegisterCompleteObjectUndo(editor.blueprint, "Paint particles"); + }, + () => + { + editor.Refresh(); + }, + () => + { + EditorUtility.SetDirty(editor.blueprint); + }); + + } + + public override string GetHelpString() + { + return "Paint particle properties directly on the mesh. Most brushes have an alternate mode, accesed by holding 'shift' while painting."; + } + + public override void OnInspectorGUI() + { + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + EditorGUILayout.Space(); + + // toolbar with available brush modes for the current property: + editor.currentProperty.BrushModes(paintBrush); + + EditorGUILayout.Space(); + + EditorGUI.BeginChangeCheck(); + editor.currentPropertyIndex = editor.PropertySelector(editor.currentPropertyIndex); + if (EditorGUI.EndChangeCheck()) + { + editor.Refresh(); + editor.currentProperty.OnSelect(paintBrush); + } + + if (paintBrush.brushMode is ObiFloatCopyBrushMode) + { + EditorGUI.BeginChangeCheck(); + sourcePropertyIndex = editor.PropertySelector(sourcePropertyIndex, "Copy from"); + var sourceProperty = editor.GetProperty(sourcePropertyIndex) as ObiBlueprintFloatProperty; + if (EditorGUI.EndChangeCheck()) + { + (paintBrush.brushMode as ObiFloatCopyBrushMode).source = sourceProperty; + } + if (sourceProperty == null) + EditorGUILayout.HelpBox("You can't copy value from this property.", MessageType.Error); + } + + if (paintBrush.brushMode.needsInputValue) + editor.currentProperty.PropertyField(); + + paintBrush.radius = EditorGUILayout.Slider("Brush size", paintBrush.radius, 0.0001f, 0.5f); + paintBrush.innerRadius = EditorGUILayout.Slider("Brush inner size", paintBrush.innerRadius, 0, 1); + paintBrush.opacity = EditorGUILayout.Slider("Brush opacity", paintBrush.opacity, 0, 1); + paintBrush.mirror.axis = (ObiBrushMirrorSettings.MirrorAxis)EditorGUILayout.EnumPopup("Brush mirror axis", paintBrush.mirror.axis); + paintBrush.mirror.space = (ObiBrushMirrorSettings.MirrorSpace)EditorGUILayout.EnumPopup("Brush mirror space", paintBrush.mirror.space); + + EditorGUI.BeginChangeCheck(); + meshBasedEditor.particleCulling = (ObiMeshBasedActorBlueprintEditor.ParticleCulling)EditorGUILayout.EnumPopup("Culling", meshBasedEditor.particleCulling); + if (editor.selectedCount == 0) + { + EditorGUILayout.HelpBox("Select at least one particle to use selection mask.", MessageType.Info); + selectionMask = false; + GUI.enabled = false; + } + selectionMask = EditorGUILayout.Toggle("Selection mask", selectionMask); + if (EditorGUI.EndChangeCheck()) + SceneView.RepaintAll(); + GUI.enabled = true; + + EditorGUILayout.EndVertical(); + + EditorGUILayout.Space(); + GUILayout.Box(GUIContent.none, ObiEditorUtils.GetSeparatorLineStyle()); + + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + + editor.RenderModeSelector(); + editor.currentProperty.VisualizationOptions(); + + EditorGUILayout.EndVertical(); + } + + public override bool Editable(int index) + { + return editor.visible[index] && (!selectionMask || editor.selectionStatus[index]); + } + + public override void OnSceneGUI(SceneView view) + { + if (Camera.current != null) + { + paintBrush.raycastTarget = meshBasedEditor.sourceMesh; + paintBrush.DoBrush(editor.blueprint.positions); + } + } + + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiPaintBrushEditorTool.cs.meta b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiPaintBrushEditorTool.cs.meta new file mode 100644 index 000000000..b0abbdf5a --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiPaintBrushEditorTool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 332bb5fc94a774291b4c4ebe50f61205 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiParticleSelectionEditorTool.cs b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiParticleSelectionEditorTool.cs new file mode 100644 index 000000000..99ff3bcdc --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiParticleSelectionEditorTool.cs @@ -0,0 +1,336 @@ +using UnityEngine; +using UnityEditor; +using UnityEditorInternal; + +namespace Obi +{ + public class ObiParticleSelectionEditorTool : ObiBlueprintEditorTool + { + ObiScreenSpaceBrush selectionBrush; + ObiSelectBrushMode selectMode; + ObiTethersTool tethersTool; + + protected ReorderableList particleGroupList; + protected bool mixedPropertyValue = false; + protected float minSelectionValue; + protected float maxSelectionValue; + + public ObiParticleSelectionEditorTool(ObiActorBlueprintEditor editor) : base(editor) + { + m_Icon = Resources.Load("SelectIcon"); + m_Name = "Particle selection"; + + selectionBrush = new ObiScreenSpaceBrush(null, UpdateSelection, null); + selectMode = new ObiSelectBrushMode(new ObiBlueprintSelected(editor)); + + selectionBrush.brushMode = selectMode; + tethersTool = new ObiTethersTool(); + + InitializeGroupsList(); + } + + + public override string GetHelpString() + { + if (editor.selectedCount > 0) + return "" + editor.selectedCount + " selected particles."; + else + return "No particles selected. Click and drag over particles to select them."; + } + + private void InitializeGroupsList() + { + particleGroupList = new ReorderableList(editor.serializedObject, + editor.serializedObject.FindProperty("groups"), + false, true, true, true); + + particleGroupList.drawHeaderCallback = (Rect rect) => + { + EditorGUI.LabelField(rect, "Groups"); + }; + + particleGroupList.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => + { + var element = particleGroupList.serializedProperty.GetArrayElementAtIndex(index); + rect.y += 4; + + SerializedObject obj = new SerializedObject(element.objectReferenceValue); + ObiParticleGroup group = obj.targetObject as ObiParticleGroup; + + EditorGUI.PropertyField(new Rect(rect.x, rect.y, rect.width, EditorGUIUtility.singleLineHeight), + obj.FindProperty("m_Name"), new GUIContent("Name")); + rect.y += EditorGUIUtility.singleLineHeight + 2; + + if (GUI.Button(new Rect(rect.x, rect.y, rect.width * 0.5f, EditorGUIUtility.singleLineHeight), "Select", EditorStyles.miniButtonLeft)) + { + if ((Event.current.modifiers & EventModifiers.Shift) == 0) + { + for (int p = 0; p < editor.selectionStatus.Length; p++) + editor.selectionStatus[p] = false; + } + + foreach (int p in group.particleIndices) + editor.selectionStatus[p] = true; + + UpdateSelection(); + } + + if (GUI.Button(new Rect(rect.x + rect.width * 0.5f, rect.y, rect.width * 0.5f, EditorGUIUtility.singleLineHeight), "Set", EditorStyles.miniButtonRight)) + { + group.particleIndices.Clear(); + for (int p = 0; p < editor.selectionStatus.Length; p++) + { + if (editor.selectionStatus[p]) + group.particleIndices.Add(p); + } + } + + obj.ApplyModifiedProperties(); + }; + + particleGroupList.elementHeight = (EditorGUIUtility.singleLineHeight + 2) * 2 + 8; + + particleGroupList.onAddCallback = (ReorderableList list) => + { + + var group = editor.blueprint.AppendNewParticleGroup("new group"); + + for (int i = 0; i < editor.selectionStatus.Length; i++) + { + if (editor.selectionStatus[i]) + group.particleIndices.Add(i); + } + + AssetDatabase.SaveAssets(); + }; + + particleGroupList.onRemoveCallback = (ReorderableList list) => + { + editor.blueprint.RemoveParticleGroupAt(list.index); + }; + } + + private void SelectionTools() + { + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button(new GUIContent(Resources.Load("InvertButton"), "Invert selection"), GUILayout.MaxHeight(24), GUILayout.MaxWidth(48))) + { + for (int i = 0; i < editor.selectionStatus.Length; i++) + { + if (editor.blueprint.IsParticleActive(i)) + editor.selectionStatus[i] = !editor.selectionStatus[i]; + } + UpdateSelection(); + } + + GUI.enabled = editor.selectedCount > 0; + if (GUILayout.Button(new GUIContent(Resources.Load("ClearButton"), "Clear selection"), GUILayout.MaxHeight(24), GUILayout.MaxWidth(48))) + { + for (int i = 0; i < editor.selectionStatus.Length; i++) + editor.selectionStatus[i] = false; + UpdateSelection(); + } + + if (GUILayout.Button(new GUIContent(Resources.Load("OptimizeButton"), "Optimize selected"), GUILayout.MaxHeight(24), GUILayout.MaxWidth(48))) + { + Undo.RecordObject(editor.blueprint, "Optimize particles away"); + editor.blueprint.RemoveSelectedParticles(ref editor.selectionStatus); + editor.Refresh(); + } + + if (GUILayout.Button(new GUIContent(Resources.Load("RemoveButton"), "Remove selected"), GUILayout.MaxHeight(24), GUILayout.MaxWidth(48))) + { + Undo.RecordObject(editor.blueprint, "Remove particles"); + editor.blueprint.RemoveSelectedParticles(ref editor.selectionStatus, false); + editor.Refresh(); + } + GUI.enabled = true; + + if (GUILayout.Button(new GUIContent(Resources.Load("RestoreButton"), "Restore removed particles"), GUILayout.MaxHeight(24), GUILayout.MaxWidth(48))) + { + Undo.RecordObject(editor.blueprint, "Restore removed particles"); + editor.blueprint.RestoreRemovedParticles(); + editor.Refresh(); + } + + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Property-based selection", EditorStyles.boldLabel); + var property = editor.currentProperty as ObiBlueprintFloatProperty; + if (property != null) + { + if (!Mathf.Approximately(property.minVisualizationValue,property.maxVisualizationValue)) + { + EditorGUILayout.HelpBox("Drag the slider to select based on " + property.name + ". You can choose a different property in the \"Property\" dropdown below.", MessageType.None); + minSelectionValue = Mathf.Max(minSelectionValue, property.minVisualizationValue); + maxSelectionValue = Mathf.Min(maxSelectionValue, property.maxVisualizationValue); + maxSelectionValue = Mathf.Max(maxSelectionValue, minSelectionValue); + + EditorGUI.BeginChangeCheck(); + EditorGUILayout.MinMaxSlider("Select by " + property.name, ref minSelectionValue, ref maxSelectionValue, property.minVisualizationValue, property.maxVisualizationValue); + minSelectionValue = EditorGUILayout.FloatField("Minimum " + property.name, minSelectionValue); + maxSelectionValue = EditorGUILayout.FloatField("Maximum " + property.name, maxSelectionValue); + if (EditorGUI.EndChangeCheck()) + { + for (int i = 0; i < editor.selectionStatus.Length; i++) + { + if (editor.blueprint.IsParticleActive(i)) + { + var value = property.Get(i); + editor.selectionStatus[i] = value >= minSelectionValue && value <= maxSelectionValue; + } + } + UpdateSelection(); + } + } + else + { + EditorGUILayout.HelpBox("All particles have the same " + property.name + " value.", MessageType.Info); + } + } + else + { + EditorGUILayout.HelpBox("Property-based selection only works with scalar properties.",MessageType.Info); + } + } + + public override void OnInspectorGUI() + { + // Selection tools: + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + EditorGUILayout.Space(); + + selectionBrush.radius = EditorGUILayout.Slider("Brush size", selectionBrush.radius, 5, 200); + + if (editor is ObiMeshBasedActorBlueprintEditor) + { + EditorGUI.BeginChangeCheck(); + (editor as ObiMeshBasedActorBlueprintEditor).particleCulling = (ObiMeshBasedActorBlueprintEditor.ParticleCulling)EditorGUILayout.EnumPopup("Culling", (editor as ObiMeshBasedActorBlueprintEditor).particleCulling); + if (EditorGUI.EndChangeCheck()) + SceneView.RepaintAll(); + } + + + EditorGUILayout.Space(); + SelectionTools(); + + EditorGUILayout.EndVertical(); + + + // Properties: + EditorGUILayout.Space(); + GUILayout.Box(GUIContent.none, ObiEditorUtils.GetSeparatorLineStyle()); + + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Properties", EditorStyles.boldLabel); + EditorGUILayout.HelpBox("Select a property to view and edit. Currently editing " + editor.currentProperty.name+".", MessageType.None); + + EditorGUI.BeginChangeCheck(); + editor.currentPropertyIndex = editor.PropertySelector(editor.currentPropertyIndex); + if (EditorGUI.EndChangeCheck()) + { + editor.Refresh(); + UpdateSelection(); + } + + // Property value: + EditorGUI.showMixedValue = mixedPropertyValue; + EditorGUI.BeginChangeCheck(); + editor.currentProperty.PropertyField(); + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(editor.blueprint, "Set particle property"); + for (int i = 0; i < editor.selectionStatus.Length; i++) + { + if (!editor.selectionStatus[i]) continue; + editor.currentProperty.SetDefaultToIndex(i); + } + editor.Refresh(); + } + + EditorGUI.showMixedValue = false; + + EditorGUILayout.EndVertical(); + + + // Particle groups: + EditorGUILayout.Space(); + GUILayout.Box(GUIContent.none, ObiEditorUtils.GetSeparatorLineStyle()); + + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Particle groups", EditorStyles.boldLabel); + particleGroupList.DoLayoutList(); + + EditorGUILayout.EndVertical(); + + + + if (editor.blueprint.usesTethers) + { + EditorGUILayout.Space(); + GUILayout.Box(GUIContent.none, ObiEditorUtils.GetSeparatorLineStyle()); + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + EditorGUILayout.Space(); + tethersTool.DoTethers(editor); + EditorGUILayout.EndVertical(); + } + + EditorGUILayout.Space(); + GUILayout.Box(GUIContent.none, ObiEditorUtils.GetSeparatorLineStyle()); + + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + + editor.RenderModeSelector(); + editor.dotRadiusScale = EditorGUILayout.Slider(new GUIContent("Particle dot size"), editor.dotRadiusScale, 0, 5); + editor.currentProperty.VisualizationOptions(); + + EditorGUILayout.EndVertical(); + } + + public override void OnSceneGUI(SceneView sceneView) + { + if (Camera.current != null) + selectionBrush.DoBrush(editor.blueprint.positions); + } + + protected void UpdateSelection() + { + editor.selectedCount = 0; + mixedPropertyValue = false; + + // Find out how many selected particles we have, and whether they all have the same value for the current property: + for (int i = 0; i < editor.selectionStatus.Length; i++) + { + if (editor.blueprint.IsParticleActive(i) && editor.selectionStatus[i]) + { + editor.selectedCount++; + + if (editor.activeParticle >= 0) + { + if (!editor.currentProperty.Equals(editor.activeParticle, i)) + mixedPropertyValue = true; + } + else + editor.activeParticle = i; + } + else if (editor.activeParticle == i) + editor.activeParticle = -1; + } + + // Set initial property value: + if (!mixedPropertyValue && editor.activeParticle >= 0) + editor.currentProperty.GetDefaultFromIndex(editor.activeParticle); + + editor.Repaint(); + SceneView.RepaintAll(); + + } + + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiParticleSelectionEditorTool.cs.meta b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiParticleSelectionEditorTool.cs.meta new file mode 100644 index 000000000..774ebafc2 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiParticleSelectionEditorTool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3940c62f9ffe4808afc4d2d70ae5e28 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiPropertyTextureEditorTool.cs b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiPropertyTextureEditorTool.cs new file mode 100644 index 000000000..2eb81ee9d --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiPropertyTextureEditorTool.cs @@ -0,0 +1,166 @@ +using UnityEngine; +using UnityEditor; +using UnityEditorInternal; +using System.Collections; +using System; + +namespace Obi +{ + public class ObiPropertyTextureEditorTool : ObiBlueprintEditorTool + { + public enum TextureChannel + { + Red = 0, + Green = 1, + Blue = 2, + Alpha = 3, + } + + protected bool selectionMask = false; + protected bool import = true; + protected bool export = true; + + protected float minPropertyValue = 0; + protected float maxPropertyValue = 10; + + protected int exportWidth = 512; + protected int exportHeight = 512; + protected int padding = 64; + + protected Texture2D propertyTexture; + protected TextureChannel textureChannel; + + protected ObiBlueprintFloatProperty floatProperty; + protected ObiBlueprintColorProperty colorProperty; + protected Action textureReadCallback; + + public ObiMeshBasedActorBlueprintEditor meshBasedEditor + { + get { return editor as ObiMeshBasedActorBlueprintEditor; } + } + + public ObiPropertyTextureEditorTool(ObiMeshBasedActorBlueprintEditor editor) : base(editor) + { + m_Icon = Resources.Load("TextureIcon"); + m_Name = "Texture import/export"; + } + + public override string GetHelpString() + { + return "Import/export particle properties to textures. Assumes that your mesh has non-overlapping UVs."; + } + + private void FloatFromTexture(int i, Color color) + { + if (!selectionMask || editor.selectionStatus[i]) + { + float value = minPropertyValue + color[(int)textureChannel] * (maxPropertyValue - minPropertyValue); + floatProperty.Set(i, value); + } + } + + private void ColorFromTexture(int i, Color color) + { + if (!selectionMask || editor.selectionStatus[i]) + colorProperty.Set(i, color); + } + + public override void OnInspectorGUI() + { + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + EditorGUILayout.Space(); + + EditorGUI.BeginChangeCheck(); + editor.currentPropertyIndex = editor.PropertySelector(editor.currentPropertyIndex); + if (EditorGUI.EndChangeCheck()) + editor.Refresh(); + + EditorGUILayout.EndVertical(); + + EditorGUILayout.Space(); + GUILayout.Box(GUIContent.none, ObiEditorUtils.GetSeparatorLineStyle()); + + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + import = EditorGUILayout.BeginFoldoutHeaderGroup(import, "Import texture"); + + if (import) + { + propertyTexture = (Texture2D)EditorGUILayout.ObjectField("Source", propertyTexture, typeof(Texture2D), false); + + floatProperty = editor.currentProperty as ObiBlueprintFloatProperty; + colorProperty = editor.currentProperty as ObiBlueprintColorProperty; + + if (floatProperty != null) + { + textureReadCallback = FloatFromTexture; + textureChannel = (TextureChannel)EditorGUILayout.EnumPopup("Source channel", textureChannel); + minPropertyValue = EditorGUILayout.FloatField("Min value", minPropertyValue); + maxPropertyValue = EditorGUILayout.FloatField("Max value", maxPropertyValue); + } + else if (colorProperty != null) + { + textureReadCallback = ColorFromTexture; + } + + if (GUILayout.Button("Import")) + { + Undo.RecordObject(editor.blueprint, "Import particle property"); + if (!meshBasedEditor.ReadParticlePropertyFromTexture(propertyTexture, textureReadCallback)) + { + EditorUtility.DisplayDialog("Invalid texture", "The texture is either null or not readable.", "Ok"); + } + + // force automatic range calculation for floating point properties. + if (floatProperty != null) + floatProperty.autoRange = true; + editor.Refresh(); + } + } + EditorGUILayout.EndFoldoutHeaderGroup(); + EditorGUILayout.EndVertical(); + + EditorGUILayout.Space(); + GUILayout.Box(GUIContent.none, ObiEditorUtils.GetSeparatorLineStyle()); + + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + export = EditorGUILayout.BeginFoldoutHeaderGroup(export, "Export texture"); + + if (export) + { + exportWidth = EditorGUILayout.IntField("Texture width", exportWidth); + exportHeight = EditorGUILayout.IntField("Texture height", exportHeight); + padding = EditorGUILayout.IntField("Padding", padding); + if (GUILayout.Button("Export")) + { + var path = EditorUtility.SaveFilePanel("Save texture as PNG", + "", + "property.png", + "png"); + if (path.Length > 0) + { + // force automatic range calculation for floating point properties. + if (floatProperty != null) + floatProperty.autoRange = true; + editor.Refresh(); + + if (!meshBasedEditor.WriteParticlePropertyToTexture(path, exportWidth, exportHeight, padding)) + { + EditorUtility.DisplayDialog("Invalid path", "Could not write a texture to that location.", "Ok"); + } + } + } + } + + EditorGUILayout.EndFoldoutHeaderGroup(); + EditorGUILayout.EndVertical(); + + EditorGUILayout.Space(); + GUILayout.Box(GUIContent.none, ObiEditorUtils.GetSeparatorLineStyle()); + + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + editor.RenderModeSelector(); + EditorGUILayout.EndVertical(); + } + + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiPropertyTextureEditorTool.cs.meta b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiPropertyTextureEditorTool.cs.meta new file mode 100644 index 000000000..0655a7673 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiPropertyTextureEditorTool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7727285b07aa44d6e8f65a8bc1f5d972 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiTethersTool.cs b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiTethersTool.cs new file mode 100644 index 000000000..f89078b36 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiTethersTool.cs @@ -0,0 +1,86 @@ +using UnityEngine; +using UnityEditor; +using System; + + +namespace Obi +{ + public class ObiTethersTool + { + protected Rect tetherDropdownRect; + protected bool[] tetheredGroups = new bool[0]; + + // the GenericMenu.MenuFunction2 event handler for when a menu item is selected + void OnTetherGroupSelected(object index) + { + int i = (int)index; + tetheredGroups[i] = !tetheredGroups[i]; + } + + public void DoTethers(ObiActorBlueprintEditor editor) + { + EditorGUILayout.LabelField("Tethers", EditorStyles.boldLabel); + + var tethers = editor.blueprint.GetConstraintsByType(Oni.ConstraintType.Tether); + int tetherCount = 0; + if (tethers != null) + tetherCount = tethers.GetConstraintCount(); + + if (tetherCount > 0) + EditorGUILayout.LabelField("" + tetherCount + " tether constraints.", EditorStyles.helpBox); + else + EditorGUILayout.LabelField("No tether constraints. Select at least one particle group in the dropdown, then click 'Generate Tethers'.", EditorStyles.helpBox); + + Array.Resize(ref tetheredGroups, editor.blueprint.groups.Count); + + // display the GenericMenu when pressing a button + if (GUILayout.Button("Tethered groups", EditorStyles.popup)) + { + // create the menu and add items to it + GenericMenu menu = new GenericMenu(); + + // forward slashes nest menu items under submenus + for (int i = 0; i < editor.blueprint.groups.Count; ++i) + { + menu.AddItem(new GUIContent(editor.blueprint.groups[i].name), tetheredGroups[i], OnTetherGroupSelected, i); + } + + // display the menu + menu.DropDown(tetherDropdownRect); + } + + if (Event.current.type == EventType.Repaint) + tetherDropdownRect = GUILayoutUtility.GetLastRect(); + + + EditorGUILayout.BeginHorizontal(); + if (GUILayout.Button("Generate tethers",GUILayout.MinHeight(32))) + { + // Select all particles in the tethered groups: + for (int i = 0; i < editor.selectionStatus.Length; ++i) + { + editor.selectionStatus[i] = false; + for (int j = 0; j < tetheredGroups.Length; ++j) + { + if (tetheredGroups[j] && editor.blueprint.groups[j].ContainsParticle(i)) + { + editor.selectionStatus[i] = true; + break; + } + } + } + + editor.blueprint.GenerateTethers(editor.selectionStatus); + editor.Refresh(); + } + + if (GUILayout.Button("Clear tethers",GUILayout.MinHeight(32))) + { + editor.blueprint.ClearTethers(); + editor.Refresh(); + } + EditorGUILayout.EndHorizontal(); + + } + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiTethersTool.cs.meta b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiTethersTool.cs.meta new file mode 100644 index 000000000..fd2ba16fb --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/BlueprintEditorTools/ObiTethersTool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6aefc9e7e74be461e93ee58f15c5a1dd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes.meta b/Assets/Obi/Editor/Common/Blueprints/Brushes.meta new file mode 100644 index 000000000..23624c350 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 625a6e0c1ba72483190830373b7b45fe +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes.meta b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes.meta new file mode 100644 index 000000000..9bdbd1de6 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4fc4d44dc6d334c2985875fc6f7b8cb1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/IObiBrushMode.cs b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/IObiBrushMode.cs new file mode 100644 index 000000000..4257fe690 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/IObiBrushMode.cs @@ -0,0 +1,9 @@ +namespace Obi +{ + public interface IObiBrushMode + { + string name{get;} + bool needsInputValue{ get; } + void ApplyStamps(ObiBrushBase brush, bool modified); + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/IObiBrushMode.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/IObiBrushMode.cs.meta new file mode 100644 index 000000000..ab2580d12 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/IObiBrushMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4c46364da0f1641c7ab84e12348a6a4b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiColorPaintBrushMode.cs b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiColorPaintBrushMode.cs new file mode 100644 index 000000000..e094e7c17 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiColorPaintBrushMode.cs @@ -0,0 +1,38 @@ +using UnityEngine; + +namespace Obi +{ + public class ObiColorPaintBrushMode : IObiBrushMode + { + ObiBlueprintColorProperty property; + + public ObiColorPaintBrushMode(ObiBlueprintColorProperty property) + { + this.property = property; + } + + public string name + { + get { return "Paint"; } + } + + public bool needsInputValue + { + get { return true; } + } + + public void ApplyStamps(ObiBrushBase brush, bool modified) + { + for (int i = 0; i < brush.weights.Length; ++i) + { + if (!property.Masked(i) && brush.weights[i] > 0) + { + Color currentValue = property.Get(i); + Color delta = brush.weights[i] * brush.opacity * brush.speed * (property.GetDefault() - currentValue); + + property.Set(i, currentValue + delta * (modified ? -1 : 1)); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiColorPaintBrushMode.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiColorPaintBrushMode.cs.meta new file mode 100644 index 000000000..d9fe60146 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiColorPaintBrushMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1fd033c8f79b1494d8b8de5c8311f8c1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiColorSmoothBrushMode.cs b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiColorSmoothBrushMode.cs new file mode 100644 index 000000000..a5fd9c632 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiColorSmoothBrushMode.cs @@ -0,0 +1,53 @@ +using UnityEngine; + +namespace Obi +{ + public class ObiColorSmoothBrushMode : IObiBrushMode + { + ObiBlueprintColorProperty property; + + public ObiColorSmoothBrushMode(ObiBlueprintColorProperty property) + { + this.property = property; + } + + public string name + { + get { return "Smooth"; } + } + + public bool needsInputValue + { + get { return false; } + } + + public void ApplyStamps(ObiBrushBase brush, bool modified) + { + Color averageValue = Color.black; + float totalWeight = 0; + + for (int i = 0; i < brush.weights.Length; ++i) + { + if (!property.Masked(i) && brush.weights[i] > 0) + { + averageValue += property.Get(i) * brush.weights[i]; + totalWeight += brush.weights[i]; + } + + } + averageValue /= totalWeight; + + for (int i = 0; i < brush.weights.Length; ++i) + { + if (!property.Masked(i) && brush.weights[i] > 0) + { + Color currentValue = property.Get(i); + Color delta = brush.opacity * brush.speed * (Color.Lerp(currentValue, averageValue, brush.weights[i]) - currentValue); + + property.Set(i, currentValue + delta * (modified ? -1 : 1)); + } + } + + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiColorSmoothBrushMode.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiColorSmoothBrushMode.cs.meta new file mode 100644 index 000000000..8a0a75a71 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiColorSmoothBrushMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a69a8a1614478445cbb770a5e123ab18 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatAddBrushMode.cs b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatAddBrushMode.cs new file mode 100644 index 000000000..8c2a5aa81 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatAddBrushMode.cs @@ -0,0 +1,36 @@ +namespace Obi +{ + public class ObiFloatAddBrushMode : IObiBrushMode + { + ObiBlueprintFloatProperty property; + + public ObiFloatAddBrushMode(ObiBlueprintFloatProperty property) + { + this.property = property; + } + + public string name + { + get { return "Add"; } + } + + public bool needsInputValue + { + get { return true; } + } + + public void ApplyStamps(ObiBrushBase brush, bool modified) + { + for (int i = 0; i < brush.weights.Length; ++i) + { + if (!property.Masked(i) && brush.weights[i] > 0) + { + float currentValue = property.Get(i); + float delta = brush.weights[i] * brush.opacity * brush.speed * property.GetDefault(); + + property.Set(i, currentValue + delta * (modified ? -1 : 1)); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatAddBrushMode.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatAddBrushMode.cs.meta new file mode 100644 index 000000000..66272b907 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatAddBrushMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8b39e10cedc94461083b3b19c3ddb343 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatCopyBrushMode.cs b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatCopyBrushMode.cs new file mode 100644 index 000000000..ae0b60fee --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatCopyBrushMode.cs @@ -0,0 +1,42 @@ +namespace Obi +{ + public class ObiFloatCopyBrushMode : IObiBrushMode + { + ObiBlueprintFloatProperty property; + public ObiBlueprintFloatProperty source; + + public ObiFloatCopyBrushMode(ObiBlueprintFloatProperty property, ObiBlueprintFloatProperty source) + { + this.property = property; + this.source = source; + } + + public string name + { + get { return "Copy"; } + } + + public bool needsInputValue + { + get { return false; } + } + + public void ApplyStamps(ObiBrushBase brush, bool modified) + { + if (property != null && source != null) + { + for (int i = 0; i < brush.weights.Length; ++i) + { + if (!property.Masked(i) && brush.weights[i] > 0) + { + float currentValue = property.Get(i); + float sourceValue = source.Get(i); + float delta = brush.weights[i] * brush.opacity * brush.speed * (sourceValue - currentValue); + + property.Set(i, currentValue + delta * (modified ? -1 : 1)); + } + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatCopyBrushMode.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatCopyBrushMode.cs.meta new file mode 100644 index 000000000..a51236b78 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatCopyBrushMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95bb470841f42415ab256cd64adb9242 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatPaintBrushMode.cs b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatPaintBrushMode.cs new file mode 100644 index 000000000..369a0d1e2 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatPaintBrushMode.cs @@ -0,0 +1,37 @@ + +namespace Obi +{ + public class ObiFloatPaintBrushMode : IObiBrushMode + { + ObiBlueprintFloatProperty property; + + public ObiFloatPaintBrushMode(ObiBlueprintFloatProperty property) + { + this.property = property; + } + + public string name + { + get { return "Paint"; } + } + + public bool needsInputValue + { + get { return true; } + } + + public void ApplyStamps(ObiBrushBase brush, bool modified) + { + for (int i = 0; i < brush.weights.Length; ++i) + { + if (!property.Masked(i) && brush.weights[i] > 0) + { + float currentValue = property.Get(i); + float delta = brush.weights[i] * brush.opacity * brush.speed * (property.GetDefault() - currentValue); + + property.Set(i, currentValue + delta * (modified ? -1 : 1)); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatPaintBrushMode.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatPaintBrushMode.cs.meta new file mode 100644 index 000000000..94c33004a --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatPaintBrushMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eb3d176006d404a508bef284d2701ab0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatSmoothBrushMode.cs b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatSmoothBrushMode.cs new file mode 100644 index 000000000..35cfcdbc5 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatSmoothBrushMode.cs @@ -0,0 +1,55 @@ +using UnityEngine; + +namespace Obi +{ + public class ObiFloatSmoothBrushMode : IObiBrushMode + { + ObiBlueprintFloatProperty property; + + public ObiFloatSmoothBrushMode(ObiBlueprintFloatProperty property) + { + this.property = property; + } + + public string name + { + get { return "Smooth"; } + } + + public bool needsInputValue + { + get { return false; } + } + + public void ApplyStamps(ObiBrushBase brush, bool modified) + { + var floatProperty = (ObiBlueprintFloatProperty)property; + + float averageValue = 0; + float totalWeight = 0; + + for (int i = 0; i < brush.weights.Length; ++i) + { + if (!property.Masked(i) && brush.weights[i] > 0) + { + averageValue += floatProperty.Get(i) * brush.weights[i]; + totalWeight += brush.weights[i]; + } + + } + averageValue /= totalWeight; + + for (int i = 0; i < brush.weights.Length; ++i) + { + if (!property.Masked(i) && brush.weights[i] > 0) + { + float currentValue = floatProperty.Get(i); + float delta = brush.opacity * brush.speed * (Mathf.Lerp(currentValue,averageValue,brush.weights[i]) - currentValue); + + floatProperty.Set(i, currentValue + delta * (modified ? -1 : 1)); + } + } + + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatSmoothBrushMode.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatSmoothBrushMode.cs.meta new file mode 100644 index 000000000..d3a486a2e --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiFloatSmoothBrushMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 63dad56a994af4db7bb3449382022c54 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiIntPaintBrushMode.cs b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiIntPaintBrushMode.cs new file mode 100644 index 000000000..426e4c680 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiIntPaintBrushMode.cs @@ -0,0 +1,33 @@ +namespace Obi +{ + public class ObiIntPaintBrushMode : IObiBrushMode + { + ObiBlueprintIntProperty property; + + public ObiIntPaintBrushMode(ObiBlueprintIntProperty property) + { + this.property = property; + } + + public string name + { + get { return "Paint"; } + } + + public bool needsInputValue + { + get { return true; } + } + + public void ApplyStamps(ObiBrushBase brush, bool modified) + { + for (int i = 0; i < brush.weights.Length; ++i) + { + if (!property.Masked(i) && brush.weights[i] > (1 - brush.opacity)) + { + property.Set(i, property.GetDefault()); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiIntPaintBrushMode.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiIntPaintBrushMode.cs.meta new file mode 100644 index 000000000..0bef4606e --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiIntPaintBrushMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d8882849c81104cef80b3dfdab2021c9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiMasterSlavePaintBrushMode.cs b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiMasterSlavePaintBrushMode.cs new file mode 100644 index 000000000..2691275af --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiMasterSlavePaintBrushMode.cs @@ -0,0 +1,39 @@ +namespace Obi +{ + public class ObiMasterSlavePaintBrushMode : IObiBrushMode + { + ObiBlueprintIntProperty property; + + public ObiMasterSlavePaintBrushMode(ObiBlueprintIntProperty property) + { + this.property = property; + } + + public string name + { + get { return "Master/Slave paint"; } + } + + public bool needsInputValue + { + get { return true; } + } + + public void ApplyStamps(ObiBrushBase brush, bool modified) + { + for (int i = 0; i < brush.weights.Length; ++i) + { + if (!property.Masked(i) && brush.weights[i] > (1 - brush.opacity)) + { + int currentValue = property.Get(i); + + if (modified) + currentValue &= ~(int)(1 << property.GetDefault()); + else currentValue |= (int)(1 << property.GetDefault()); + + property.Set(i, currentValue); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiMasterSlavePaintBrushMode.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiMasterSlavePaintBrushMode.cs.meta new file mode 100644 index 000000000..83254b41c --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiMasterSlavePaintBrushMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 62f8e9adfc17440359a9b51005cd0948 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiSelectBrushMode.cs b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiSelectBrushMode.cs new file mode 100644 index 000000000..66d732c00 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiSelectBrushMode.cs @@ -0,0 +1,33 @@ +namespace Obi +{ + public class ObiSelectBrushMode : IObiBrushMode + { + ObiBlueprintSelected property; + string customName; + + public ObiSelectBrushMode(ObiBlueprintSelected property, string customName = "Select") + { + this.property = property; + this.customName = customName; + } + + public string name + { + get { return customName; } + } + + public bool needsInputValue + { + get { return true; } + } + + public void ApplyStamps(ObiBrushBase brush, bool modified) + { + for (int i = 0; i < brush.weights.Length; ++i) + { + if (brush.weights[i] > 0 && !property.Masked(i)) + property.Set(i,!modified); + } + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiSelectBrushMode.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiSelectBrushMode.cs.meta new file mode 100644 index 000000000..ed3edeabf --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/BrushModes/ObiSelectBrushMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9cea7ef42253f4d2b9b5a222521cdee8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiBrushBase.cs b/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiBrushBase.cs new file mode 100644 index 000000000..37951d48c --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiBrushBase.cs @@ -0,0 +1,161 @@ +using UnityEngine; +using UnityEditor; +using System; + +namespace Obi +{ + + public abstract class ObiBrushBase + { + static int particleBrushHash = "ObiBrushHash".GetHashCode(); + + public IObiBrushMode brushMode; + public float radius = 1; + public float innerRadius = 0.5f; + public float opacity = 1; + public float[] weights = new float[0]; + public bool drag = true; + public float speed = 0.1f; + + protected int controlID; + protected Action onStrokeStart; + protected Action onStrokeUpdate; + protected Action onStrokeEnd; + + public float SqrRadius + { + get{ return radius * radius; } + } + + public ObiBrushBase(Action onStrokeStart, Action onStrokeUpdate, Action onStrokeEnd) + { + this.onStrokeStart = onStrokeStart; + this.onStrokeUpdate = onStrokeUpdate; + this.onStrokeEnd = onStrokeEnd; + } + + protected virtual float WeightFromDistance(float distance) + { + // anything outside the brush should have zero weight: + if (distance > radius) + return 0; + + float t = Mathf.InverseLerp(innerRadius * radius, radius, distance); + return Mathf.SmoothStep(1, 0, t); + } + + protected abstract void GenerateWeights(Vector3[] positions); + + protected virtual void OnMouseDown(Vector3[] positions) + { + if (Event.current.button != 0 || (Event.current.modifiers & ~EventModifiers.Shift) != EventModifiers.None) + return; + + GUIUtility.hotControl = controlID; + + GenerateWeights(positions); + + if (onStrokeStart != null) + onStrokeStart(); + + if (brushMode != null) + brushMode.ApplyStamps(this, (Event.current.modifiers & EventModifiers.Shift) != 0); + + if (onStrokeUpdate != null) + onStrokeUpdate(); + + Event.current.Use(); + } + + protected virtual void OnMouseMove(Vector3[] positions) + { + + } + + protected virtual void OnMouseDrag(Vector3[] positions) + { + + if (GUIUtility.hotControl == controlID && drag) + { + + GenerateWeights(positions); + + if (brushMode != null) + brushMode.ApplyStamps(this, (Event.current.modifiers & EventModifiers.Shift) != 0); + + if (onStrokeUpdate != null) + onStrokeUpdate(); + + Event.current.Use(); + + } + } + + protected virtual void OnMouseUp(Vector3[] positions) + { + if (GUIUtility.hotControl == controlID) + { + + GUIUtility.hotControl = 0; + Event.current.Use(); + + if (onStrokeEnd != null) + onStrokeEnd(); + } + } + + protected virtual void OnRepaint() + { + } + + public void DoBrush(Vector3[] positions) + { + + Matrix4x4 cachedMatrix = Handles.matrix; + + controlID = GUIUtility.GetControlID(particleBrushHash, FocusType.Passive); + Array.Resize(ref weights, positions.Length); + + switch (Event.current.GetTypeForControl(controlID)) + { + + case EventType.MouseDown: + + OnMouseDown(positions); + + break; + + case EventType.MouseMove: + + OnMouseMove(positions); + + SceneView.RepaintAll(); + break; + + case EventType.MouseDrag: + + OnMouseDrag(positions); + + break; + + case EventType.MouseUp: + + OnMouseUp(positions); + + break; + + case EventType.Repaint: + + Handles.matrix = Matrix4x4.identity; + + OnRepaint(); + + Handles.matrix = cachedMatrix; + + break; + + } + } + } +} + diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiBrushBase.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiBrushBase.cs.meta new file mode 100644 index 000000000..692767df9 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiBrushBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 094253962d646436792561e708e62376 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiBrushMirrorSettings.cs b/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiBrushMirrorSettings.cs new file mode 100644 index 000000000..c4bd65c1d --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiBrushMirrorSettings.cs @@ -0,0 +1,51 @@ +using System; +using UnityEngine; + +[Serializable] +public struct ObiBrushMirrorSettings +{ + [Flags] + public enum MirrorAxis + { + None = 0x0, + X = 0x1, + Y = 0x2, + Z = 0x4 + } + + public enum MirrorSpace + { + World = 0, + Camera = 1 + } + + public MirrorAxis axis; + public MirrorSpace space; + + public Vector3 ToAxis() + { + uint m = (uint)axis; + + bool xMirror = (m & (uint)MirrorAxis.X) > 0; + bool yMirror = (m & (uint)MirrorAxis.Y) > 0; + bool zMirror = (m & (uint)MirrorAxis.Z) > 0; + + if (axis < 0 || ((int)axis > (int)MirrorAxis.X + (int)MirrorAxis.Y + (int)MirrorAxis.Z)) + { + return Vector3.one; + } + + Vector3 reflection = Vector3.one; + + if (xMirror) + reflection.x = -1f; + + if (yMirror) + reflection.y = -1f; + + if (zMirror) + reflection.z = -1f; + + return reflection; + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiBrushMirrorSettings.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiBrushMirrorSettings.cs.meta new file mode 100644 index 000000000..d33b4379e --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiBrushMirrorSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d10a9257ac23248418439eb80e02a611 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiRaycastBrush.cs b/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiRaycastBrush.cs new file mode 100644 index 000000000..0578e888f --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiRaycastBrush.cs @@ -0,0 +1,125 @@ +using UnityEngine; +using UnityEditor; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + + public class ObiRaycastBrush : ObiBrushBase + { + public Matrix4x4 raycastTransform = Matrix4x4.identity; + public Mesh raycastTarget = null; + public bool drawVolume = false; + private List rays = new List(); + private List hits = new List(); + + public ObiBrushMirrorSettings mirror; + + public ObiRaycastBrush(Mesh raycastTarget, Action onStrokeStart, Action onStrokeUpdate, Action onStrokeEnd) : base(onStrokeStart, onStrokeUpdate, onStrokeEnd) + { + radius = 0.1f; + this.raycastTarget = raycastTarget; + rays = new List(); + } + + protected override void GenerateWeights(Vector3[] positions) + { + if (raycastTarget != null) + { + rays.Clear(); + hits.Clear(); + + for (int i = 0; i < positions.Length; i++) + weights[i] = 0; + + var vertices = raycastTarget.vertices; + var triangles = raycastTarget.triangles; + + Ray mouseRay = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition); + rays.Add(mouseRay); + + ObiBrushMirrorSettings currentAxis = mirror; + + if (mirror.axis != ObiBrushMirrorSettings.MirrorAxis.None) + { + for (int i = 0; i < 3; i++) + { + currentAxis.axis = (ObiBrushMirrorSettings.MirrorAxis)(1u << i); + if (((uint)mirror.axis & (1u << i)) < 1) + continue; + + Vector3 mirrorVector = currentAxis.ToAxis(); + + if (currentAxis.space == ObiBrushMirrorSettings.MirrorSpace.World) + { + Vector3 center = raycastTarget.bounds.center; + rays.Add(new Ray(Vector3.Scale(mouseRay.origin - center, mirrorVector) + center, + Vector3.Scale(mouseRay.direction, mirrorVector))); + } + else + { + Transform t = SceneView.lastActiveSceneView.camera.transform; + Vector3 o = t.InverseTransformPoint(mouseRay.origin); + Vector3 d = t.InverseTransformDirection(mouseRay.direction); + rays.Add(new Ray(t.TransformPoint(Vector3.Scale(o, mirrorVector)), + t.TransformDirection(Vector3.Scale(d, mirrorVector)))); + } + } + } + + foreach (var ray in rays) + { + if (ObiMeshUtils.WorldRaycast(ray, raycastTransform, vertices, triangles, out ObiRaycastHit hit)) + { + hit.position = raycastTransform.MultiplyPoint3x4(hit.position); + hit.normal = raycastTransform.MultiplyVector(hit.normal); + hits.Add(hit); + + for (int i = 0; i < positions.Length; i++) + { + // get distance from hit position to particle position: + float weight = WeightFromDistance(Vector3.Distance(hit.position, positions[i])); + weights[i] = Mathf.Max(weights[i], weight); + } + } + } + } + } + + protected override void OnMouseMove(Vector3[] positions) + { + base.OnMouseMove(positions); + GenerateWeights(positions); + } + + protected override void OnRepaint() + { + base.OnRepaint(); + + if (raycastTarget != null) + { + Color brushColor = ObiEditorSettings.GetOrCreateSettings().brushColor; + + foreach (var hit in hits) + { + if (hit != null && hit.triangle >= 0) + { + Handles.color = brushColor; + Handles.DrawLine(hit.position, hit.position + hit.normal.normalized * radius); + Handles.DrawWireDisc(hit.position, hit.normal, radius); + Handles.DrawWireDisc(hit.position, hit.normal, innerRadius * radius); + + if (drawVolume) + { + Handles.color = new Color(brushColor.r, brushColor.g, brushColor.b, 0.2f); + Handles.SphereHandleCap(0, hit.position, Quaternion.identity, radius * 2, EventType.Repaint); + } + } + } + } + } + } +} + diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiRaycastBrush.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiRaycastBrush.cs.meta new file mode 100644 index 000000000..d3e4fb086 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiRaycastBrush.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d925323750dca4dcaa5cca91b18521b5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiScreenSpaceBrush.cs b/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiScreenSpaceBrush.cs new file mode 100644 index 000000000..953b3220d --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiScreenSpaceBrush.cs @@ -0,0 +1,61 @@ +using UnityEngine; +using UnityEditor; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + + public class ObiScreenSpaceBrush : ObiBrushBase + { + public ObiScreenSpaceBrush(Action onStrokeStart, Action onStrokeUpdate, Action onStrokeEnd) : base(onStrokeStart, onStrokeUpdate, onStrokeEnd) + { + radius = 32; + } + + protected override float WeightFromDistance(float distance) + { + // anything outside the brush should have zero weight: + if (distance > radius) + return 0; + return 1; + } + + protected override void GenerateWeights(Vector3[] positions) + { + for (int i = 0; i < positions.Length; i++) + { + // get particle position in gui space: + Vector2 pos = HandleUtility.WorldToGUIPoint(positions[i]); + + // get distance from mouse position to particle position: + weights[i] = WeightFromDistance(Vector3.Distance(Event.current.mousePosition, pos)); + } + } + + protected override void OnRepaint() + { + base.OnRepaint(); + + Camera cam = Camera.current; + float depth = (cam.nearClipPlane + cam.farClipPlane) * 0.5f; + + float ppp = EditorGUIUtility.pixelsPerPoint; + Vector2 mousePos = new Vector2(Event.current.mousePosition.x * ppp, + cam.pixelHeight - Event.current.mousePosition.y * ppp); + + Handles.color = ObiEditorSettings.GetOrCreateSettings().brushColor; + Vector3 point = new Vector3(mousePos.x, mousePos.y, depth); + Vector3 wsPoint = cam.ScreenToWorldPoint(point); + + var p1 = cam.ScreenToWorldPoint(new Vector3(1, 0, depth)); + var p2 = cam.ScreenToWorldPoint(new Vector3(0, 0, depth)); + float units = Vector3.Distance(p1, p2); + + Handles.DrawWireDisc(wsPoint, cam.transform.forward, radius * units); + } + + } +} + diff --git a/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiScreenSpaceBrush.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiScreenSpaceBrush.cs.meta new file mode 100644 index 000000000..71c3ff401 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Brushes/ObiScreenSpaceBrush.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 38fc5288fb3c94ebeb7eaa88a3bc5119 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/ObiActorBlueprintEditor.cs b/Assets/Obi/Editor/Common/Blueprints/ObiActorBlueprintEditor.cs new file mode 100644 index 000000000..490c584b5 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/ObiActorBlueprintEditor.cs @@ -0,0 +1,510 @@ +using UnityEngine; +using UnityEngine.Rendering; +using UnityEditor; +using UnityEngine.SceneManagement; +using UnityEditor.SceneManagement; +using System.Collections; +using System.Collections.Generic; +using System; +using System.Linq; + +namespace Obi +{ + + [CustomEditor(typeof(ObiActorBlueprint), true)] + public class ObiActorBlueprintEditor : Editor, IObiSelectableParticleProvider + { + protected IEnumerator routine; + + public List tools = new List(); + public int currentToolIndex = 0; + + protected List properties = new List(); + public int currentPropertyIndex = 0; + + protected List renderModes = new List(); + public int renderModeFlags = 0; + BooleanPreference showRenderModes; + + public bool editMode = false; + public bool isEditing = false; + protected List m_SceneStates; + protected SceneSetup[] oldSetup; + protected UnityEngine.Object oldSelection; + + //Additional status info for all particles: + public float dotRadiusScale = 1; + public int selectedCount = 0; + public int activeParticle = -1; + public bool[] selectionStatus = new bool[0]; + public bool[] visible = new bool[0]; + public Color[] tint = new Color[0]; + protected float[] sqrDistanceToCamera = new float[0]; + public int[] sortedIndices = new int[0]; + + public ObiActorBlueprint blueprint + { + get { return target as ObiActorBlueprint; } + } + + public ObiBlueprintPropertyBase currentProperty + { + get { return GetProperty(currentPropertyIndex); } + } + + public ObiBlueprintEditorTool currentTool + { + get { return GetTool(currentToolIndex); } + } + + public override bool UseDefaultMargins() + { + return false; + } + + public ObiBlueprintPropertyBase GetProperty(int index) + { + return (properties.Count > index && index >= 0) ? properties[index] : null; + } + + public ObiBlueprintEditorTool GetTool(int index) + { + return (tools.Count > index && index >= 0) ? tools[index] : null; + } + +#if (UNITY_2019_1_OR_NEWER) + System.Action renderCallback; +#endif + + public virtual void OnEnable() + { + properties.Add(new ObiBlueprintMass(this)); + properties.Add(new ObiBlueprintRadius(this)); + properties.Add(new ObiBlueprintFilterCategory(this)); + properties.Add(new ObiBlueprintFilterMask(this)); + + renderModes.Add(new ObiBlueprintRenderModeParticles(this)); + showRenderModes = new BooleanPreference($"{target.GetType()}.showRenderModes", false); + +#if (UNITY_2019_1_OR_NEWER) + renderCallback = new System.Action((cntxt, cam) => { DrawWithCamera(cam); }); + RenderPipelineManager.beginCameraRendering -= renderCallback; + RenderPipelineManager.beginCameraRendering += renderCallback; +#endif + Camera.onPreCull -= DrawWithCamera; + Camera.onPreCull += DrawWithCamera; + } + + public virtual void OnDisable() + { + ExitBlueprintEditMode(); + +#if (UNITY_2019_1_OR_NEWER) + RenderPipelineManager.beginCameraRendering -= renderCallback; +#endif + Camera.onPreCull -= DrawWithCamera; + + ObiParticleEditorDrawing.DestroyParticlesMesh(); + + foreach (var tool in tools) + { + tool.OnDisable(); + tool.OnDestroy(); + } + + foreach (var renderMode in renderModes) + { + renderMode.OnDestroy(); + } + + properties.Clear(); + renderModes.Clear(); + } + + protected void Generate() + { + if (blueprint.empty) + { + EditorUtility.SetDirty(target); + CoroutineJob job = new CoroutineJob(); + routine = job.Start(blueprint.Generate()); + EditorCoroutine.ShowCoroutineProgressBar("Generating blueprint...", ref routine); + Refresh(); + EditorGUIUtility.ExitGUI(); + } + else + { + if (EditorUtility.DisplayDialog("Blueprint generation", "This blueprint already contains data. Are you sure you want to re-generate this blueprint from scratch?", "Ok", "Cancel")) + { + EditorUtility.SetDirty(target); + CoroutineJob job = new CoroutineJob(); + routine = job.Start(blueprint.Generate()); + EditorCoroutine.ShowCoroutineProgressBar("Generating blueprint...", ref routine); + Refresh(); + EditorGUIUtility.ExitGUI(); + } + } + } + + protected virtual bool ValidateBlueprint() { return true; } + + public override void OnInspectorGUI() + { + + serializedObject.UpdateIfRequiredOrScript(); + + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + + DrawBlueprintProperties(); + + GUILayout.Space(10); + GUI.enabled = ValidateBlueprint(); + if (GUILayout.Button("Generate", GUI.skin.FindStyle("LargeButton"), GUILayout.Height(32))) + Generate(); + + GUI.enabled = (blueprint != null && !blueprint.empty && !Application.isPlaying); + EditorGUI.BeginChangeCheck(); + editMode = GUILayout.Toggle(editMode, editMode ? "Done" : "Edit", "Button"); + if (EditorGUI.EndChangeCheck()) + { + if (editMode) + EditorApplication.delayCall += EnterBlueprintEditMode; + else + EditorApplication.delayCall += ExitBlueprintEditMode; + } + EditorGUILayout.EndVertical(); + GUI.enabled = true; + + if (isEditing) + DrawTools(); + + if (GUI.changed) + { + serializedObject.ApplyModifiedProperties(); + + // There might be blueprint editing operations that have no undo entry, so do this to + // ensure changes are serialized to disk by Unity. + EditorUtility.SetDirty(target); + } + + } + + protected virtual void DrawBlueprintProperties() + { + Editor.DrawPropertiesExcluding(serializedObject, "m_Script"); + } + + private void DrawWithCamera(Camera camera) + { + if (editMode) + { + for (int i = 0; i < renderModes.Count; ++i) + { + if ((1 << i & renderModeFlags) != 0) + renderModes[i].DrawWithCamera(camera); + } + } + } + + + [System.Serializable] + protected class SceneStateCache + { + public SceneView view; + public SceneView.SceneViewState state; + } + + void EnterBlueprintEditMode() + { + if (!isEditing) + { +#if (UNITY_2019_1_OR_NEWER) + SceneView.duringSceneGui -= this.OnSceneGUI; + SceneView.duringSceneGui += this.OnSceneGUI; +#else + SceneView.onSceneGUIDelegate -= this.OnSceneGUI; + SceneView.onSceneGUIDelegate += this.OnSceneGUI; +#endif + + oldSelection = Selection.activeObject; + if (EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo()) + { + ActiveEditorTracker.sharedTracker.isLocked = true; + + oldSetup = EditorSceneManager.GetSceneManagerSetup(); + EditorSceneManager.NewScene(NewSceneSetup.EmptyScene); + + // Set properties for all scene views: + m_SceneStates = new List(); + foreach (SceneView s in SceneView.sceneViews) + { + m_SceneStates.Add(new SceneStateCache { state = new SceneView.SceneViewState(s.sceneViewState), view = s }); + s.sceneViewState.showFlares = false; + s.sceneViewState.alwaysRefresh = false; + s.sceneViewState.showFog = false; + s.sceneViewState.showSkybox = false; + s.sceneViewState.showImageEffects = false; + s.sceneViewState.showParticleSystems = false; + s.Frame(blueprint.bounds); + } + + isEditing = true; + Repaint(); + } + } + } + + void ExitBlueprintEditMode() + { + if (isEditing) + { + + isEditing = false; + + AssetDatabase.SaveAssets(); + + // Reset all scene views: + foreach (var state in m_SceneStates) + { + if (state.view == null) + continue; + + state.view.sceneViewState.showFog = state.state.showFog; + state.view.sceneViewState.showFlares = state.state.showFlares; + state.view.sceneViewState.alwaysRefresh = state.state.alwaysRefresh; + state.view.sceneViewState.showSkybox = state.state.showSkybox; + state.view.sceneViewState.showImageEffects = state.state.showImageEffects; + state.view.sceneViewState.showParticleSystems = state.state.showParticleSystems; + } + + ActiveEditorTracker.sharedTracker.isLocked = false; + + if (SceneManager.GetActiveScene().path.Length <= 0) + { + if (oldSetup != null && oldSetup.Length > 0) + { + EditorSceneManager.RestoreSceneManagerSetup(oldSetup); + oldSetup = null; + } + else + { + EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects); + } + } + + Selection.activeObject = oldSelection; + +#if (UNITY_2019_1_OR_NEWER) + SceneView.duringSceneGui -= this.OnSceneGUI; +#else + SceneView.onSceneGUIDelegate -= this.OnSceneGUI; +#endif + + Repaint(); + } + } + + public virtual void OnSceneGUI(SceneView sceneView) + { + + if (!isEditing || sceneView.camera == null) + return; + + ResizeParticleArrays(); + + Event e = Event.current; + + if (e.type == EventType.Repaint) + { + + // Update camera facing status and world space positions array: + UpdateParticleVisibility(); + + // Generate sorted indices for back-to-front rendering: + for (int i = 0; i < sortedIndices.Length; i++) + sortedIndices[i] = i; + Array.Sort(sortedIndices, (a, b) => sqrDistanceToCamera[b].CompareTo(sqrDistanceToCamera[a])); + + // render modes OnSceneRepaint: + for (int i = 0; i < renderModes.Count; ++i) + { + if ((1 << i & renderModeFlags) != 0) + renderModes[i].OnSceneRepaint(sceneView); + } + + // property OnSceneRepaint: + currentProperty.OnSceneRepaint(); + + // update particle color based on visiblity, etc. + UpdateTintColor(); + + // Draw particle handles: + ObiParticleEditorDrawing.DrawParticles(sceneView.camera, blueprint, activeParticle, visible, tint, sortedIndices, dotRadiusScale); + + } + + if (currentTool != null) + currentTool.OnSceneGUI(sceneView); + + } + + protected virtual void UpdateTintColor() + { + Color regularColor = ObiEditorSettings.GetOrCreateSettings().particleColor; + Color selectedColor = ObiEditorSettings.GetOrCreateSettings().selectedParticleColor; + Color activeColor = ObiEditorSettings.GetOrCreateSettings().activeParticleColor; + + for (int i = 0; i < blueprint.positions.Length; i++) + { + // get particle color: + if (activeParticle == i) + tint[i] = activeColor; + else + tint[i] = selectionStatus[i] ? selectedColor : regularColor; + + tint[i].a = visible[i] ? 1 : 0.15f; + } + } + + protected void ResizeParticleArrays() + { + if (blueprint.positions != null) + { + Array.Resize(ref selectionStatus, blueprint.positions.Length); + Array.Resize(ref visible, blueprint.positions.Length); + Array.Resize(ref tint, blueprint.positions.Length); + Array.Resize(ref sqrDistanceToCamera, blueprint.positions.Length); + Array.Resize(ref sortedIndices, blueprint.positions.Length); + } + + } + + public int PropertySelector(int propertyIndex, string label = "Property") + { + // get all particle properties: + string[] propertyNames = new string[properties.Count]; + for (int i = 0; i < properties.Count; ++i) + propertyNames[i] = properties[i].name; + + // Draw a selection dropdown: + return EditorGUILayout.Popup(label, propertyIndex, propertyNames); + } + + public virtual void RenderModeSelector() + { + showRenderModes.value = EditorGUILayout.BeginFoldoutHeaderGroup(showRenderModes, "Render modes"); + if (showRenderModes) + { + EditorGUI.BeginChangeCheck(); + for (int i = 0; i < renderModes.Count; ++i) + { + int value = 1 << i; + + if (EditorGUILayout.Toggle(renderModes[i].name, (value & renderModeFlags) != 0)) + renderModeFlags |= value; + else + renderModeFlags &= ~value; + } + if (EditorGUI.EndChangeCheck()) + Refresh(); + } + EditorGUILayout.EndFoldoutHeaderGroup(); + } + + public void Refresh() + { + currentProperty.RecalculateMinMax(); + + // refresh render modes: + for (int i = 0; i < renderModes.Count; ++i) + { + if ((1 << i & renderModeFlags) != 0) + renderModes[i].Refresh(); + } + + SceneView.RepaintAll(); + } + + public virtual void UpdateParticleVisibility() + { + + for (int i = 0; i < blueprint.positions.Length; i++) + { + if (blueprint.IsParticleActive(i)) + { + visible[i] = true; + + if (Camera.current != null) + { + Vector3 camToParticle = Camera.current.transform.position - blueprint.positions[i]; + sqrDistanceToCamera[i] = camToParticle.sqrMagnitude; + } + } + } + + if ((renderModeFlags & 1) != 0) + Refresh(); + } + + protected void DrawTools() + { + + GUIContent[] contents = new GUIContent[tools.Count]; + + for (int i = 0; i < tools.Count; ++i) + contents[i] = new GUIContent(tools[i].icon, tools[i].name); + + EditorGUILayout.Space(); + GUILayout.Box(GUIContent.none, ObiEditorUtils.GetSeparatorLineStyle()); + EditorGUILayout.Space(); + + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + EditorGUI.BeginChangeCheck(); + int newSelectedTool = ObiEditorUtils.DoToolBar(currentToolIndex, contents); + EditorGUILayout.EndVertical(); + + if (EditorGUI.EndChangeCheck()) + { + if (currentTool != null) + currentTool.OnDisable(); + + currentToolIndex = newSelectedTool; + + if (currentTool != null) + currentTool.OnEnable(); + + SceneView.RepaintAll(); + } + + if (currentTool != null) + { + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + EditorGUILayout.LabelField(currentTool.name, EditorStyles.boldLabel); + + string help = currentTool.GetHelpString(); + if (!help.Equals(string.Empty)) + EditorGUILayout.LabelField(help, EditorStyles.helpBox); + EditorGUILayout.EndVertical(); + + currentTool.OnInspectorGUI(); + } + + } + + public void SetSelected(int particleIndex, bool selected) + { + selectionStatus[particleIndex] = selected; + } + + public bool IsSelected(int particleIndex) + { + return selectionStatus[particleIndex]; + } + + public bool Editable(int particleIndex) + { + return currentTool.Editable(particleIndex) && blueprint.IsParticleActive(particleIndex); + } + } + +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/ObiActorBlueprintEditor.cs.meta b/Assets/Obi/Editor/Common/Blueprints/ObiActorBlueprintEditor.cs.meta new file mode 100644 index 000000000..c1fbbadee --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/ObiActorBlueprintEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2e39e6eea226f4ecbbe091613ff79f85 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/ObiMeshBasedActorBlueprintEditor.cs b/Assets/Obi/Editor/Common/Blueprints/ObiMeshBasedActorBlueprintEditor.cs new file mode 100644 index 000000000..2bedb1c7a --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/ObiMeshBasedActorBlueprintEditor.cs @@ -0,0 +1,268 @@ +using UnityEngine; +using UnityEditor; +using System; +using System.IO; + +namespace Obi +{ + [CustomEditor(typeof(ObiMeshBasedActorBlueprint), true)] + public abstract class ObiMeshBasedActorBlueprintEditor : ObiActorBlueprintEditor + { + + [Flags] + public enum ParticleCulling + { + Off = 0, + Back = 1 << 0, + Front = 1 << 1 + } + + protected Mesh visualizationMesh; + public ParticleCulling particleCulling = ParticleCulling.Back; + + protected Material gradientMaterial; + protected Material textureExportMaterial; + protected Material paddingMaterial; + + public override void OnEnable() + { + base.OnEnable(); + gradientMaterial = Resources.Load("PropertyGradientMaterial"); + textureExportMaterial = Resources.Load("UVSpaceColorMaterial"); + paddingMaterial = Resources.Load("PaddingMaterial"); + } + + public abstract Mesh sourceMesh + { + get; + } + + protected void NonReadableMeshWarning(Mesh mesh) + { + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + Texture2D icon = EditorGUIUtility.Load("icons/console.erroricon.png") as Texture2D; + EditorGUILayout.LabelField(new GUIContent("The input mesh is not readable. Read/Write must be enabled in the mesh import settings.", icon), EditorStyles.wordWrappedMiniLabel); + + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button("Fix now", GUILayout.MaxWidth(100), GUILayout.MinHeight(32))) + { + string assetPath = AssetDatabase.GetAssetPath(mesh); + ModelImporter modelImporter = AssetImporter.GetAtPath(assetPath) as ModelImporter; + if (modelImporter != null) + { + modelImporter.isReadable = true; + } + modelImporter.SaveAndReimport(); + } + EditorGUILayout.EndHorizontal(); + EditorGUILayout.EndVertical(); + } + + protected override bool ValidateBlueprint() + { + if (sourceMesh != null) + { + if (!sourceMesh.isReadable) + { + NonReadableMeshWarning(sourceMesh); + return false; + } + return true; + } + return false; + } + + public abstract int VertexToParticle(int vertexIndex); + + public override void UpdateParticleVisibility() + { + if (sourceMesh != null && Camera.current != null) + { + Vector3[] meshNormals = sourceMesh.normals; + for (int i = 0; i < sourceMesh.vertexCount; i++) + { + int particle = VertexToParticle(i); + + if (particle >= 0 && particle < blueprint.positions.Length) + { + Vector3 camToParticle = Camera.current.transform.position - blueprint.positions[particle]; + + sqrDistanceToCamera[particle] = camToParticle.sqrMagnitude; + + switch (particleCulling) + { + case ParticleCulling.Off: + visible[particle] = true; + break; + case ParticleCulling.Back: + visible[particle] = Vector3.Dot(meshNormals[i], camToParticle) > 0; + break; + case ParticleCulling.Front: + visible[particle] = Vector3.Dot(meshNormals[i], camToParticle) <= 0; + break; + } + } + + } + + if ((renderModeFlags & 1) != 0) + Refresh(); + } + + } + + public void DrawGradientMesh(float[] vertexWeights = null, float[] wireframeWeights = null) + { + visualizationMesh = GameObject.Instantiate(sourceMesh); + + if (gradientMaterial.SetPass(0)) + { + var matrix = Matrix4x4.TRS(Vector3.zero, (blueprint as ObiMeshBasedActorBlueprint).rotation, (blueprint as ObiMeshBasedActorBlueprint).scale); + + Color[] colors = new Color[visualizationMesh.vertexCount]; + for (int i = 0; i < colors.Length; i++) + { + int particle = VertexToParticle(i); + if (particle >= 0 && particle < blueprint.particleCount) + { + float weight = 1; + if (vertexWeights != null) + weight = vertexWeights[particle]; + + colors[i] = weight * currentProperty.ToColor(particle); + } + else + colors[i] = Color.gray; + } + + visualizationMesh.colors = colors; + Graphics.DrawMeshNow(visualizationMesh, matrix); + + Color wireColor = ObiEditorSettings.GetOrCreateSettings().brushWireframeColor; + + if (gradientMaterial.SetPass(1)) + { + for (int i = 0; i < colors.Length; i++) + { + int particle = VertexToParticle(i); + if (particle >= 0 && particle < blueprint.particleCount) + { + if (wireframeWeights != null) + colors[i] = wireColor * wireframeWeights[particle]; + else + colors[i] = wireColor; + } + else + colors[i] = Color.gray; + } + + visualizationMesh.colors = colors; + GL.wireframe = true; + Graphics.DrawMeshNow(visualizationMesh, matrix); + GL.wireframe = false; + } + + } + + GameObject.DestroyImmediate(visualizationMesh); + } + + + /** + * Reads particle data from a 2D texture. Can be used to adjust per particle mass, skin radius, etc. using + * a texture instead of painting it in the editor. + * + * Will call onReadProperty once for each particle, passing the particle index and the bilinearly interpolated + * color of the texture at its coordinate. + * + * Be aware that, if a particle corresponds to more than + * one physical vertex and has multiple uv coordinates, + * onReadProperty will be called multiple times for that particle. + */ + public bool ReadParticlePropertyFromTexture(Texture2D source, Action onReadProperty) + { + + if (source == null || onReadProperty == null) + return false; + + Vector2[] uvs = sourceMesh.uv; + + // Iterate over all vertices in the mesh reading back colors from the texture: + for (int i = 0; i < sourceMesh.vertexCount; ++i) + { + try + { + onReadProperty(VertexToParticle(i), source.GetPixelBilinear(uvs[i].x, uvs[i].y)); + } + catch (UnityException e) + { + Debug.LogException(e); + return false; + } + } + + return true; + } + + public bool WriteParticlePropertyToTexture(string path, int width, int height, int padding) + { + + if (path == null || textureExportMaterial == null || !textureExportMaterial.SetPass(0)) + return false; + + if (visualizationMesh == null) + { + visualizationMesh = GameObject.Instantiate(sourceMesh); + } + + RenderTexture tempRT = RenderTexture.GetTemporary(width, height, 0); + RenderTexture paddingRT = RenderTexture.GetTemporary(width, height, 0); + + RenderTexture old = RenderTexture.active; + RenderTexture.active = tempRT; + + GL.PushMatrix(); + GL.LoadProjectionMatrix(Matrix4x4.Ortho(0, 1, 0, 1, -1, 1)); + + Color[] colors = new Color[sourceMesh.vertexCount]; + for (int i = 0; i < colors.Length; i++) + colors[i] = currentProperty.ToColor(VertexToParticle(i)); + + visualizationMesh.colors = colors; + Graphics.DrawMeshNow(visualizationMesh, Matrix4x4.identity); + + GL.PopMatrix(); + + // Perform padding/edge dilation + paddingMaterial.SetFloat("_Padding", padding); + Graphics.Blit(tempRT, paddingRT, paddingMaterial); + + // Read result into our Texture2D. + RenderTexture.active = paddingRT; + Texture2D texture = new Texture2D(width, height, TextureFormat.RGBA32, false); + texture.ReadPixels(new Rect(0, 0, width, height), 0, 0); + + RenderTexture.active = old; + RenderTexture.ReleaseTemporary(paddingRT); + RenderTexture.ReleaseTemporary(tempRT); + + byte[] png = texture.EncodeToPNG(); + GameObject.DestroyImmediate(texture); + + try + { + File.WriteAllBytes(path, png); + } + catch (Exception e) + { + Debug.LogException(e); + return false; + } + + AssetDatabase.Refresh(); + + return true; + } + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/ObiMeshBasedActorBlueprintEditor.cs.meta b/Assets/Obi/Editor/Common/Blueprints/ObiMeshBasedActorBlueprintEditor.cs.meta new file mode 100644 index 000000000..497250ff1 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/ObiMeshBasedActorBlueprintEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c81a94632ae434014aedb4cc241e73e2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/ObiMeshUtils.cs b/Assets/Obi/Editor/Common/Blueprints/ObiMeshUtils.cs new file mode 100644 index 000000000..02ae7b5d5 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/ObiMeshUtils.cs @@ -0,0 +1,93 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public static class ObiMeshUtils + { + // Temporary vector3 values + static Vector3 tv1, tv2, tv3, tv4; + + public static bool RayIntersectsTriangle(Vector3 origin, + Vector3 dir, + Vector3 vert0, + Vector3 vert1, + Vector3 vert2, + ref float distance, + ref Vector3 normal) + { + float det; + + ObiVectorMath.Subtract(vert0, vert1, ref tv1); + ObiVectorMath.Subtract(vert0, vert2, ref tv2); + + ObiVectorMath.Cross(dir, tv2, ref tv4); + det = Vector3.Dot(tv1, tv4); + + if (det < Mathf.Epsilon) + return false; + + ObiVectorMath.Subtract(vert0, origin, ref tv3); + + float u = Vector3.Dot(tv3, tv4); + + if (u < 0f || u > det) + return false; + + ObiVectorMath.Cross(tv3, tv1, ref tv4); + + float v = Vector3.Dot(dir, tv4); + + if (v < 0f || u + v > det) + return false; + + distance = Vector3.Dot(tv2, tv4) * (1f / det); + ObiVectorMath.Cross(tv1, tv2, ref normal); + + return true; + } +
 /**
 * Find the nearest triangle intersected by InWorldRay on this mesh. InWorldRay is in world space.
 * @hit contains information about the hit point. @distance limits how far from @InWorldRay.origin the hit
 * point may be. @cullingMode determines what face orientations are tested (Culling.Front only tests front
 * faces, Culling.Back only tests back faces, and Culling.FrontBack tests both).
 * Ray origin and position values are in local space.
 */
 public static bool WorldRaycast(Ray InWorldRay, Matrix4x4 transform, Vector3[] vertices, int[] triangles, out ObiRaycastHit hit, float distance = Mathf.Infinity)
 { + Ray ray = InWorldRay; + if (transform != null) + { + Matrix4x4 inv = transform.inverse; + ray.origin = inv.MultiplyPoint3x4(ray.origin); + ray.direction = inv.MultiplyVector(ray.direction); + }
 return MeshRaycast(ray, vertices, triangles, out hit, distance);
 }

 /**
 * Cast a ray (in model space) against a mesh.
 */
 public static bool MeshRaycast(Ray InRay, Vector3[] vertices, int[] triangles, out ObiRaycastHit hit, float distance = Mathf.Infinity)
 { + Vector3 hitNormal = Vector3.zero; // vars used in loop + Vector3 vert0, vert1, vert2; + Vector3 origin = InRay.origin, direction = InRay.direction; + + hit = new ObiRaycastHit(Mathf.Infinity, + Vector3.zero, + Vector3.zero, + -1); + /** + * Iterate faces, testing for nearest hit to ray origin. + */ + for (int CurTri = 0; CurTri < triangles.Length; CurTri += 3) + { + if (CurTri + 2 >= triangles.Length) continue; + if (triangles[CurTri + 2] >= vertices.Length) continue; + + vert0 = vertices[triangles[CurTri + 0]]; + vert1 = vertices[triangles[CurTri + 1]]; + vert2 = vertices[triangles[CurTri + 2]]; + + // Second pass, test intersection with triangle + if (RayIntersectsTriangle(origin, direction, vert0, vert1, vert2, ref distance, ref hitNormal)) + { + if (distance < hit.distance) + { + hit.distance = distance; + hit.triangle = CurTri / 3; + hit.position = InRay.GetPoint(hit.distance); + hit.normal = hitNormal; + } + } + } + + return hit.triangle > -1;
 } + } + +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/ObiMeshUtils.cs.meta b/Assets/Obi/Editor/Common/Blueprints/ObiMeshUtils.cs.meta new file mode 100644 index 000000000..90c00ab9b --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/ObiMeshUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4d2a4dd4e807c4053b4e4af4d43db45e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/ObiParticleEditorDrawing.cs b/Assets/Obi/Editor/Common/Blueprints/ObiParticleEditorDrawing.cs new file mode 100644 index 000000000..37cc9734a --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/ObiParticleEditorDrawing.cs @@ -0,0 +1,127 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + public class ObiParticleEditorDrawing : MonoBehaviour + { + public static Mesh particlesMesh; + public static Material particleMaterial; + + private static void CreateParticlesMesh() + { + if (particlesMesh == null) + { + particlesMesh = new Mesh(); + particlesMesh.hideFlags = HideFlags.HideAndDontSave; + } + } + + private static void CreateParticleMaterials() + { + if (!particleMaterial) + { + particleMaterial = Resources.Load("EditorParticle"); + } + } + + public static void DestroyParticlesMesh() + { + GameObject.DestroyImmediate(particlesMesh); + } + + public static void DrawParticles(Camera cam, ObiActorBlueprint blueprint, int activeParticle, bool[] visible, Color[] baseColor, int[] sortedIndices, float radiusScale = 1) + { + CreateParticlesMesh(); + CreateParticleMaterials(); + + if (!particleMaterial.SetPass(0)) + return; + + //because each vertex needs to be drawn as a quad. + int particlesPerDrawcall = Constants.maxVertsPerMesh / 4; + int drawcallCount = blueprint.particleCount / particlesPerDrawcall + 1; + particlesPerDrawcall = Mathf.Min(particlesPerDrawcall, blueprint.particleCount); + + List vertices = new List(blueprint.activeParticleCount* 4); + List normals = new List(blueprint.activeParticleCount * 4); + List uvs = new List(blueprint.activeParticleCount * 4); + List colors = new List(blueprint.activeParticleCount * 4); + List triangles = new List(blueprint.activeParticleCount * 6); + + Vector3 particleOffset0 = new Vector3(1, 1, 0); + Vector3 particleOffset1 = new Vector3(-1, 1, 0); + Vector3 particleOffset2 = new Vector3(-1, -1, 0); + Vector3 particleOffset3 = new Vector3(1, -1, 0); + + Vector4 radius = new Vector4(1, 0, 0, 0.005f * radiusScale); + + for (int i = 0; i < drawcallCount; ++i) + { + //Draw all cloth vertices: + particlesMesh.Clear(); + vertices.Clear(); + uvs.Clear(); + normals.Clear(); + colors.Clear(); + triangles.Clear(); + + int index = 0; + + // Run over all particles (not only active ones), since they're reordered based on distance to camera. + // Then test if the sorted index is active or not, and skip inactive ones. + int limit = Mathf.Min((i + 1) * particlesPerDrawcall, blueprint.particleCount); + + for (int j = i * particlesPerDrawcall; j < limit; ++j) + { + int sortedIndex = sortedIndices[j]; + + // skip inactive ones: + if (!blueprint.IsParticleActive(sortedIndex)) + continue; + + normals.Add(particleOffset0); + normals.Add(particleOffset1); + normals.Add(particleOffset2); + normals.Add(particleOffset3); + + uvs.Add(radius); + uvs.Add(radius); + uvs.Add(radius); + uvs.Add(radius); + + vertices.Add(blueprint.positions[sortedIndex]); + vertices.Add(blueprint.positions[sortedIndex]); + vertices.Add(blueprint.positions[sortedIndex]); + vertices.Add(blueprint.positions[sortedIndex]); + + colors.Add(baseColor[sortedIndex]); + colors.Add(baseColor[sortedIndex]); + colors.Add(baseColor[sortedIndex]); + colors.Add(baseColor[sortedIndex]); + + triangles.Add(index + 2); + triangles.Add(index + 1); + triangles.Add(index); + triangles.Add(index + 3); + triangles.Add(index + 2); + triangles.Add(index); + + index += 4; + } + + particlesMesh.SetVertices(vertices); + particlesMesh.SetNormals(normals); + particlesMesh.SetColors(colors); + particlesMesh.SetUVs(0, uvs); + particlesMesh.SetTriangles(triangles,0, true); + + Graphics.DrawMeshNow(particlesMesh, Matrix4x4.identity); + } + } + + } + +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/ObiParticleEditorDrawing.cs.meta b/Assets/Obi/Editor/Common/Blueprints/ObiParticleEditorDrawing.cs.meta new file mode 100644 index 000000000..561f8c744 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/ObiParticleEditorDrawing.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 982f73e0e40c749f09db403624bbd8e1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties.meta b/Assets/Obi/Editor/Common/Blueprints/Properties.meta new file mode 100644 index 000000000..1efd01e8b --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dfda10b0e82f747998295540d5750108 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes.meta b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes.meta new file mode 100644 index 000000000..1de2e12b8 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7b9ba4ddc644a4bfa8ab44a5826b8007 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintBoolProperty.cs b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintBoolProperty.cs new file mode 100644 index 000000000..d3b35a8d7 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintBoolProperty.cs @@ -0,0 +1,24 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; + +namespace Obi +{ + public abstract class ObiBlueprintBoolProperty : ObiBlueprintProperty + { + public override bool Equals(int firstIndex, int secondIndex) + { + return Get(firstIndex) == Get(secondIndex); + } + + public override void PropertyField() + { + value = EditorGUILayout.Toggle(name, value); + } + + public override Color ToColor(int index) + { + return value ? Color.white : Color.gray; + } + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintBoolProperty.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintBoolProperty.cs.meta new file mode 100644 index 000000000..719c085a0 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintBoolProperty.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 19cb8e21747094d6dae8dff155654066 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintColorProperty.cs b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintColorProperty.cs new file mode 100644 index 000000000..a62d0c3b2 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintColorProperty.cs @@ -0,0 +1,31 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; + +namespace Obi +{ + public abstract class ObiBlueprintColorProperty : ObiBlueprintProperty + { + public ObiActorBlueprintEditor editor; + + public ObiBlueprintColorProperty(ObiActorBlueprintEditor editor) + { + this.editor = editor; + } + + public override bool Equals(int firstIndex, int secondIndex) + { + return Get(firstIndex) == Get(secondIndex); + } + + public override void PropertyField() + { + value = EditorGUILayout.ColorField(name, value); + } + + public override Color ToColor(int index) + { + return editor.blueprint.colors[index]; + } + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintColorProperty.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintColorProperty.cs.meta new file mode 100644 index 000000000..226bed79e --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintColorProperty.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 64ab0b4fad7614808acc3cdb75215c50 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintFloatProperty.cs b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintFloatProperty.cs new file mode 100644 index 000000000..8b5217444 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintFloatProperty.cs @@ -0,0 +1,94 @@ +using UnityEngine; +using UnityEditor; + +namespace Obi +{ + public abstract class ObiBlueprintFloatProperty : ObiBlueprintProperty + { + public float minVisualizationValue = 0; + public float maxVisualizationValue = 10; + protected float minUserVisualizationValue = 0; + protected float maxUserVisualizationValue = 10; + + protected float? minValue = null; + protected float? maxValue = null; + + public bool autoRange = true; + public ObiActorBlueprintEditor editor; + + public ObiBlueprintFloatProperty(ObiActorBlueprintEditor editor, float? minValue = null, float? maxValue = null) + { + this.editor = editor; + this.minValue = minValue; + this.maxValue = maxValue; + } + + public override bool Equals(int firstIndex, int secondIndex) + { + float v1 = Get(firstIndex); + float v2 = Get(secondIndex); + if (v1 == v2) return true; + return Mathf.Approximately(v1,v2); + } + + public override void PropertyField() + { + EditorGUI.BeginChangeCheck(); + value = EditorGUILayout.FloatField(name, value); + if (EditorGUI.EndChangeCheck()) + { + if (minValue.HasValue) + value = Mathf.Max(minValue.Value, value); + if (maxValue.HasValue) + value = Mathf.Min(maxValue.Value, value); + } + } + + public override void RecalculateMinMax() + { + if (editor != null && autoRange) + { + maxVisualizationValue = float.MinValue; + minVisualizationValue = float.MaxValue; + + for (int i = 0; i < editor.blueprint.activeParticleCount; i++) + { + float v = Get(i); + maxVisualizationValue = Mathf.Max(maxVisualizationValue, v); + minVisualizationValue = Mathf.Min(minVisualizationValue, v); + } + } + else + { + maxVisualizationValue = maxUserVisualizationValue; + minVisualizationValue = minUserVisualizationValue; + } + } + + public override void VisualizationOptions() + { + EditorGUI.BeginChangeCheck(); + autoRange = EditorGUILayout.Toggle("Automatic property range", autoRange); + GUI.enabled = !autoRange; + EditorGUI.indentLevel++; + minUserVisualizationValue = EditorGUILayout.FloatField("Min", minUserVisualizationValue); + maxUserVisualizationValue = EditorGUILayout.FloatField("Max", maxUserVisualizationValue); + EditorGUI.indentLevel--; + GUI.enabled = true; + + if (EditorGUI.EndChangeCheck()) + { + RecalculateMinMax(); + editor.Refresh(); + } + } + + public override Color ToColor(int index) + { + Gradient gradient = ObiEditorSettings.GetOrCreateSettings().propertyGradient; + if (!Mathf.Approximately(minVisualizationValue, maxVisualizationValue)) + return gradient.Evaluate(Mathf.InverseLerp(minVisualizationValue, maxVisualizationValue, Get(index))); + else return gradient.Evaluate(0); + } + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintFloatProperty.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintFloatProperty.cs.meta new file mode 100644 index 000000000..a8a2539df --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintFloatProperty.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: be67f2576200242f080bbcc074dc598a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintIntProperty.cs b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintIntProperty.cs new file mode 100644 index 000000000..4cbc05b86 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintIntProperty.cs @@ -0,0 +1,41 @@ +using UnityEngine; +using UnityEditor; + +namespace Obi +{ + public abstract class ObiBlueprintIntProperty : ObiBlueprintProperty + { + protected int? minValue = null; + protected int? maxValue = null; + + public ObiBlueprintIntProperty(int? minValue = null, int? maxValue = null) + { + this.minValue = minValue; + this.maxValue = maxValue; + } + + public override bool Equals(int firstIndex, int secondIndex) + { + return Get(firstIndex) == Get(secondIndex); + } + + public override void PropertyField() + { + EditorGUI.BeginChangeCheck(); + value = EditorGUILayout.IntField(name, value); + if (EditorGUI.EndChangeCheck()) + { + if (minValue.HasValue) + value = Mathf.Max(minValue.Value, value); + if (maxValue.HasValue) + value = Mathf.Min(maxValue.Value, value); + } + } + + public override Color ToColor(int index) + { + int colorIndex = Get(index) % ObiUtils.colorAlphabet.Length; + return ObiUtils.colorAlphabet[colorIndex]; + } + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintIntProperty.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintIntProperty.cs.meta new file mode 100644 index 000000000..069bfc02e --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintIntProperty.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d8661f9e9cfd044c7bb759145c2a8d73 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintMaskProperty.cs b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintMaskProperty.cs new file mode 100644 index 000000000..e4b0713e0 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintMaskProperty.cs @@ -0,0 +1,28 @@ +using UnityEngine; +using UnityEditor; + +namespace Obi +{ + public abstract class ObiBlueprintMaskProperty : ObiBlueprintIntProperty + { + public ObiBlueprintMaskProperty() : base(null,null) + { + } + + public override void PropertyField() + { + value = EditorGUILayout.MaskField(name, value, ObiUtils.categoryNames); + } + + private int MathMod(int a, int b) + { + return (Mathf.Abs(a * b) + a) % b; + } + + public override Color ToColor(int index) + { + int colorIndex = MathMod(Get(index),ObiUtils.colorAlphabet.Length); + return ObiUtils.colorAlphabet[colorIndex]; + } + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintMaskProperty.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintMaskProperty.cs.meta new file mode 100644 index 000000000..60f3c1783 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintMaskProperty.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 165ad17d69adf415ea7609a9373de001 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintProperty.cs b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintProperty.cs new file mode 100644 index 000000000..fb7681244 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintProperty.cs @@ -0,0 +1,79 @@ +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; + +namespace Obi +{ + public abstract class ObiBlueprintPropertyBase + { + protected List brushModes = new List(); + private int selectedBrushMode; + + public abstract string name + { + get; + } + + public abstract void PropertyField(); + public virtual void VisualizationOptions(){} + public virtual void OnSceneRepaint(){} + + public abstract bool Equals(int firstIndex, int secondIndex); + + public abstract void GetDefaultFromIndex(int index); + public abstract void SetDefaultToIndex(int index); + public virtual bool Masked(int index) + { + return false; + } + + public virtual void RecalculateMinMax() { } + public virtual Color ToColor(int index) { return Color.white; } + + protected void Initialize(ObiBrushBase paintBrush) + { + // Initialize the brush if there's no brush mode set: + if (paintBrush.brushMode == null && brushModes.Count > 0) + { + selectedBrushMode = 0; + paintBrush.brushMode = brushModes[selectedBrushMode]; + } + } + + public void OnSelect(ObiBrushBase paintBrush) + { + // Upon selecting the property, change to the last selected brush mode: + if (brushModes.Count > selectedBrushMode) + paintBrush.brushMode = brushModes[selectedBrushMode]; + + } + + public void BrushModes(ObiBrushBase paintBrush) + { + Initialize(paintBrush); + + GUIContent[] contents = new GUIContent[brushModes.Count]; + for (int i = 0; i < brushModes.Count; ++i) + contents[i] = new GUIContent(brushModes[i].name); + + EditorGUI.BeginChangeCheck(); + selectedBrushMode = ObiEditorUtils.DoToolBar(selectedBrushMode, contents); + if (EditorGUI.EndChangeCheck()) + { + paintBrush.brushMode = brushModes[selectedBrushMode]; + } + } + } + + public abstract class ObiBlueprintProperty : ObiBlueprintPropertyBase + { + protected T value; + + public T GetDefault() { return value; } + public override void GetDefaultFromIndex(int index) { value = Get(index); } + public override void SetDefaultToIndex(int index) { Set(index, value); } + + public abstract T Get(int index); + public abstract void Set(int index, T value); + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintProperty.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintProperty.cs.meta new file mode 100644 index 000000000..ba7b85be8 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/BaseTypes/ObiBlueprintProperty.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 60a83ba184caf4a1aba4da6754776a1d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/IObiPropertyEditableProvider.cs b/Assets/Obi/Editor/Common/Blueprints/Properties/IObiPropertyEditableProvider.cs new file mode 100644 index 000000000..f5345891b --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/IObiPropertyEditableProvider.cs @@ -0,0 +1,13 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface IObiSelectableParticleProvider + { + void SetSelected(int particleIndex, bool selected); + bool IsSelected(int particleIndex); + bool Editable(int particleIndex); + } + +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/IObiPropertyEditableProvider.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Properties/IObiPropertyEditableProvider.cs.meta new file mode 100644 index 000000000..3bf0408fa --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/IObiPropertyEditableProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c3a2643915854763af75d63fa1ec0c9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintColor.cs b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintColor.cs new file mode 100644 index 000000000..dfa50af4c --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintColor.cs @@ -0,0 +1,32 @@ +using UnityEngine; + +namespace Obi +{ + public class ObiBlueprintColor : ObiBlueprintColorProperty + { + public ObiBlueprintColor(ObiActorBlueprintEditor editor) : base(editor) + { + brushModes.Add(new ObiColorPaintBrushMode(this)); + brushModes.Add(new ObiColorSmoothBrushMode(this)); + } + + public override string name + { + get { return "Color"; } + } + + public override Color Get(int index) + { + return editor.blueprint.colors[index]; + } + public override void Set(int index, Color value) + { + editor.blueprint.colors[index] = value; + } + public override bool Masked(int index) + { + return !editor.Editable(index); + } + + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintColor.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintColor.cs.meta new file mode 100644 index 000000000..a371aacab --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintColor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 810c95482e60a44209c5ece07e287153 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintFilterCategory.cs b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintFilterCategory.cs new file mode 100644 index 000000000..6441902ee --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintFilterCategory.cs @@ -0,0 +1,31 @@ +namespace Obi +{ + public class ObiBlueprintFilterCategory : ObiBlueprintIntProperty + { + public ObiActorBlueprintEditor editor; + + public ObiBlueprintFilterCategory(ObiActorBlueprintEditor editor) : base(ObiUtils.MinCategory, ObiUtils.MaxCategory) + { + this.editor = editor; + brushModes.Add(new ObiIntPaintBrushMode(this)); + } + + public override string name + { + get { return "Category"; } + } + + public override int Get(int index) + { + return ObiUtils.GetCategoryFromFilter(editor.blueprint.filters[index]); + } + public override void Set(int index, int value) + { + editor.blueprint.filters[index] = ObiUtils.MakeFilter(ObiUtils.GetMaskFromFilter(editor.blueprint.filters[index]), value); + } + public override bool Masked(int index) + { + return !editor.Editable(index); + } + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintFilterCategory.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintFilterCategory.cs.meta new file mode 100644 index 000000000..503074933 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintFilterCategory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 08502999496e54f49bb9dee0e0855794 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintFilterMask.cs b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintFilterMask.cs new file mode 100644 index 000000000..42dcc76f4 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintFilterMask.cs @@ -0,0 +1,31 @@ +namespace Obi +{ + public class ObiBlueprintFilterMask : ObiBlueprintMaskProperty + { + public ObiActorBlueprintEditor editor; + + public ObiBlueprintFilterMask(ObiActorBlueprintEditor editor) + { + this.editor = editor; + brushModes.Add(new ObiIntPaintBrushMode(this)); + } + + public override string name + { + get { return "Collides with"; } + } + + public override int Get(int index) + { + return ObiUtils.GetMaskFromFilter(editor.blueprint.filters[index]); + } + public override void Set(int index, int value) + { + editor.blueprint.filters[index] = ObiUtils.MakeFilter(value,ObiUtils.GetCategoryFromFilter(editor.blueprint.filters[index])); + } + public override bool Masked(int index) + { + return !editor.Editable(index); + } + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintFilterMask.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintFilterMask.cs.meta new file mode 100644 index 000000000..2bdf6b4af --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintFilterMask.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ead8a00c964834718a2411be5d7361f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintMass.cs b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintMass.cs new file mode 100644 index 000000000..f45dcc2eb --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintMass.cs @@ -0,0 +1,32 @@ +namespace Obi +{ + public class ObiBlueprintMass : ObiBlueprintFloatProperty + { + + public ObiBlueprintMass(ObiActorBlueprintEditor editor) : base(editor,0) + { + brushModes.Add(new ObiFloatPaintBrushMode(this)); + brushModes.Add(new ObiFloatAddBrushMode(this)); + brushModes.Add(new ObiFloatCopyBrushMode(this, this)); + brushModes.Add(new ObiFloatSmoothBrushMode(this)); + } + + public override string name + { + get { return "Mass"; } + } + + public override float Get(int index) + { + return ObiUtils.InvMassToMass(editor.blueprint.invMasses[index]); + } + public override void Set(int index, float value) + { + editor.blueprint.invMasses[index] = ObiUtils.MassToInvMass(value); + } + public override bool Masked(int index) + { + return !editor.Editable(index); + } + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintMass.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintMass.cs.meta new file mode 100644 index 000000000..7dcb1686f --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintMass.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bd39fbd4c226542e58dc8ecceb5f8f14 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintRadius.cs b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintRadius.cs new file mode 100644 index 000000000..2c41466bb --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintRadius.cs @@ -0,0 +1,36 @@ +using UnityEngine; + +namespace Obi +{ + public class ObiBlueprintRadius : ObiBlueprintFloatProperty + { + + public ObiBlueprintRadius(ObiActorBlueprintEditor editor) : base(editor,0.0000001f) + { + brushModes.Add(new ObiFloatPaintBrushMode(this)); + brushModes.Add(new ObiFloatAddBrushMode(this)); + brushModes.Add(new ObiFloatCopyBrushMode(this, this)); + brushModes.Add(new ObiFloatSmoothBrushMode(this)); + } + + public override string name + { + get { return "Radius"; } + } + + public override float Get(int index) + { + return editor.blueprint.principalRadii[index][0]; + } + public override void Set(int index, float value) + { + value = Mathf.Max(0.0000001f, value); + float ratio = value / Get(index); + editor.blueprint.principalRadii[index] = editor.blueprint.principalRadii[index] * ratio; + } + public override bool Masked(int index) + { + return !editor.Editable(index); + } + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintRadius.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintRadius.cs.meta new file mode 100644 index 000000000..174009811 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintRadius.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b5c61b50f6f4a468aa246f01e5268831 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintSelected.cs b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintSelected.cs new file mode 100644 index 000000000..920a50202 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintSelected.cs @@ -0,0 +1,29 @@ +namespace Obi +{ + public class ObiBlueprintSelected : ObiBlueprintBoolProperty + { + public IObiSelectableParticleProvider provider; + public ObiBlueprintSelected(IObiSelectableParticleProvider provider) + { + this.provider = provider; + } + + public override string name + { + get { return "Selected"; } + } + + public override bool Get(int index) + { + return provider.IsSelected(index); + } + public override void Set(int index, bool value) + { + provider.SetSelected(index,value); + } + public override bool Masked(int index) + { + return !provider.Editable(index); + } + } +} diff --git a/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintSelected.cs.meta b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintSelected.cs.meta new file mode 100644 index 000000000..d46419e14 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/Properties/ObiBlueprintSelected.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 270971958421b4fec9e5a5ba95699518 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes.meta b/Assets/Obi/Editor/Common/Blueprints/RenderModes.meta new file mode 100644 index 000000000..d44e8e2f7 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: be5de82c95ded480d881176f73fc19b7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderMode.cs b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderMode.cs new file mode 100644 index 000000000..0b780b88f --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderMode.cs @@ -0,0 +1,25 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; + +namespace Obi +{ + public abstract class ObiBlueprintRenderMode + { + protected ObiActorBlueprintEditor editor; + public abstract string name + { + get; + } + public ObiBlueprintRenderMode(ObiActorBlueprintEditor editor) + { + this.editor = editor; + } + + public virtual void DrawWithCamera(Camera camera) {} + public virtual void OnSceneRepaint(SceneView sceneView) {} + public virtual void Refresh(){} + + public virtual void OnDestroy() { } + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderMode.cs.meta b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderMode.cs.meta new file mode 100644 index 000000000..585711f9b --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d60f616a126974e6d8be81fbbe459bac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeAerodynamicConstraints.cs b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeAerodynamicConstraints.cs new file mode 100644 index 000000000..eeb6854bf --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeAerodynamicConstraints.cs @@ -0,0 +1,63 @@ +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; + +namespace Obi +{ + public class ObiBlueprintRenderModeAerodynamicConstraints : ObiBlueprintRenderMode + { + public override string name + { + get { return "Aerodynamic constraints"; } + } + + public ObiMeshBasedActorBlueprintEditor meshBasedEditor + { + get { return editor as ObiMeshBasedActorBlueprintEditor; } + } + + public ObiBlueprintRenderModeAerodynamicConstraints(ObiMeshBasedActorBlueprintEditor editor) : base(editor) + { + } + + public override void OnSceneRepaint(SceneView sceneView) + { + var meshEditor = editor as ObiMeshBasedActorBlueprintEditor; + if (meshEditor != null) + { + // Get per-particle normals: + Vector3[] normals = meshEditor.sourceMesh.normals; + Vector3[] particleNormals = new Vector3[meshEditor.blueprint.particleCount]; + for (int i = 0; i < normals.Length; ++i) + { + int welded = meshEditor.VertexToParticle(i); + particleNormals[welded] = normals[i]; + } + + using (new Handles.DrawingScope(Color.blue, Matrix4x4.identity)) + { + var constraints = editor.blueprint.GetConstraintsByType(Oni.ConstraintType.Aerodynamics) as ObiConstraints; + if (constraints != null) + { + Vector3[] lines = new Vector3[constraints.GetActiveConstraintCount() * 2]; + int lineIndex = 0; + + foreach (var batch in constraints.batches) + { + for (int i = 0; i < batch.activeConstraintCount; ++i) + { + int particleIndex = batch.particleIndices[i]; + Vector3 position = editor.blueprint.GetParticlePosition(particleIndex); + lines[lineIndex++] = position; + lines[lineIndex++] = position + particleNormals[particleIndex] * 0.025f; + } + } + + Handles.DrawLines(lines); + } + } + } + } + + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeAerodynamicConstraints.cs.meta b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeAerodynamicConstraints.cs.meta new file mode 100644 index 000000000..c6efaed72 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeAerodynamicConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 18881e26e784d47aaa8aa27c93fe0b49 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeBendConstraints.cs b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeBendConstraints.cs new file mode 100644 index 000000000..a5f68cb9d --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeBendConstraints.cs @@ -0,0 +1,44 @@ +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; + +namespace Obi +{ + public class ObiBlueprintRenderModeBendConstraints : ObiBlueprintRenderMode + { + public override string name + { + get { return "Bend constraints"; } + } + + public ObiBlueprintRenderModeBendConstraints(ObiActorBlueprintEditor editor) : base(editor) + { + } + + public override void OnSceneRepaint(SceneView sceneView) + { + using (new Handles.DrawingScope(Color.magenta, Matrix4x4.identity)) + { + var constraints = editor.blueprint.GetConstraintsByType(Oni.ConstraintType.Bending) as ObiConstraints; + if (constraints != null) + { + Vector3[] lines = new Vector3[constraints.GetActiveConstraintCount() * 2]; + int lineIndex = 0; + + foreach (var batch in constraints.batches) + { + for (int i = 0; i < batch.activeConstraintCount; ++i) + { + lines[lineIndex++] = editor.blueprint.GetParticlePosition(batch.particleIndices[i * 3]); + lines[lineIndex++] = editor.blueprint.GetParticlePosition(batch.particleIndices[i * 3 + 1]); + } + } + + Handles.DrawLines(lines); + } + } + + } + + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeBendConstraints.cs.meta b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeBendConstraints.cs.meta new file mode 100644 index 000000000..ec81849a4 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeBendConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 15e21bc6bea1c4320948413c8d7334bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeDistanceConstraints.cs b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeDistanceConstraints.cs new file mode 100644 index 000000000..b4fb4f071 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeDistanceConstraints.cs @@ -0,0 +1,44 @@ +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; + +namespace Obi +{ + public class ObiBlueprintRenderModeDistanceConstraints : ObiBlueprintRenderMode + { + public override string name + { + get { return "Distance constraints"; } + } + + public ObiBlueprintRenderModeDistanceConstraints(ObiActorBlueprintEditor editor) : base(editor) + { + } + + public override void OnSceneRepaint(SceneView sceneView) + { + + using (new Handles.DrawingScope(Color.green, Matrix4x4.identity)) + { + var constraints = editor.blueprint.GetConstraintsByType(Oni.ConstraintType.Distance) as ObiConstraints; + if (constraints != null) + { + Vector3[] lines = new Vector3[constraints.GetActiveConstraintCount() * 2]; + int lineIndex = 0; + + foreach (var batch in constraints.batches) + { + for (int i = 0; i < batch.activeConstraintCount; ++i) + { + lines[lineIndex++] = editor.blueprint.GetParticlePosition(batch.particleIndices[i * 2]); + lines[lineIndex++] = editor.blueprint.GetParticlePosition(batch.particleIndices[i * 2 + 1]); + } + } + + Handles.DrawLines(lines); + } + } + } + + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeDistanceConstraints.cs.meta b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeDistanceConstraints.cs.meta new file mode 100644 index 000000000..c6b32ad18 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeDistanceConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ac734c05a2b994f148fd43cd5829b1be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeMesh.cs b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeMesh.cs new file mode 100644 index 000000000..634c56b95 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeMesh.cs @@ -0,0 +1,46 @@ +using UnityEditor; + +namespace Obi +{ + public class ObiBlueprintRenderModeMesh : ObiBlueprintRenderMode + { + public override string name + { + get { return "Mesh"; } + } + + public ObiMeshBasedActorBlueprintEditor meshBasedEditor + { + get { return editor as ObiMeshBasedActorBlueprintEditor; } + } + + public ObiBlueprintRenderModeMesh(ObiMeshBasedActorBlueprintEditor editor) : base(editor) + { + } + + public override void OnSceneRepaint(SceneView sceneView) + { + if (meshBasedEditor.currentTool is ObiPaintBrushEditorTool) + { + ObiPaintBrushEditorTool paintTool = (ObiPaintBrushEditorTool)meshBasedEditor.currentTool; + + float[] weights = new float[editor.selectionStatus.Length]; + for (int i = 0; i < weights.Length; i++) + { + if (paintTool.selectionMask && !editor.selectionStatus[i]) + weights[i] = 0; + else + weights[i] = 1; + } + + float[] wireframeWeights = new float[paintTool.paintBrush.weights.Length]; + for (int i = 0; i < wireframeWeights.Length; i++) + wireframeWeights[i] = paintTool.paintBrush.weights[i]; + + meshBasedEditor.DrawGradientMesh(weights, wireframeWeights); + } + else + meshBasedEditor.DrawGradientMesh(); + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeMesh.cs.meta b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeMesh.cs.meta new file mode 100644 index 000000000..19cb4d496 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeMesh.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dbcd302f71d6446cd976f736b365c7ba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeParticles.cs b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeParticles.cs new file mode 100644 index 000000000..4465ebfe3 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeParticles.cs @@ -0,0 +1,61 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public class ObiBlueprintRenderModeParticles : ObiBlueprintRenderMode + { + public override string name + { + get { return "Particles"; } + } + + private Shader shader; + private Material material; + private ParticleImpostorRendering impostorDrawer; + + public ObiBlueprintRenderModeParticles(ObiActorBlueprintEditor editor) :base(editor) + { + impostorDrawer = new ParticleImpostorRendering(); + impostorDrawer.UpdateMeshes(editor.blueprint); + } + + void CreateMaterialIfNeeded() + { + if (shader == null) + { + shader = Shader.Find("Obi/EditorParticles"); + if (shader != null) + { + if (!shader.isSupported) + Debug.LogWarning("Particle rendering shader not suported."); + + if (material == null || material.shader != shader) + { + GameObject.DestroyImmediate(material); + material = new Material(shader); + material.hideFlags = HideFlags.HideAndDontSave; + } + } + } + } + + public override void DrawWithCamera(Camera camera) + { + CreateMaterialIfNeeded(); + foreach (Mesh mesh in impostorDrawer.Meshes) + Graphics.DrawMesh(mesh, Matrix4x4.identity, material, 0, camera); + } + + public override void Refresh() + { + impostorDrawer.UpdateMeshes(editor.blueprint, editor.visible, editor.tint); + } + + public override void OnDestroy() + { + GameObject.DestroyImmediate(material); + impostorDrawer.ClearMeshes(); + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeParticles.cs.meta b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeParticles.cs.meta new file mode 100644 index 000000000..7e91ad77d --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeParticles.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b51ea2becbebe48ba9d77e9d28403f51 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeShapeMatchingConstraints.cs b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeShapeMatchingConstraints.cs new file mode 100644 index 000000000..582243824 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeShapeMatchingConstraints.cs @@ -0,0 +1,54 @@ +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; + +namespace Obi +{ + public class ObiBlueprintRenderModeShapeMatchingConstraints : ObiBlueprintRenderMode + { + public override string name + { + get { return "Shape matching clusters"; } + } + + public ObiBlueprintRenderModeShapeMatchingConstraints(ObiActorBlueprintEditor editor) : base(editor) + { + } + + public override void OnSceneRepaint(SceneView sceneView) + { + + using (new Handles.DrawingScope(Color.cyan, Matrix4x4.identity)) + { + var constraints = editor.blueprint.GetConstraintsByType(Oni.ConstraintType.ShapeMatching) as ObiConstraints; + if (constraints != null) + { + List lines = new List(); + + foreach (var batch in constraints.batches) + { + for (int i = 0; i < batch.activeConstraintCount; ++i) + { + int first = batch.firstIndex[i]; + Vector3 p1 = editor.blueprint.GetParticlePosition(batch.particleIndices[first]); + + for (int j = 1; j < batch.numIndices[i]; ++j) + { + + int index = first + j; + Vector3 p2 = editor.blueprint.GetParticlePosition(batch.particleIndices[index]); + + lines.Add(p1); + lines.Add(p2); + } + + } + } + + Handles.DrawLines(lines.ToArray()); + } + } + } + + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeShapeMatchingConstraints.cs.meta b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeShapeMatchingConstraints.cs.meta new file mode 100644 index 000000000..201059f1d --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeShapeMatchingConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e5ff128cfebee45ffb8266eb3e75522e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeTetherConstraints.cs b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeTetherConstraints.cs new file mode 100644 index 000000000..bd33fafd7 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeTetherConstraints.cs @@ -0,0 +1,43 @@ +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; + +namespace Obi +{ + public class ObiBlueprintRenderModeTetherConstraints : ObiBlueprintRenderMode + { + public override string name + { + get { return "Tether constraints"; } + } + + public ObiBlueprintRenderModeTetherConstraints(ObiActorBlueprintEditor editor) : base(editor) + { + } + + public override void OnSceneRepaint(SceneView sceneView) + { + using (new Handles.DrawingScope(Color.yellow, Matrix4x4.identity)) + { + var constraints = editor.blueprint.GetConstraintsByType(Oni.ConstraintType.Tether) as ObiConstraints; + if (constraints != null) + { + Vector3[] lines = new Vector3[constraints.GetActiveConstraintCount() * 2]; + int lineIndex = 0; + + foreach (var batch in constraints.batches) + { + for (int i = 0; i < batch.activeConstraintCount; ++i) + { + lines[lineIndex++] = editor.blueprint.GetParticlePosition(batch.particleIndices[i * 2]); + lines[lineIndex++] = editor.blueprint.GetParticlePosition(batch.particleIndices[i * 2 + 1]); + } + } + + Handles.DrawLines(lines); + } + } + } + + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeTetherConstraints.cs.meta b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeTetherConstraints.cs.meta new file mode 100644 index 000000000..948860366 --- /dev/null +++ b/Assets/Obi/Editor/Common/Blueprints/RenderModes/ObiBlueprintRenderModeTetherConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 63054cbedb75c4aa7906bf1c24552085 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Collisions.meta b/Assets/Obi/Editor/Common/Collisions.meta new file mode 100644 index 000000000..e3f2bc768 --- /dev/null +++ b/Assets/Obi/Editor/Common/Collisions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5759f1c7beafc485489fb47abffaa269 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Collisions/ObiColliderEditor.cs b/Assets/Obi/Editor/Common/Collisions/ObiColliderEditor.cs new file mode 100644 index 000000000..310bbddb8 --- /dev/null +++ b/Assets/Obi/Editor/Common/Collisions/ObiColliderEditor.cs @@ -0,0 +1,73 @@ +using UnityEditor; +using UnityEngine; + +namespace Obi{ + + [CustomEditor(typeof(ObiColliderBase), true), CanEditMultipleObjects] + public class ObiColliderEditor : Editor + { + + ObiColliderBase collider; + SerializedProperty collisionFilter; + + public void OnEnable() + { + collider = (ObiColliderBase)target; + collisionFilter = serializedObject.FindProperty("filter"); + } + + public override void OnInspectorGUI() + { + + serializedObject.UpdateIfRequiredOrScript(); + + + var rect = EditorGUILayout.GetControlRect(); + var label = EditorGUI.BeginProperty(rect, new GUIContent("Collision category"), collisionFilter); + rect = EditorGUI.PrefixLabel(rect, label); + + EditorGUI.BeginChangeCheck(); + var newCategory = EditorGUI.Popup(rect, ObiUtils.GetCategoryFromFilter(collider.Filter), ObiUtils.categoryNames); + if (EditorGUI.EndChangeCheck()) + { + foreach (ObiColliderBase t in targets) + { + Undo.RecordObject(t, "Set collision category"); + t.Filter = ObiUtils.MakeFilter(ObiUtils.GetMaskFromFilter(t.Filter), newCategory); + PrefabUtility.RecordPrefabInstancePropertyModifications(t); + } + } + EditorGUI.EndProperty(); + + rect = EditorGUILayout.GetControlRect(); + label = EditorGUI.BeginProperty(rect, new GUIContent("Collides with"), collisionFilter); + rect = EditorGUI.PrefixLabel(rect, label); + + EditorGUI.BeginChangeCheck(); + var newMask = EditorGUI.MaskField(rect, ObiUtils.GetMaskFromFilter(collider.Filter), ObiUtils.categoryNames); + if (EditorGUI.EndChangeCheck()) + { + foreach (ObiColliderBase t in targets) + { + Undo.RecordObject(t, "Set collision mask"); + t.Filter = ObiUtils.MakeFilter(newMask, ObiUtils.GetCategoryFromFilter(t.Filter)); + PrefabUtility.RecordPrefabInstancePropertyModifications(t); + } + } + EditorGUI.EndProperty(); + + + DrawPropertiesExcluding(serializedObject, "m_Script", "CollisionMaterial", "filter", "Thickness"); + + // Apply changes to the serializedProperty + if (GUI.changed) + { + serializedObject.ApplyModifiedProperties(); + } + + } + + } +} + + diff --git a/Assets/Obi/Editor/Common/Collisions/ObiColliderEditor.cs.meta b/Assets/Obi/Editor/Common/Collisions/ObiColliderEditor.cs.meta new file mode 100644 index 000000000..0373df8a6 --- /dev/null +++ b/Assets/Obi/Editor/Common/Collisions/ObiColliderEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7c99a0a8358754501b3c8089185b0e6f +timeCreated: 1502034385 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Collisions/ObiDistanceFieldEditor.cs b/Assets/Obi/Editor/Common/Collisions/ObiDistanceFieldEditor.cs new file mode 100644 index 000000000..2e205425e --- /dev/null +++ b/Assets/Obi/Editor/Common/Collisions/ObiDistanceFieldEditor.cs @@ -0,0 +1,178 @@ +using UnityEngine; +using UnityEditor; +using System.IO; +using System.Collections; + +namespace Obi{ + [CustomEditor(typeof(ObiDistanceField))] + public class ObiDistanceFieldEditor : Editor + { + + ObiDistanceField distanceField; + + PreviewHelpers previewHelper; + Vector2 previewDir; + Material previewMaterial; + + Mesh previewMesh; + Texture3D volumeTexture; + + protected IEnumerator routine; + + private void UpdatePreview(){ + + CleanupPreview(); + + if (distanceField.InputMesh != null){ + + previewMesh = CreateMeshForBounds(distanceField.FieldBounds); + previewMesh.hideFlags = HideFlags.HideAndDontSave; + + volumeTexture = distanceField.GetVolumeTexture(64); + volumeTexture.hideFlags = HideFlags.HideAndDontSave; + + previewMaterial = Resources.Load("DistanceFieldPreview"); + previewMaterial.SetTexture("_Volume",volumeTexture); + previewMaterial.SetVector("_AABBMin",-distanceField.FieldBounds.extents); + previewMaterial.SetVector("_AABBMax",distanceField.FieldBounds.extents); + } + + } + + private void CleanupPreview(){ + GameObject.DestroyImmediate(previewMesh); + GameObject.DestroyImmediate(volumeTexture); + } + + public void OnEnable(){ + distanceField = (ObiDistanceField) target; + previewHelper = new PreviewHelpers(); + UpdatePreview(); + } + + public void OnDisable(){ + EditorUtility.ClearProgressBar(); + previewHelper.Cleanup(); + CleanupPreview(); + } + + public override void OnInspectorGUI() { + + serializedObject.UpdateIfRequiredOrScript(); + + Editor.DrawPropertiesExcluding(serializedObject,"m_Script"); + + GUI.enabled = (distanceField.InputMesh != null); + if (GUILayout.Button("Generate")){ + // Start a coroutine job in the editor. + EditorUtility.SetDirty(target); + CoroutineJob job = new CoroutineJob(); + routine = job.Start( distanceField.Generate()); + EditorCoroutine.ShowCoroutineProgressBar("Generating distance field",ref routine); + UpdatePreview(); + EditorGUIUtility.ExitGUI(); + } + GUI.enabled = true; + + int nodeCount = (distanceField.nodes != null ? distanceField.nodes.Count : 0); + float resolution = distanceField.FieldBounds.size.x / distanceField.EffectiveSampleSize; + EditorGUILayout.HelpBox("Nodes: "+ nodeCount+"\n"+ + "Size in memory: "+ (nodeCount * 0.062f).ToString("0.#") +" kB\n"+ + "Compressed to: " + (nodeCount / Mathf.Pow(resolution,3) * 100).ToString("0.##") + "%",MessageType.Info); + + if (GUI.changed) + serializedObject.ApplyModifiedProperties(); + + } + + public override bool HasPreviewGUI(){ + return true; + } + + public override void OnInteractivePreviewGUI(Rect region, GUIStyle background) + { + previewDir = PreviewHelpers.Drag2D(previewDir, region); + + if (Event.current.type != EventType.Repaint || previewMesh == null) + { + return; + } + + Quaternion quaternion = Quaternion.Euler(this.previewDir.y, 0f, 0f) * Quaternion.Euler(0f, this.previewDir.x, 0f) * Quaternion.Euler(0, 120, -20f); + + previewHelper.BeginPreview(region, background); + + Bounds bounds = previewMesh.bounds; + float magnitude = Mathf.Sqrt(bounds.extents.sqrMagnitude); + float num = 4f * magnitude; + previewHelper.m_Camera.transform.position = -Vector3.forward * num; + previewHelper.m_Camera.transform.rotation = Quaternion.identity; + previewHelper.m_Camera.nearClipPlane = num - magnitude * 1.1f; + previewHelper.m_Camera.farClipPlane = num + magnitude * 1.1f; + + // Compute matrix to rotate the mesh around the center of its bounds: + Matrix4x4 matrix = Matrix4x4.TRS(Vector3.zero,quaternion,Vector3.one) * Matrix4x4.TRS(-bounds.center,Quaternion.identity,Vector3.one); + + Graphics.DrawMesh(previewMesh, matrix, previewMaterial,1, previewHelper.m_Camera, 0); + + Texture texture = previewHelper.EndPreview(); + GUI.DrawTexture(region, texture, ScaleMode.StretchToFill, true); + + } + + /** + * Creates a solid mesh from some Bounds. This is used to display the distance field volumetric preview. + */ + private Mesh CreateMeshForBounds(Bounds b){ + Mesh m = new Mesh(); + + /** Indices of bounds corners: + + Y + 2 6 + +------+ + 3 .'| 7 .'| + +---+--+' | + | | | | + | +--+---+ X + | .' 0 | .' 4 + +------+' + Z 1 5 + + */ + Vector3[] vertices = new Vector3[8]{ + b.center + new Vector3(-b.extents.x,-b.extents.y,-b.extents.z), //0 + b.center + new Vector3(-b.extents.x,-b.extents.y,b.extents.z), //1 + b.center + new Vector3(-b.extents.x,b.extents.y,-b.extents.z), //2 + b.center + new Vector3(-b.extents.x,b.extents.y,b.extents.z), //3 + b.center + new Vector3(b.extents.x,-b.extents.y,-b.extents.z), //4 + b.center + new Vector3(b.extents.x,-b.extents.y,b.extents.z), //5 + b.center + new Vector3(b.extents.x,b.extents.y,-b.extents.z), //6 + b.center + new Vector3(b.extents.x,b.extents.y,b.extents.z) //7 + }; + int[] triangles = new int[36]{ + 2,3,7, + 6,2,7, + + 7,5,4, + 6,7,4, + + 3,1,5, + 7,3,5, + + 2,0,3, + 3,0,1, + + 6,4,2, + 2,4,0, + + 4,5,0, + 5,1,0 + }; + + m.vertices = vertices; + m.triangles = triangles; + return m; + } + } +} diff --git a/Assets/Obi/Editor/Common/Collisions/ObiDistanceFieldEditor.cs.meta b/Assets/Obi/Editor/Common/Collisions/ObiDistanceFieldEditor.cs.meta new file mode 100644 index 000000000..60e8555ce --- /dev/null +++ b/Assets/Obi/Editor/Common/Collisions/ObiDistanceFieldEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5d47dd3a8215841aca1fe5b272cb24f2 +timeCreated: 1507046737 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Constraints.meta b/Assets/Obi/Editor/Common/Constraints.meta new file mode 100644 index 000000000..8cfd63c92 --- /dev/null +++ b/Assets/Obi/Editor/Common/Constraints.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cf28ba8ff6a7140e6a7e50a5030ff3e7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Constraints/ObiConstraintParametersDrawer.cs b/Assets/Obi/Editor/Common/Constraints/ObiConstraintParametersDrawer.cs new file mode 100644 index 000000000..65fb7e83f --- /dev/null +++ b/Assets/Obi/Editor/Common/Constraints/ObiConstraintParametersDrawer.cs @@ -0,0 +1,63 @@ +using UnityEngine; +using UnityEditor; +using System; + +namespace Obi +{ + + [CustomPropertyDrawer(typeof(Oni.ConstraintParameters))] + public class ObiConstraintParametersDrawer : PropertyDrawer + { + public static float padding = 4; + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + float propHeight = EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + + EditorGUI.BeginProperty(position, label, property); + + SerializedProperty enabled = property.FindPropertyRelative("enabled"); + Rect contRect = new Rect(position.x+padding, position.y+padding, position.width-padding*2, propHeight); + + // Draw a box around the parameters: + GUI.enabled = enabled.boolValue; + GUI.Box(position,"",ObiEditorUtils.GetToggleablePropertyGroupStyle()); + GUI.enabled = true; + + // Draw main constraint toggle: + enabled.boolValue = EditorGUI.ToggleLeft(contRect, label.text, enabled.boolValue, EditorStyles.boldLabel); + + if (enabled.boolValue){ + + Rect evalRect = new Rect(position.x+padding, position.y+propHeight+padding, position.width-padding*2, propHeight); + Rect iterRect = new Rect(position.x+padding, position.y+propHeight*2+padding, position.width-padding*2, propHeight); + Rect sorRect = new Rect(position.x+padding, position.y+propHeight*3+padding, position.width-padding*2, EditorGUIUtility.singleLineHeight); + + EditorGUI.indentLevel++; + Rect evalCtrl = EditorGUI.PrefixLabel(evalRect,new GUIContent("Evaluation")); + EditorGUI.PropertyField(evalCtrl, property.FindPropertyRelative("evaluationOrder"),GUIContent.none); + + Rect iterCtrl = EditorGUI.PrefixLabel(iterRect,new GUIContent("Iterations")); + EditorGUI.PropertyField(iterCtrl, property.FindPropertyRelative("iterations"),GUIContent.none); + + Rect sorCtrl = EditorGUI.PrefixLabel(sorRect,new GUIContent("Relaxation")); + EditorGUI.PropertyField(sorCtrl, property.FindPropertyRelative("SORFactor"),GUIContent.none); + EditorGUI.indentLevel--; + + } + + EditorGUI.EndProperty(); + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + SerializedProperty enabled = property.FindPropertyRelative("enabled"); + if (enabled.boolValue) + return EditorGUIUtility.singleLineHeight*4 + EditorGUIUtility.standardVerticalSpacing*3 + padding*2; + else + return EditorGUIUtility.singleLineHeight + padding*2; + } + } + +} + diff --git a/Assets/Obi/Editor/Common/Constraints/ObiConstraintParametersDrawer.cs.meta b/Assets/Obi/Editor/Common/Constraints/ObiConstraintParametersDrawer.cs.meta new file mode 100644 index 000000000..ec24a9697 --- /dev/null +++ b/Assets/Obi/Editor/Common/Constraints/ObiConstraintParametersDrawer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bc70cbc4838a4467687180e4d555b069 +timeCreated: 1515057027 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/ObiAboutWindow.cs b/Assets/Obi/Editor/Common/ObiAboutWindow.cs new file mode 100644 index 000000000..e7b22a08c --- /dev/null +++ b/Assets/Obi/Editor/Common/ObiAboutWindow.cs @@ -0,0 +1,73 @@ + +using System; +using UnityEditor; +using UnityEngine; + +namespace Obi +{ + public class ObiAboutWindow : EditorWindow + { + + [MenuItem ("Window/Obi/About")] + public static void Init() + { + ObiAboutWindow window = (ObiAboutWindow)EditorWindow.GetWindow(typeof(ObiAboutWindow),true,"Welcome to Obi!"); + window.position = new Rect(Screen.width / 2, Screen.height / 2, 380, 300); + window.maxSize = window.minSize = new Vector2(380,300); + window.ShowPopup(); + } + + void OnGUI() + { + // Draw logo and copyright notice: + EditorGUILayout.BeginHorizontal(); + + GUILayout.Label(Resources.Load("obi_editor_logo")); + + EditorGUILayout.BeginVertical(GUILayout.MaxHeight(119.0f/EditorGUIUtility.pixelsPerPoint)); + + GUILayout.FlexibleSpace(); + + Color oldColor = GUI.contentColor; + GUI.contentColor = Color.black; + GUILayout.Label("Obi - Unified particle physics",EditorStyles.centeredGreyMiniLabel); + GUI.contentColor = oldColor; + + GUILayout.Label("© Copyright Virtual Method, 2015-2016.\nAll rights reserved.",EditorStyles.centeredGreyMiniLabel); + + GUILayout.FlexibleSpace(); + + EditorGUILayout.EndVertical(); + + EditorGUILayout.EndHorizontal(); + + DrawAboutGUI(); + + } + + void DrawAboutGUI(){ + + GUILayout.FlexibleSpace(); + + EditorGUILayout.LabelField("Programming:",EditorStyles.centeredGreyMiniLabel); + EditorGUILayout.LabelField("José María Méndez González",EditorStyles.centeredGreyMiniLabel); + + EditorGUILayout.LabelField("Additional resources:",EditorStyles.centeredGreyMiniLabel); + EditorGUILayout.LabelField("Lidia Martínez Prado",EditorStyles.centeredGreyMiniLabel); + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Manual",EditorStyles.toolbarButton)) + Application.OpenURL("http://obi.virtualmethodstudio.com/tutorials/"); + if (GUILayout.Button("API docs",EditorStyles.toolbarButton)) + Application.OpenURL("http://obi.virtualmethodstudio.com/docs/"); + if (GUILayout.Button("visit www.virtualmethodstudio.com",EditorStyles.toolbarButton)) + Application.OpenURL("http://www.virtualmethodstudio.com"); + if (GUILayout.Button("Create preferences file", EditorStyles.toolbarButton)) + ObiEditorSettings.GetOrCreateSettings(); + + } + } +} + + diff --git a/Assets/Obi/Editor/Common/ObiAboutWindow.cs.meta b/Assets/Obi/Editor/Common/ObiAboutWindow.cs.meta new file mode 100644 index 000000000..6166f573a --- /dev/null +++ b/Assets/Obi/Editor/Common/ObiAboutWindow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c6764c51caa004a25ab49afc9865d2b3 +timeCreated: 1498062614 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/ObiEditorSettings.cs b/Assets/Obi/Editor/Common/ObiEditorSettings.cs new file mode 100644 index 000000000..94d9ce99d --- /dev/null +++ b/Assets/Obi/Editor/Common/ObiEditorSettings.cs @@ -0,0 +1,83 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; + +namespace Obi +{ + class ObiEditorSettings : ScriptableObject + { + public const string m_ObiEditorSettingsPath = "Assets/ObiEditorSettings.asset"; + + [SerializeField] private Color m_ParticleBrush; + [SerializeField] private Color m_BrushWireframe; + [SerializeField] private Color m_Particle; + [SerializeField] private Color m_SelectedParticle; + [SerializeField] private Color m_ActiveParticle; + [SerializeField] private Gradient m_PropertyGradient; + + public Color brushColor + { + get { return m_ParticleBrush; } + } + public Color brushWireframeColor + { + get { return m_BrushWireframe; } + } + public Color particleColor + { + get { return m_Particle; } + } + public Color selectedParticleColor + { + get { return m_SelectedParticle; } + } + public Color activeParticleColor + { + get { return m_ActiveParticle; } + } + public Gradient propertyGradient + { + get { return m_PropertyGradient; } + } + + internal static ObiEditorSettings GetOrCreateSettings() + { + var settings = AssetDatabase.LoadAssetAtPath(m_ObiEditorSettingsPath); + if (settings == null) + { + settings = ScriptableObject.CreateInstance(); + settings.m_ParticleBrush = new Color32(243, 77, 43, 255); + settings.m_BrushWireframe = new Color32(0, 0, 0, 128); + settings.m_Particle = new Color32(240, 240, 240, 255); + settings.m_SelectedParticle = new Color32(243, 77, 43, 255); + settings.m_ActiveParticle = new Color32(243, 243, 43, 255); + settings.m_PropertyGradient = new Gradient(); + + // Populate the color keys at the relative time 0 and 1 (0 and 100%) + var colorKey = new GradientColorKey[2]; + colorKey[0].color = Color.grey * 0.7f; + colorKey[0].time = 0.0f; + colorKey[1].color = Color.white; + colorKey[1].time = 1.0f; + + // Populate the alpha keys at relative time 0 and 1 (0 and 100%) + var alphaKey = new GradientAlphaKey[2]; + alphaKey[0].alpha = 1.0f; + alphaKey[0].time = 0.0f; + alphaKey[1].alpha = 1.0f; + alphaKey[1].time = 1.0f; + + settings.m_PropertyGradient.SetKeys(colorKey, alphaKey); + + AssetDatabase.CreateAsset(settings, m_ObiEditorSettingsPath); + AssetDatabase.SaveAssets(); + } + return settings; + } + + internal static SerializedObject GetSerializedSettings() + { + return new SerializedObject(GetOrCreateSettings()); + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/ObiEditorSettings.cs.meta b/Assets/Obi/Editor/Common/ObiEditorSettings.cs.meta new file mode 100644 index 000000000..ba5f33789 --- /dev/null +++ b/Assets/Obi/Editor/Common/ObiEditorSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7971633b9741349f3add282a07b0d69b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/ObiOniInitialize.cs b/Assets/Obi/Editor/Common/ObiOniInitialize.cs new file mode 100644 index 000000000..49c1e0fb0 --- /dev/null +++ b/Assets/Obi/Editor/Common/ObiOniInitialize.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using UnityEditor; + +namespace Obi +{ + [InitializeOnLoad] + public class ObiOniInitialize + { + private static BuildTargetGroup[] supportedBuildTargetGroups = + { + BuildTargetGroup.Standalone, + BuildTargetGroup.Android, + BuildTargetGroup.iOS + }; + + static ObiOniInitialize() + { + + foreach(var group in supportedBuildTargetGroups) + { + var defines = GetDefinesList(group); + if (!defines.Contains("OBI_ONI_SUPPORTED")) + { + defines.Add("OBI_ONI_SUPPORTED"); + PlayerSettings.SetScriptingDefineSymbolsForGroup(group, string.Join(";", defines.ToArray())); + } + } + } + + private static List GetDefinesList(BuildTargetGroup group) + { + return new List(PlayerSettings.GetScriptingDefineSymbolsForGroup(group).Split(';')); + } + } +} diff --git a/Assets/Obi/Editor/Common/ObiOniInitialize.cs.meta b/Assets/Obi/Editor/Common/ObiOniInitialize.cs.meta new file mode 100644 index 000000000..6551e37e3 --- /dev/null +++ b/Assets/Obi/Editor/Common/ObiOniInitialize.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e97d151316d5f4d16ac5ae6e68acccb6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/ObiSettingsProvider.cs b/Assets/Obi/Editor/Common/ObiSettingsProvider.cs new file mode 100644 index 000000000..168c3046e --- /dev/null +++ b/Assets/Obi/Editor/Common/ObiSettingsProvider.cs @@ -0,0 +1,75 @@ +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; + +namespace Obi +{ + class ObiSettingsProvider : SettingsProvider + { + private SerializedObject m_ObiSettings; + + class Styles + { + public static GUIContent particleBrush = new GUIContent("Brush"); + public static GUIContent brushWireframe = new GUIContent("Brush wireframe"); + public static GUIContent particle = new GUIContent("Particle"); + public static GUIContent selectedParticle = new GUIContent("Selected particle"); + public static GUIContent propertyGradient = new GUIContent("Property gradient"); + } + + const string m_ObiEditorSettingsPath = "Assets/ObiEditorSettings.asset"; + public ObiSettingsProvider(string path, SettingsScope scope = SettingsScope.User) + : base(path, scope) { } + + public static bool IsSettingsAvailable() + { + return File.Exists(m_ObiEditorSettingsPath); + } + +#if UNITY_2019_1_OR_NEWER + public override void OnActivate(string searchContext, UnityEngine.UIElements.VisualElement rootElement) +#else + public override void OnActivate(string searchContext, UnityEngine.Experimental.UIElements.VisualElement rootElement) +#endif + { + // This function is called when the user clicks on the MyCustom element in the Settings window. + m_ObiSettings = ObiEditorSettings.GetSerializedSettings(); + } + + public override void OnDeactivate() + { + base.OnDeactivate(); + + if (m_ObiSettings != null) + m_ObiSettings.ApplyModifiedProperties(); + } + + public override void OnGUI(string searchContext) + { + EditorGUILayout.LabelField("Colors", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(m_ObiSettings.FindProperty("m_ParticleBrush"), Styles.particleBrush); + EditorGUILayout.PropertyField(m_ObiSettings.FindProperty("m_BrushWireframe"),Styles.brushWireframe); + EditorGUILayout.PropertyField(m_ObiSettings.FindProperty("m_Particle"),Styles.particle); + EditorGUILayout.PropertyField(m_ObiSettings.FindProperty("m_SelectedParticle"),Styles.selectedParticle); + EditorGUILayout.PropertyField(m_ObiSettings.FindProperty("m_PropertyGradient"), Styles.propertyGradient); + } + + // Register the SettingsProvider + [SettingsProvider] + public static SettingsProvider CreateMyCustomSettingsProvider() + { + if (IsSettingsAvailable()) + { + var provider = new ObiSettingsProvider("Preferences/Obi", SettingsScope.User); + + // Automatically extract all keywords from the Styles. + provider.keywords = GetSearchKeywordsFromGUIContentProperties(); + return provider; + } + + // Settings Asset doesn't exist yet; no need to display anything in the Settings window. + return null; + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Common/ObiSettingsProvider.cs.meta b/Assets/Obi/Editor/Common/ObiSettingsProvider.cs.meta new file mode 100644 index 000000000..7c37da331 --- /dev/null +++ b/Assets/Obi/Editor/Common/ObiSettingsProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 19ac664f594284b3c92ddb354155d814 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Rendering.meta b/Assets/Obi/Editor/Common/Rendering.meta new file mode 100644 index 000000000..07c70140c --- /dev/null +++ b/Assets/Obi/Editor/Common/Rendering.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 60a71308789c34bb8a53415b380a6706 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Rendering/ObiParticleRendererEditor.cs b/Assets/Obi/Editor/Common/Rendering/ObiParticleRendererEditor.cs new file mode 100644 index 000000000..310ac05e3 --- /dev/null +++ b/Assets/Obi/Editor/Common/Rendering/ObiParticleRendererEditor.cs @@ -0,0 +1,32 @@ +using UnityEditor; +using UnityEngine; + +namespace Obi{ + + /** + * Custom inspector for ObiParticleRenderer component. + */ + + [CustomEditor(typeof(ObiParticleRenderer)), CanEditMultipleObjects] + public class ObiParticleHandleEditor : Editor + { + + public override void OnInspectorGUI() { + + serializedObject.UpdateIfRequiredOrScript(); + + Editor.DrawPropertiesExcluding(serializedObject,"m_Script"); + + // Apply changes to the serializedProperty + if (GUI.changed){ + + serializedObject.ApplyModifiedProperties(); + + } + + } + + } + +} + diff --git a/Assets/Obi/Editor/Common/Rendering/ObiParticleRendererEditor.cs.meta b/Assets/Obi/Editor/Common/Rendering/ObiParticleRendererEditor.cs.meta new file mode 100644 index 000000000..e249bdb53 --- /dev/null +++ b/Assets/Obi/Editor/Common/Rendering/ObiParticleRendererEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2a7e6fcc51ab349e687aa6ca5bdf6739 +timeCreated: 1463090765 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Solver.meta b/Assets/Obi/Editor/Common/Solver.meta new file mode 100644 index 000000000..0d6cdda63 --- /dev/null +++ b/Assets/Obi/Editor/Common/Solver.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d82f874c48e764fb8b49f1767f76a94a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Solver/ObiSolverEditor.cs b/Assets/Obi/Editor/Common/Solver/ObiSolverEditor.cs new file mode 100644 index 000000000..1c9e190b7 --- /dev/null +++ b/Assets/Obi/Editor/Common/Solver/ObiSolverEditor.cs @@ -0,0 +1,254 @@ +using UnityEditor; +using UnityEngine; +using UnityEditorInternal; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + + /** + * Custom inspector for ObiSolver components. + * Allows particle selection and constraint edition. + * + * Selection: + * + * - To select a particle, left-click on it. + * - You can select multiple particles by holding shift while clicking. + * - To deselect all particles, click anywhere on the object except a particle. + * + * Constraints: + * + * - To edit particle constraints, select the particles you wish to edit. + * - Constraints affecting any of the selected particles will appear in the inspector. + * - To add a new pin constraint to the selected particle(s), click on "Add Pin Constraint". + * + */ + [CustomEditor(typeof(ObiSolver)), CanEditMultipleObjects] + public class ObiSolverEditor : Editor + { + + [MenuItem("GameObject/3D Object/Obi/Obi Solver", false, 100)] + static void CreateObiSolver(MenuCommand menuCommand) + { + GameObject go = ObiEditorUtils.CreateNewSolver(); + GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject); + Selection.activeGameObject = go; + } + + ObiSolver solver; + + SerializedProperty backend; + SerializedProperty simulateWhenInvisible; + SerializedProperty parameters; + SerializedProperty gravity; + SerializedProperty gravitySpace; + SerializedProperty worldLinearInertiaScale; + SerializedProperty worldAngularInertiaScale; + + SerializedProperty distanceConstraintParameters; + SerializedProperty bendingConstraintParameters; + SerializedProperty particleCollisionConstraintParameters; + SerializedProperty particleFrictionConstraintParameters; + SerializedProperty collisionConstraintParameters; + SerializedProperty frictionConstraintParameters; + SerializedProperty skinConstraintParameters; + SerializedProperty volumeConstraintParameters; + SerializedProperty shapeMatchingConstraintParameters; + SerializedProperty tetherConstraintParameters; + SerializedProperty pinConstraintParameters; + SerializedProperty stitchConstraintParameters; + SerializedProperty densityConstraintParameters; + SerializedProperty stretchShearConstraintParameters; + SerializedProperty bendTwistConstraintParameters; + SerializedProperty chainConstraintParameters; + + BooleanPreference solverFoldout; + BooleanPreference simulationFoldout; + BooleanPreference collisionsFoldout; + BooleanPreference constraintsFoldout; + + GUIContent constraintLabelContent; + + public void OnEnable() + { + solver = (ObiSolver)target; + constraintLabelContent = new GUIContent(); + + solverFoldout = new BooleanPreference($"{target.GetType()}.solverFoldout", true); + simulationFoldout = new BooleanPreference($"{target.GetType()}.simulationFoldout", false); + collisionsFoldout = new BooleanPreference($"{target.GetType()}.collisionsFoldout", false); + constraintsFoldout = new BooleanPreference($"{target.GetType()}.constraintsFoldout", false); + + backend = serializedObject.FindProperty("m_Backend"); + simulateWhenInvisible = serializedObject.FindProperty("simulateWhenInvisible"); + parameters = serializedObject.FindProperty("parameters"); + gravity = serializedObject.FindProperty("gravity"); + gravitySpace = serializedObject.FindProperty("gravitySpace"); + worldLinearInertiaScale = serializedObject.FindProperty("worldLinearInertiaScale"); + worldAngularInertiaScale = serializedObject.FindProperty("worldAngularInertiaScale"); + + distanceConstraintParameters = serializedObject.FindProperty("distanceConstraintParameters"); + bendingConstraintParameters = serializedObject.FindProperty("bendingConstraintParameters"); + particleCollisionConstraintParameters = serializedObject.FindProperty("particleCollisionConstraintParameters"); + particleFrictionConstraintParameters = serializedObject.FindProperty("particleFrictionConstraintParameters"); + collisionConstraintParameters = serializedObject.FindProperty("collisionConstraintParameters"); + frictionConstraintParameters = serializedObject.FindProperty("frictionConstraintParameters"); + skinConstraintParameters = serializedObject.FindProperty("skinConstraintParameters"); + volumeConstraintParameters = serializedObject.FindProperty("volumeConstraintParameters"); + shapeMatchingConstraintParameters = serializedObject.FindProperty("shapeMatchingConstraintParameters"); + tetherConstraintParameters = serializedObject.FindProperty("tetherConstraintParameters"); + pinConstraintParameters = serializedObject.FindProperty("pinConstraintParameters"); + stitchConstraintParameters = serializedObject.FindProperty("stitchConstraintParameters"); + densityConstraintParameters = serializedObject.FindProperty("densityConstraintParameters"); + stretchShearConstraintParameters = serializedObject.FindProperty("stretchShearConstraintParameters"); + bendTwistConstraintParameters = serializedObject.FindProperty("bendTwistConstraintParameters"); + chainConstraintParameters = serializedObject.FindProperty("chainConstraintParameters"); + } + + public override void OnInspectorGUI() + { + + serializedObject.UpdateIfRequiredOrScript(); + EditorGUILayout.HelpBox("Particles:" + solver.allocParticleCount +"\n"+ + "Simplices:" + solver.simplexCounts.simplexCount+"\n" + + "Contacts:" + solver.contactCount + "\n" + + "Simplex contacts:" + solver.particleContactCount, MessageType.None); + + solverFoldout.value = EditorGUILayout.BeginFoldoutHeaderGroup(solverFoldout, "Solver settings"); + if (solverFoldout) + { + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(backend); + +#if !(OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) + if (backend.enumValueIndex == (int)ObiSolver.BackendType.Burst) + EditorGUILayout.HelpBox("The Burst backend depends on the following packages: Mathematics, Collections, Jobs and Burst. The default backend (Oni) will be used instead, if possible.", MessageType.Warning); +#endif +#if !(OBI_ONI_SUPPORTED) + if (backend.enumValueIndex == (int)ObiSolver.BackendType.Oni) + EditorGUILayout.HelpBox("The Oni backend is not compatible with the target platform. Please switch to a compatible platform, or use the Burst backend instead.", MessageType.Warning); +#endif + + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + foreach (var t in targets) + (t as ObiSolver).UpdateBackend(); + } + + + EditorGUILayout.PropertyField(parameters.FindPropertyRelative("mode")); + EditorGUILayout.PropertyField(parameters.FindPropertyRelative("interpolation")); + } + EditorGUILayout.EndFoldoutHeaderGroup(); + + simulationFoldout.value = EditorGUILayout.BeginFoldoutHeaderGroup(simulationFoldout, "Simulation settings"); + if (simulationFoldout) + { + EditorGUILayout.PropertyField(gravitySpace); + EditorGUILayout.PropertyField(gravity); + EditorGUILayout.PropertyField(parameters.FindPropertyRelative("sleepThreshold")); + EditorGUILayout.PropertyField(parameters.FindPropertyRelative("damping")); + EditorGUILayout.PropertyField(worldLinearInertiaScale); + EditorGUILayout.PropertyField(worldAngularInertiaScale); + EditorGUILayout.PropertyField(parameters.FindPropertyRelative("maxAnisotropy")); + EditorGUILayout.PropertyField(simulateWhenInvisible); + } + EditorGUILayout.EndFoldoutHeaderGroup(); + + collisionsFoldout.value = EditorGUILayout.BeginFoldoutHeaderGroup(collisionsFoldout, "Collision settings"); + if (collisionsFoldout) + { + EditorGUILayout.PropertyField(parameters.FindPropertyRelative("continuousCollisionDetection")); + EditorGUILayout.PropertyField(parameters.FindPropertyRelative("collisionMargin")); + EditorGUILayout.PropertyField(parameters.FindPropertyRelative("maxDepenetration")); + EditorGUILayout.PropertyField(parameters.FindPropertyRelative("shockPropagation")); + EditorGUILayout.PropertyField(parameters.FindPropertyRelative("surfaceCollisionIterations")); + EditorGUILayout.PropertyField(parameters.FindPropertyRelative("surfaceCollisionTolerance")); + } + EditorGUILayout.EndFoldoutHeaderGroup(); + + constraintsFoldout.value = EditorGUILayout.BeginFoldoutHeaderGroup(constraintsFoldout, "Constraint settings"); + if (constraintsFoldout) + { + constraintLabelContent.text = "Distance"; + EditorGUILayout.PropertyField(distanceConstraintParameters, constraintLabelContent); + + constraintLabelContent.text = "Bending"; + EditorGUILayout.PropertyField(bendingConstraintParameters, constraintLabelContent); + + constraintLabelContent.text = "Particle collision / Queries"; + EditorGUILayout.PropertyField(particleCollisionConstraintParameters, constraintLabelContent); + + constraintLabelContent.text = "Particle friction"; + EditorGUILayout.PropertyField(particleFrictionConstraintParameters, constraintLabelContent); + + constraintLabelContent.text = "Collision"; + EditorGUILayout.PropertyField(collisionConstraintParameters, constraintLabelContent); + + constraintLabelContent.text = "Friction"; + EditorGUILayout.PropertyField(frictionConstraintParameters, constraintLabelContent); + + constraintLabelContent.text = "Skin"; + EditorGUILayout.PropertyField(skinConstraintParameters, constraintLabelContent); + + constraintLabelContent.text = "Volume"; + EditorGUILayout.PropertyField(volumeConstraintParameters, constraintLabelContent); + + constraintLabelContent.text = "Shape matching"; + EditorGUILayout.PropertyField(shapeMatchingConstraintParameters, constraintLabelContent); + + constraintLabelContent.text = "Tether"; + EditorGUILayout.PropertyField(tetherConstraintParameters, constraintLabelContent); + + constraintLabelContent.text = "Pin"; + EditorGUILayout.PropertyField(pinConstraintParameters, constraintLabelContent); + + constraintLabelContent.text = "Stitch"; + EditorGUILayout.PropertyField(stitchConstraintParameters, constraintLabelContent); + + constraintLabelContent.text = "Density"; + EditorGUILayout.PropertyField(densityConstraintParameters, constraintLabelContent); + + constraintLabelContent.text = "Stretch & Shear"; + EditorGUILayout.PropertyField(stretchShearConstraintParameters, constraintLabelContent); + + constraintLabelContent.text = "Bend & Twist"; + EditorGUILayout.PropertyField(bendTwistConstraintParameters, constraintLabelContent); + + constraintLabelContent.text = "Chain"; + EditorGUILayout.PropertyField(chainConstraintParameters, constraintLabelContent); + } + EditorGUILayout.EndFoldoutHeaderGroup(); + + // Apply changes to the serializedProperty + if (GUI.changed) + { + + serializedObject.ApplyModifiedProperties(); + solver.PushSolverParameters(); + + } + + } + + [DrawGizmo(GizmoType.InSelectionHierarchy | GizmoType.Selected)] + static void DrawGizmoForSolver(ObiSolver solver, GizmoType gizmoType) + { + + if ((gizmoType & GizmoType.InSelectionHierarchy) != 0) + { + + Gizmos.color = new Color(1, 1, 1, 0.5f); + Bounds bounds = solver.Bounds; + Gizmos.DrawWireCube(bounds.center, bounds.size); + } + + } + + } +} + + diff --git a/Assets/Obi/Editor/Common/Solver/ObiSolverEditor.cs.meta b/Assets/Obi/Editor/Common/Solver/ObiSolverEditor.cs.meta new file mode 100644 index 000000000..07e52a910 --- /dev/null +++ b/Assets/Obi/Editor/Common/Solver/ObiSolverEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d776094922a7647ccb5194d08e93ceaf +timeCreated: 1444024856 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Utils.meta b/Assets/Obi/Editor/Common/Utils.meta new file mode 100644 index 000000000..b00896037 --- /dev/null +++ b/Assets/Obi/Editor/Common/Utils.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b7a80ed0e578946aaad351df0313281a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Utils/BooleanPreference.cs b/Assets/Obi/Editor/Common/Utils/BooleanPreference.cs new file mode 100644 index 000000000..d74b8dc46 --- /dev/null +++ b/Assets/Obi/Editor/Common/Utils/BooleanPreference.cs @@ -0,0 +1,46 @@ + +using UnityEditor; + +namespace Obi +{ + public class BooleanPreference + { + bool m_Value; + string m_Name; + bool m_Loaded; + + public BooleanPreference(string name, bool value) + { + m_Name = name; + m_Loaded = false; + m_Value = value; + } + + private void Load() + { + if (m_Loaded) + return; + + m_Loaded = true; + m_Value = EditorPrefs.GetBool(m_Name, m_Value); + } + + public bool value + { + get { Load(); return m_Value; } + set + { + Load(); + if (m_Value == value) + return; + m_Value = value; + EditorPrefs.SetBool(m_Name, value); + } + } + + public static implicit operator bool(BooleanPreference s) + { + return s.value; + } + } +} diff --git a/Assets/Obi/Editor/Common/Utils/BooleanPreference.cs.meta b/Assets/Obi/Editor/Common/Utils/BooleanPreference.cs.meta new file mode 100644 index 000000000..f74e188c6 --- /dev/null +++ b/Assets/Obi/Editor/Common/Utils/BooleanPreference.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4af60554659c94226a5b3cf0b5987a5f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Utils/ObiEditorUtils.cs b/Assets/Obi/Editor/Common/Utils/ObiEditorUtils.cs new file mode 100644 index 000000000..c3e8d2b15 --- /dev/null +++ b/Assets/Obi/Editor/Common/Utils/ObiEditorUtils.cs @@ -0,0 +1,236 @@ +using System; +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEditor; +using UnityEditor.SceneManagement; +using System.IO; + +namespace Obi{ + + public static class ObiEditorUtils + { + static GUIStyle separatorLine; + static GUIStyle toggleablePropertyGroup; + static GUIStyle boldToggle; + + public static GUIStyle GetSeparatorLineStyle() + { + if (separatorLine == null) + { + separatorLine = new GUIStyle(EditorGUIUtility.GetBuiltinSkin(EditorSkin.Scene).box); + separatorLine.normal.background = Resources.Load("SeparatorLine"); + separatorLine.border = new RectOffset(3, 3, 0, 0); + separatorLine.padding = new RectOffset(0, 0, 0, 0); + separatorLine.margin = new RectOffset(0, 0, 0, 0); + separatorLine.fixedHeight = 3; + separatorLine.stretchWidth = true; + } + return separatorLine; + } + + public static GUIStyle GetToggleablePropertyGroupStyle() + { + if (toggleablePropertyGroup == null) + { + toggleablePropertyGroup = new GUIStyle(); + toggleablePropertyGroup.normal.background = Resources.Load("ToggleableGroupBg"); + toggleablePropertyGroup.border = new RectOffset(3, 3, 3, 3); + toggleablePropertyGroup.padding = new RectOffset(0, 0, 0, 0); + toggleablePropertyGroup.margin = new RectOffset(0, 0, 3, 3); + } + return toggleablePropertyGroup; + } + + public static GUIStyle GetBoldToggleStyle() + { + if (boldToggle == null) + { + boldToggle = new GUIStyle(EditorStyles.toggle); + boldToggle.fontStyle = FontStyle.Bold; + } + return boldToggle; + } + + public static void SaveMesh (Mesh mesh, string title, string name, bool makeNewInstance = true, bool optimizeMesh = true) { + + string path = EditorUtility.SaveFilePanel(title, "Assets/", name, "asset"); + if (string.IsNullOrEmpty(path)) return; + + path = FileUtil.GetProjectRelativePath(path); + + Mesh meshToSave = (makeNewInstance) ? GameObject.Instantiate(mesh) as Mesh : mesh; + + if (optimizeMesh) + MeshUtility.Optimize(meshToSave); + + AssetDatabase.CreateAsset(meshToSave, path); + AssetDatabase.SaveAssets(); + } + + public static void PlaceActorRoot(GameObject element, MenuCommand menuCommand) + { + GameObject parent = menuCommand.context as GameObject; + + if (parent == null) + { + parent = GetOrCreateSolverObject(); + } + + if (parent.GetComponentsInParent(true).Length == 0) + { + // Create solver under context GameObject, + // and make that be the parent which actor is added under. + GameObject solver = CreateNewSolver(); + solver.transform.SetParent(parent.transform, false); + parent = solver; + } + + // The element needs to be already in its destination scene when the + // RegisterCreatedObjectUndo is performed; otherwise the scene it was created in is dirtied. + SceneManager.MoveGameObjectToScene(element, parent.scene); + + Undo.RegisterCreatedObjectUndo(element, "Create " + element.name); + + if (element.transform.parent == null) + Undo.SetTransformParent(element.transform, parent.transform, "Parent " + element.name); + + GameObjectUtility.EnsureUniqueNameForSibling(element); + + // We have to fix up the undo name since the name of the object was only known after reparenting it. + Undo.SetCurrentGroupName("Create " + element.name); + + GameObjectUtility.SetParentAndAlign(element, parent); + Selection.activeGameObject = element; + } + + // Helper function that returns a Solver GameObject; preferably a parent of the selection, or other existing Canvas. + private static GameObject GetOrCreateSolverObject() + { + GameObject selectedGo = Selection.activeGameObject; + + // Try to find a gameobject that is the selected GO or one if its parents. + ObiSolver solver = (selectedGo != null) ? selectedGo.GetComponentInParent() : null; + if (IsValidSolver(solver)) + return solver.gameObject; + + // No solver in selection or its parents? Then use any valid solver. + // We have to find all loaded solvers, not just the ones in main scenes. + ObiSolver[] solverArray = StageUtility.GetCurrentStageHandle().FindComponentsOfType(); + for (int i = 0; i < solverArray.Length; i++) + if (IsValidSolver(solverArray[i])) + return solverArray[i].gameObject; + + // No solver in the scene at all? Then create a new one. + return CreateNewSolver(); + } + + public static GameObject CreateNewSolver() + { + // Root for the actors. + var root = new GameObject("Obi Solver"); + ObiSolver solver = root.AddComponent(); + + // Try to find a fixed updater in the scene (though other kinds of updaters can exist, updating in FixedUpdate is the preferred option). + ObiFixedUpdater updater = StageUtility.GetCurrentStageHandle().FindComponentOfType(); + // If we could not find an fixed updater in the scene, add one to the solver object. + if (updater == null) + updater = root.AddComponent(); + + // Add the solver to the updater: + updater.solvers.Add(solver); + + // Works for all stages. + StageUtility.PlaceGameObjectInCurrentStage(root); + Undo.RegisterCreatedObjectUndo(root, "Create " + root.name); + + return root; + } + + static bool IsValidSolver(ObiSolver solver) + { + if (solver == null || !solver.gameObject.activeInHierarchy) + return false; + + if (EditorUtility.IsPersistent(solver) || (solver.hideFlags & HideFlags.HideInHierarchy) != 0) + return false; + + if (StageUtility.GetStageHandle(solver.gameObject) != StageUtility.GetCurrentStageHandle()) + return false; + + return true; + } + + public static void DoPropertyGroup(GUIContent content, System.Action action) + { + EditorGUILayout.BeginVertical(GetToggleablePropertyGroupStyle()); + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(content, EditorStyles.boldLabel); + EditorGUILayout.EndHorizontal(); + + if (action != null) + { + EditorGUI.indentLevel++; + action(); + EditorGUI.indentLevel--; + } + } + EditorGUILayout.EndVertical(); + } + + public static void DoToggleablePropertyGroup(SerializedProperty enabledProperty, GUIContent content, System.Action action) + { + bool enabled = GUI.enabled; + GUI.enabled &= enabledProperty.boolValue; + EditorGUILayout.BeginVertical(GetToggleablePropertyGroupStyle()); + GUI.enabled = enabled; + { + EditorGUILayout.BeginHorizontal(); + enabledProperty.boolValue = EditorGUILayout.ToggleLeft(content,enabledProperty.boolValue,EditorStyles.boldLabel); + EditorGUILayout.EndHorizontal(); + + if (enabledProperty.boolValue && action != null) + { + EditorGUI.indentLevel++; + action(); + EditorGUI.indentLevel--; + } + } + EditorGUILayout.EndVertical(); + } + + public static int DoToolBar(int selected, GUIContent[] items) + { + // Keep the selected index within the bounds of the items array + selected = selected < 0 ? 0 : selected >= items.Length ? items.Length - 1 : selected; + + GUIStyle style = GUI.skin.FindStyle("Button"); + + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + for (int i = 0; i < items.Length; i++) + { + if (i == 0 && items.Length > 1) + style = GUI.skin.FindStyle("ButtonLeft"); + else if (items.Length > 1 && i == items.Length-1) + style = GUI.skin.FindStyle("ButtonRight"); + else if (i > 0) + style = GUI.skin.FindStyle("ButtonMid"); + + + // Display toggle. Get if toggle changed. + bool change = GUILayout.Toggle(selected == i, items[i],style,GUILayout.Height(24)); + // If changed, set selected to current index. + if (change) + selected = i; + } + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + + // Return the currently selected item's index + return selected; + } + } +} + + diff --git a/Assets/Obi/Editor/Common/Utils/ObiEditorUtils.cs.meta b/Assets/Obi/Editor/Common/Utils/ObiEditorUtils.cs.meta new file mode 100644 index 000000000..582e66409 --- /dev/null +++ b/Assets/Obi/Editor/Common/Utils/ObiEditorUtils.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 57c936f7a4f99456d944beed51c5b935 +timeCreated: 1452817402 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Utils/ObiParticleAttachmentEditor.cs b/Assets/Obi/Editor/Common/Utils/ObiParticleAttachmentEditor.cs new file mode 100644 index 000000000..5b34b8eca --- /dev/null +++ b/Assets/Obi/Editor/Common/Utils/ObiParticleAttachmentEditor.cs @@ -0,0 +1,112 @@ +using UnityEditor; +using UnityEditorInternal; +using UnityEngine; +using System.Collections.Generic; +using System.Linq; + + +namespace Obi +{ + + [CustomEditor(typeof(ObiParticleAttachment))] + public class ObiParticleAttachmentEditor : Editor + { + + SerializedProperty targetTransform; + SerializedProperty particleGroup; + SerializedProperty attachmentType; + SerializedProperty constrainOrientation; + SerializedProperty compliance; + SerializedProperty breakThreshold; + + ObiParticleAttachment attachment; + + public void OnEnable() + { + + attachment = target as ObiParticleAttachment; + targetTransform = serializedObject.FindProperty("m_Target"); + particleGroup = serializedObject.FindProperty("m_ParticleGroup"); + attachmentType = serializedObject.FindProperty("m_AttachmentType"); + constrainOrientation = serializedObject.FindProperty("m_ConstrainOrientation"); + compliance = serializedObject.FindProperty("m_Compliance"); + breakThreshold = serializedObject.FindProperty("m_BreakThreshold"); + } + + public override void OnInspectorGUI() + { + + serializedObject.UpdateIfRequiredOrScript(); + + // warn about incorrect setups: + if (!attachmentType.hasMultipleDifferentValues && !targetTransform.hasMultipleDifferentValues) + { + if (attachmentType.enumValueIndex == (int)ObiParticleAttachment.AttachmentType.Dynamic) + { + var targetValue = targetTransform.objectReferenceValue as UnityEngine.Component; + if (targetValue != null) + { + var collider = targetValue.GetComponent(); + if (collider == null) + { + EditorGUILayout.HelpBox("Dynamic attachments require the target object to have a ObiCollider component. Either add one, or change the attachment type to Static.", MessageType.Warning); + } + } + } + } + + EditorGUILayout.PropertyField(targetTransform, new GUIContent("Target")); + var blueprint = attachment.actor.sourceBlueprint; + + if (blueprint != null) + { + var rect = EditorGUILayout.GetControlRect(); + var label = EditorGUI.BeginProperty(rect, new GUIContent("Particle group"), particleGroup); + rect = EditorGUI.PrefixLabel(rect, label); + + if (GUI.Button(rect, attachment.particleGroup != null ? attachment.particleGroup.name : "None", EditorStyles.popup)) + { + // create the menu and add items to it + GenericMenu menu = new GenericMenu(); + menu.allowDuplicateNames = true; + + for (int i = 0; i < blueprint.groups.Count; ++i) + { + menu.AddItem(new GUIContent(blueprint.groups[i].name), blueprint.groups[i] == attachment.particleGroup, OnParticleGroupSelected, blueprint.groups[i]); + } + + // display the menu + menu.DropDown(rect); + } + + EditorGUI.EndProperty(); + } + + EditorGUILayout.PropertyField(attachmentType, new GUIContent("Type")); + + if (attachment.actor.usesOrientedParticles) + EditorGUILayout.PropertyField(constrainOrientation, new GUIContent("Constraint Orientation")); + + if (attachment.attachmentType == ObiParticleAttachment.AttachmentType.Dynamic) + { + EditorGUILayout.PropertyField(compliance, new GUIContent("Compliance")); + EditorGUILayout.PropertyField(breakThreshold, new GUIContent("Break threshold")); + } + + if (GUI.changed) + serializedObject.ApplyModifiedProperties(); + + } + + // the GenericMenu.MenuFunction2 event handler for when a menu item is selected + void OnParticleGroupSelected(object index) + { + Undo.RecordObject(attachment, "Set particle group"); + attachment.particleGroup = index as ObiParticleGroup; + PrefabUtility.RecordPrefabInstancePropertyModifications(attachment); + } + } + +} + + diff --git a/Assets/Obi/Editor/Common/Utils/ObiParticleAttachmentEditor.cs.meta b/Assets/Obi/Editor/Common/Utils/ObiParticleAttachmentEditor.cs.meta new file mode 100644 index 000000000..4d17dbba7 --- /dev/null +++ b/Assets/Obi/Editor/Common/Utils/ObiParticleAttachmentEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1587d981fa96c4b2291e19484a5a5b13 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Utils/ObiRaycastHit.cs b/Assets/Obi/Editor/Common/Utils/ObiRaycastHit.cs new file mode 100644 index 000000000..d56e32775 --- /dev/null +++ b/Assets/Obi/Editor/Common/Utils/ObiRaycastHit.cs @@ -0,0 +1,26 @@ +using UnityEngine; +using System.Collections.Generic; + +namespace Obi +{ + public class ObiRaycastHit + { + + /// Distance from the Raycast origin to the point of impact. + public float distance; + /// The position in model space where a raycast intercepted a triangle. + public Vector3 position; + /// The normal in model space of the triangle that this raycast hit. + public Vector3 normal; + /// The triangle index of the hit face. + public int triangle; + + public ObiRaycastHit(float distance, Vector3 position, Vector3 normal, int triangle) + { + this.distance = distance; + this.position = position; + this.normal = normal; + this.triangle = triangle; + } + } +} diff --git a/Assets/Obi/Editor/Common/Utils/ObiRaycastHit.cs.meta b/Assets/Obi/Editor/Common/Utils/ObiRaycastHit.cs.meta new file mode 100644 index 000000000..27e33591e --- /dev/null +++ b/Assets/Obi/Editor/Common/Utils/ObiRaycastHit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2eb47a91b4f7c4f4aa52d4b914caa96e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Common/Utils/PreviewHelpers.cs b/Assets/Obi/Editor/Common/Utils/PreviewHelpers.cs new file mode 100644 index 000000000..5ba601a90 --- /dev/null +++ b/Assets/Obi/Editor/Common/Utils/PreviewHelpers.cs @@ -0,0 +1,150 @@ +using System; +using UnityEditor; +using UnityEngine; + +namespace Obi{ + + class PreviewHelpers + { + + // Preview interaction related stuff: + static int sliderHash = "Slider".GetHashCode(); + public static Vector2 Drag2D(Vector2 scrollPosition, Rect position) + { + int controlID = GUIUtility.GetControlID(PreviewHelpers.sliderHash, FocusType.Passive); + Event current = Event.current; + switch (current.GetTypeForControl(controlID)) + { + case EventType.MouseDown: + if (position.Contains(current.mousePosition) && position.width > 50f) + { + GUIUtility.hotControl = controlID; + current.Use(); + EditorGUIUtility.SetWantsMouseJumping(1); + } + break; + case EventType.MouseUp: + if (GUIUtility.hotControl == controlID) + { + GUIUtility.hotControl = 0; + } + EditorGUIUtility.SetWantsMouseJumping(0); + break; + case EventType.MouseDrag: + if (GUIUtility.hotControl == controlID) + { + scrollPosition -= current.delta * (float)((!current.shift) ? 1 : 3) / Mathf.Min(position.width, position.height) * 140f; + scrollPosition.y = Mathf.Clamp(scrollPosition.y, -90f, 90f); + current.Use(); + GUI.changed = true; + } + break; + } + return scrollPosition; + } + + public Camera m_Camera; + public float m_CameraFieldOfView = 30f; + public Light[] m_Light = new Light[2]; + internal RenderTexture m_RenderTexture; + public PreviewHelpers() : this(false) + { + } + public PreviewHelpers(bool renderFullScene) + { + GameObject gameObject = EditorUtility.CreateGameObjectWithHideFlags("PreRenderCamera", HideFlags.HideAndDontSave, new Type[] + { + typeof(Camera) + }); + this.m_Camera = gameObject.GetComponent(); + this.m_Camera.fieldOfView = this.m_CameraFieldOfView; + this.m_Camera.cullingMask = 1 << 1; + this.m_Camera.enabled = false; + this.m_Camera.clearFlags = CameraClearFlags.SolidColor; + this.m_Camera.farClipPlane = 10f; + this.m_Camera.nearClipPlane = 1f; + this.m_Camera.backgroundColor = new Color(0.192156866f, 0.192156866f, 0.192156866f, 0); + this.m_Camera.renderingPath = RenderingPath.Forward; + this.m_Camera.useOcclusionCulling = false; + + for (int i = 0; i < 2; i++) + { + GameObject gameObject2 = EditorUtility.CreateGameObjectWithHideFlags("PreRenderLight", HideFlags.HideAndDontSave, new Type[] + { + typeof(Light) + }); + this.m_Light[i] = gameObject2.GetComponent(); + this.m_Light[i].type = LightType.Directional; + this.m_Light[i].intensity = 1f; + this.m_Light[i].enabled = false; + } + + this.m_Light[0].color = new Color(0.4f, 0.4f, 0.45f, 0f); + this.m_Light[1].transform.rotation = Quaternion.Euler(340f, 218f, 177f); + this.m_Light[1].color = new Color(0.4f, 0.4f, 0.45f, 0f) * 0.7f; + } + public void Cleanup() + { + if (this.m_Camera) + { + UnityEngine.Object.DestroyImmediate(this.m_Camera.gameObject, true); + } + if (this.m_RenderTexture) + { + UnityEngine.Object.DestroyImmediate(this.m_RenderTexture); + this.m_RenderTexture = null; + } + Light[] light = this.m_Light; + for (int i = 0; i < light.Length; i++) + { + Light light2 = light[i]; + if (light2) + { + UnityEngine.Object.DestroyImmediate(light2.gameObject, true); + } + } + } + + private void InitPreview(Rect r) + { + int num = (int)r.width; + int num2 = (int)r.height; + if (!this.m_RenderTexture || this.m_RenderTexture.width != num || this.m_RenderTexture.height != num2) + { + if (this.m_RenderTexture) + { + UnityEngine.Object.DestroyImmediate(this.m_RenderTexture); + this.m_RenderTexture = null; + } + float scaleFactor = this.GetScaleFactor((float)num, (float)num2); + this.m_RenderTexture = new RenderTexture((int)((float)num * scaleFactor), (int)((float)num2 * scaleFactor), 16); + this.m_RenderTexture.hideFlags = HideFlags.HideAndDontSave; + this.m_Camera.targetTexture = this.m_RenderTexture; + } + float num3 = (this.m_RenderTexture.width > 0) ? Mathf.Max(1f, (float)this.m_RenderTexture.height / (float)this.m_RenderTexture.width) : 1f; + this.m_Camera.fieldOfView = Mathf.Atan(num3 * Mathf.Tan(this.m_CameraFieldOfView * 0.5f * 0.0174532924f)) * 57.29578f * 2f; + + } + public float GetScaleFactor(float width, float height) + { + float a = Mathf.Max(Mathf.Min(width * 2f, 1024f), width) / width; + float b = Mathf.Max(Mathf.Min(height * 2f, 1024f), height) / height; + return Mathf.Min(a, b); + } + + public void BeginPreview(Rect r, GUIStyle previewBackground) + { + this.InitPreview(r); + if (previewBackground == null || previewBackground == GUIStyle.none) + { + return; + } + } + public Texture EndPreview() + { + m_Camera.Render(); + return this.m_RenderTexture; + } + + } +} diff --git a/Assets/Obi/Editor/Common/Utils/PreviewHelpers.cs.meta b/Assets/Obi/Editor/Common/Utils/PreviewHelpers.cs.meta new file mode 100644 index 000000000..8ff77efc9 --- /dev/null +++ b/Assets/Obi/Editor/Common/Utils/PreviewHelpers.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 886ef4783c97a4dac9034b48a6c94b6c +timeCreated: 1438171037 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Obi.Editor.asmdef b/Assets/Obi/Editor/Obi.Editor.asmdef new file mode 100644 index 000000000..3c97604ac --- /dev/null +++ b/Assets/Obi/Editor/Obi.Editor.asmdef @@ -0,0 +1,33 @@ +{ + "name": "Obi.Editor", + "references": [ + "GUID:da7abd44cdeea48609605c1c2c9609c0" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.unity.collections", + "expression": "0.8.0-preview.5", + "define": "OBI_COLLECTIONS" + }, + { + "name": "com.unity.burst", + "expression": "1.2.3-verified", + "define": "OBI_BURST" + }, + { + "name": "com.unity.mathematics", + "expression": "1.0.1", + "define": "OBI_MATHEMATICS" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Obi.Editor.asmdef.meta b/Assets/Obi/Editor/Obi.Editor.asmdef.meta new file mode 100644 index 000000000..770027d79 --- /dev/null +++ b/Assets/Obi/Editor/Obi.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 180639cf42b5c450c8fdad7e31d2ec13 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/ObiParticleSelection.cs b/Assets/Obi/Editor/ObiParticleSelection.cs new file mode 100644 index 000000000..06f1bb9d6 --- /dev/null +++ b/Assets/Obi/Editor/ObiParticleSelection.cs @@ -0,0 +1,186 @@ +using UnityEngine; +using UnityEditor; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + + public static class ObiParticleSelection + { + + static int particleSelectorHash = "ObiParticleSelectorHash".GetHashCode(); + + static Vector2 startPos; + static Vector2 currentPos; + static bool dragging = false; + static Rect marquee; + + public static bool DoSelection(Vector3[] positions, + bool[] selectionStatus, + bool[] facingCamera) + { + + Matrix4x4 cachedMatrix = Handles.matrix; + + int controlID = GUIUtility.GetControlID(particleSelectorHash, FocusType.Passive); + int selectedParticleIndex = -1; + bool selectionStatusChanged = false; + + // select vertex on mouse click: + switch (Event.current.GetTypeForControl(controlID)) + { + + case EventType.MouseDown: + + if (Event.current.button != 0) break; + + startPos = Event.current.mousePosition; + marquee.Set(0, 0, 0, 0); + + // If the user is not pressing shift, clear selection. + if ((Event.current.modifiers & EventModifiers.Shift) == 0 && (Event.current.modifiers & EventModifiers.Alt) == 0) + { + for (int i = 0; i < selectionStatus.Length; i++) + selectionStatus[i] = false; + } + + // Allow use of marquee selection + if (Event.current.modifiers == EventModifiers.None || (Event.current.modifiers & EventModifiers.Shift) != 0) + GUIUtility.hotControl = controlID; + + float minSqrDistance = System.Single.MaxValue; + + for (int i = 0; i < positions.Length; i++) + { + // skip not selectable particles: + //if (!facingCamera[i] && (selectBackfaces & ObiActorBlueprintEditor.ParticleCulling.Back) != 0) continue; + //if (facingCamera[i] && (selectBackfaces & ObiActorBlueprintEditor.ParticleCulling.Front) != 0) continue; + + // get particle position in gui space: + Vector2 pos = HandleUtility.WorldToGUIPoint(positions[i]); + + // get distance from mouse position to particle position: + float sqrDistance = Vector2.SqrMagnitude(startPos - pos); + + // check if this particle is closer to the cursor that any previously considered particle. + if (sqrDistance < 100 && sqrDistance < minSqrDistance) + { //magic number 100 = 10*10, where 10 is min distance in pixels to select a particle. + minSqrDistance = sqrDistance; + selectedParticleIndex = i; + } + + } + + if (selectedParticleIndex >= 0) + { // toggle particle selection status. + + selectionStatus[selectedParticleIndex] = !selectionStatus[selectedParticleIndex]; + selectionStatusChanged = true; + GUIUtility.hotControl = controlID; + Event.current.Use(); + + } + else if (Event.current.modifiers == EventModifiers.None) + { // deselect all particles: + for (int i = 0; i < selectionStatus.Length; i++) + selectionStatus[i] = false; + + selectionStatusChanged = true; + } + + break; + + case EventType.MouseMove: + SceneView.RepaintAll(); + break; + + case EventType.MouseDrag: + + if (GUIUtility.hotControl == controlID) + { + + currentPos = Event.current.mousePosition; + if (!dragging && Vector2.Distance(startPos, currentPos) > 5) + { + dragging = true; + } + else + { + GUIUtility.hotControl = controlID; + Event.current.Use(); + } + + //update marquee rect: + float left = Mathf.Min(startPos.x, currentPos.x); + float right = Mathf.Max(startPos.x, currentPos.x); + float bottom = Mathf.Min(startPos.y, currentPos.y); + float top = Mathf.Max(startPos.y, currentPos.y); + + marquee = new Rect(left, bottom, right - left, top - bottom); + + } + + break; + + case EventType.MouseUp: + + if (GUIUtility.hotControl == controlID) + { + + dragging = false; + + for (int i = 0; i < positions.Length; i++) + { + + // skip not selectable particles: + //switch (selectBackfaces) + { + //case ObiActorBlueprintEditor.ParticleCulling.Back: if (!facingCamera[i]) continue; break; + //case ObiActorBlueprintEditor.ParticleCulling.Front: if (facingCamera[i]) continue; break; + } + + // get particle position in gui space: + Vector2 pos = HandleUtility.WorldToGUIPoint(positions[i]); + + if (pos.x > marquee.xMin && pos.x < marquee.xMax && pos.y > marquee.yMin && pos.y < marquee.yMax) + { + selectionStatus[i] = true; + selectionStatusChanged = true; + } + + } + + GUIUtility.hotControl = 0; + Event.current.Use(); + } + + break; + + case EventType.Repaint: + + Handles.matrix = Matrix4x4.identity; + + if (dragging) + { + GUISkin oldSkin = GUI.skin; + GUI.skin = EditorGUIUtility.GetBuiltinSkin(EditorSkin.Scene); + Handles.BeginGUI(); + GUI.Box(new Rect(marquee.xMin, marquee.yMin, marquee.width, marquee.height), ""); + Handles.EndGUI(); + GUI.skin = oldSkin; + } + + Handles.matrix = cachedMatrix; + + break; + + } + + return selectionStatusChanged; + } + + } +} + diff --git a/Assets/Obi/Editor/ObiParticleSelection.cs.meta b/Assets/Obi/Editor/ObiParticleSelection.cs.meta new file mode 100644 index 000000000..c877a037d --- /dev/null +++ b/Assets/Obi/Editor/ObiParticleSelection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7020925dabebf42b7915da74e58c3b5e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/ObiStitcherEditor.cs b/Assets/Obi/Editor/ObiStitcherEditor.cs new file mode 100644 index 000000000..772462f46 --- /dev/null +++ b/Assets/Obi/Editor/ObiStitcherEditor.cs @@ -0,0 +1,241 @@ +using UnityEditor; +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; + +namespace Obi{ + + /** + * Custom inspector for ObiStitcher component. + */ + + [CustomEditor(typeof(ObiStitcher))] + public class ObiStitcherEditor : Editor + { + + ObiStitcher stitcher; + static public bool editing = false; + + static public Vector3 sewingToolHandle1 = Vector3.zero; + static public Vector3 sewingToolHandle2 = Vector3.one; + + static public bool[] selectionStatus = new bool[0]; + + public void OnEnable(){ + stitcher = (ObiStitcher)target; + + // initialize sewing tool to sensible values: + if (stitcher.Actor1 != null && stitcher.Actor2 != null){ + sewingToolHandle1 = stitcher.Actor1.transform.position; + sewingToolHandle2 = stitcher.Actor2.transform.position; + } + } + + public override void OnInspectorGUI() { + + serializedObject.UpdateIfRequiredOrScript(); + + EditorGUI.BeginChangeCheck(); + ObiActor actor1 = EditorGUILayout.ObjectField("First actor",stitcher.Actor1, typeof(ObiActor),true) as ObiActor; + if (EditorGUI.EndChangeCheck()){ + Undo.RecordObject(stitcher, "Set first actor"); + stitcher.Actor1 = actor1; + } + + EditorGUI.BeginChangeCheck(); + ObiActor actor2 = EditorGUILayout.ObjectField("Second actor",stitcher.Actor2, typeof(ObiActor),true) as ObiActor; + if (EditorGUI.EndChangeCheck()){ + Undo.RecordObject(stitcher, "Set second actor"); + stitcher.Actor2 = actor2; + } + + if (stitcher.Actor1 != null && stitcher.Actor2 != null && stitcher.Actor1.solver != stitcher.Actor2.solver){ + EditorGUILayout.HelpBox("Both actors must be managed by the same solver.",MessageType.Error); + } + + EditorGUILayout.HelpBox("Stitch count: " + stitcher.StitchCount,MessageType.None); + + // edit mode: + GUI.enabled = stitcher.Actor1 != null && stitcher.Actor2 != null; + editing = GUILayout.Toggle(editing,"Edit","LargeButton"); + + if (editing){ + + EditorGUILayout.HelpBox("Remember that when working with the sewing tool, you can use Unity's snap to vertex feature by pressing 'V' in your keyboard.",MessageType.Info); + + // Clear all stitches + if (GUILayout.Button("Clear all stitches")){ + if (EditorUtility.DisplayDialog("Clearing stitches","Are you sure you want to remove all stitches?","Ok","Cancel")){ + Undo.RecordObject(stitcher, "Clear all stitches"); + stitcher.Clear(); + } + } + + // Remove selected stitches + if (GUILayout.Button("Remove selected stitches")){ + + List removedStitches = new List(); + + for(int i = 0; i < selectionStatus.Length; ++i){ + if (selectionStatus[i]){ + removedStitches.Add(i); + selectionStatus[i] = false; + } + } + + if (removedStitches.Count > 0){ + + Undo.RecordObject(stitcher, "Remove stitches"); + + // Remove from last to first, to avoid throwing off subsequent indices: + foreach(int i in removedStitches.OrderByDescending(i => i)){ + stitcher.RemoveStitch(i); + } + } + } + + // Add stitch: + if (GUILayout.Button("Add Stitch")){ + Undo.RecordObject(stitcher, "Add stitch"); + + int particle1 = 0; + int particle2 = 0; + UseSewingTool(ref particle1, ref particle2); + + stitcher.AddStitch(particle1,particle2); + } + } + GUI.enabled = true; + + // Apply changes to the serializedProperty + if (GUI.changed){ + + serializedObject.ApplyModifiedProperties(); + + //stitcher.PushDataToSolver(ParticleData.NONE); + + } + + } + + public void UseSewingTool(ref int particle1, ref int particle2){ + + float minDistance = float.MaxValue; + + if (stitcher.Actor1 == stitcher.Actor2){ + float minDistance2 = float.MaxValue; + for (int i = 0; i < stitcher.Actor1.particleCount;++i){ + Vector3 pos = stitcher.Actor1.GetParticlePosition(stitcher.Actor1.solverIndices[i]); + float distance1 = (pos - sewingToolHandle1).sqrMagnitude; + float distance2 = (pos - sewingToolHandle2).sqrMagnitude; + if (distance1 < minDistance){ + minDistance = distance1; + particle1 = i; + } + if (distance2 < minDistance2){ + minDistance2 = distance2; + particle2 = i; + } + } + }else{ + + // find closest particle to each end of the sewing tool: + for (int i = 0; i < stitcher.Actor1.particleCount;++i){ + Vector3 pos = stitcher.Actor1.GetParticlePosition(stitcher.Actor1.solverIndices[i]); + float distance1 = (pos - sewingToolHandle1).sqrMagnitude; + float distance2 = (pos - sewingToolHandle2).sqrMagnitude; + float min = Mathf.Min(distance1,distance2); + if (min < minDistance){ + minDistance = min; + particle1 = i; + } + } + + minDistance = float.MaxValue; + for (int i = 0; i < stitcher.Actor2.particleCount;++i){ + Vector3 pos = stitcher.Actor2.GetParticlePosition(stitcher.Actor2.solverIndices[i]); + float distance1 = (pos - sewingToolHandle1).sqrMagnitude; + float distance2 = (pos - sewingToolHandle2).sqrMagnitude; + float min = Mathf.Min(distance1,distance2); + if (min < minDistance){ + minDistance = min; + particle2 = i; + } + } + } + } + + public void DrawSewingTool(){ + var fmh_171_72_639110711855728022 = Quaternion.identity; sewingToolHandle1 = Handles.FreeMoveHandle(sewingToolHandle1,HandleUtility.GetHandleSize(sewingToolHandle1)*0.05f,new Vector3(.5f,.5f,.5f),Handles.RectangleHandleCap); + var fmh_172_66_639110711855741230 = Quaternion.identity; sewingToolHandle2 = Handles.FreeMoveHandle(sewingToolHandle2,HandleUtility.GetHandleSize(sewingToolHandle2)*0.05f,new Vector3(.5f,.5f,.5f),Handles.RectangleHandleCap); + Handles.DrawDottedLine(sewingToolHandle1,sewingToolHandle2,2); + } + + /** + * Draws selected stitches in the scene view and allows their selection. + */ + public void OnSceneGUI(){ + + Array.Resize(ref selectionStatus,stitcher.StitchCount); + + if (!editing) + return; + + DrawSewingTool(); + + if (stitcher.Actor1 != null && stitcher.Actor2 != null){ + + int controlID = GUIUtility.GetControlID("stitcher".GetHashCode(),FocusType.Passive); + float distanceToClosest = float.MaxValue; + int selectedIndex = -1; + int i = 0; + + foreach(ObiStitcher.Stitch stitch in stitcher.Stitches){ + + Vector3 pos1 = stitcher.Actor1.GetParticlePosition(stitcher.Actor1.solverIndices[stitch.particleIndex1]); + Vector3 pos2 = stitcher.Actor2.GetParticlePosition(stitcher.Actor2.solverIndices[stitch.particleIndex2]); + + switch (Event.current.GetTypeForControl(controlID)){ + case EventType.MouseDown: + + if (Event.current.button != 0) break; + + // If the user is pressing shift, accumulate selection. + if ((Event.current.modifiers & EventModifiers.Shift) == 0 && (Event.current.modifiers & EventModifiers.Alt) == 0){ + for(int j = 0; j < selectionStatus.Length; j++) + selectionStatus[j] = false; + } + + float distance = HandleUtility.DistanceToLine(pos1,pos2); + if (distance < 10 && distance < distanceToClosest){ + + distanceToClosest = distance; + selectedIndex = i; + + // Prevent deselection if we have selected a stitch: + GUIUtility.hotControl = controlID; + Event.current.Use(); + + } + break; + case EventType.Repaint: + Handles.color = selectionStatus[i]?Color.red:Color.green; + Handles.DrawDottedLine(pos1,pos2,2); + break; + } + ++i; + } + + if (selectedIndex >= 0){ + selectionStatus[selectedIndex] = !selectionStatus[selectedIndex]; + } + + } + + } + + } +} + diff --git a/Assets/Obi/Editor/ObiStitcherEditor.cs.meta b/Assets/Obi/Editor/ObiStitcherEditor.cs.meta new file mode 100644 index 000000000..b0c18e2e1 --- /dev/null +++ b/Assets/Obi/Editor/ObiStitcherEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7d360f36068814e1a9e2835455e6be61 +timeCreated: 1489407253 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources.meta b/Assets/Obi/Editor/Resources.meta new file mode 100644 index 000000000..2f133580a --- /dev/null +++ b/Assets/Obi/Editor/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a89eef02b8abc42e2b56e6150832233d +folderAsset: yes +timeCreated: 1498032496 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/AddControlPoint.psd b/Assets/Obi/Editor/Resources/AddControlPoint.psd new file mode 100644 index 000000000..d968222e8 Binary files /dev/null and b/Assets/Obi/Editor/Resources/AddControlPoint.psd differ diff --git a/Assets/Obi/Editor/Resources/AddControlPoint.psd.meta b/Assets/Obi/Editor/Resources/AddControlPoint.psd.meta new file mode 100644 index 000000000..5dbc55215 --- /dev/null +++ b/Assets/Obi/Editor/Resources/AddControlPoint.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 6d2b606052e73408595395e402a926e1 +timeCreated: 1478799645 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/AddIcon.psd b/Assets/Obi/Editor/Resources/AddIcon.psd new file mode 100644 index 000000000..b4142a483 Binary files /dev/null and b/Assets/Obi/Editor/Resources/AddIcon.psd differ diff --git a/Assets/Obi/Editor/Resources/AddIcon.psd.meta b/Assets/Obi/Editor/Resources/AddIcon.psd.meta new file mode 100644 index 000000000..4ac9b4eda --- /dev/null +++ b/Assets/Obi/Editor/Resources/AddIcon.psd.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: d11f3f1468cd5453d961042f3ae9799d +timeCreated: 1440144040 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/AddTetherButton.psd b/Assets/Obi/Editor/Resources/AddTetherButton.psd new file mode 100644 index 000000000..f0f2cd2aa Binary files /dev/null and b/Assets/Obi/Editor/Resources/AddTetherButton.psd differ diff --git a/Assets/Obi/Editor/Resources/AddTetherButton.psd.meta b/Assets/Obi/Editor/Resources/AddTetherButton.psd.meta new file mode 100644 index 000000000..9cf24278a --- /dev/null +++ b/Assets/Obi/Editor/Resources/AddTetherButton.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: c8a8952cc5f5744e88c765ee83f6a865 +timeCreated: 1478799531 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/BackfacesButton.psd b/Assets/Obi/Editor/Resources/BackfacesButton.psd new file mode 100644 index 000000000..325bbf2ec Binary files /dev/null and b/Assets/Obi/Editor/Resources/BackfacesButton.psd differ diff --git a/Assets/Obi/Editor/Resources/BackfacesButton.psd.meta b/Assets/Obi/Editor/Resources/BackfacesButton.psd.meta new file mode 100644 index 000000000..9e88b6687 --- /dev/null +++ b/Assets/Obi/Editor/Resources/BackfacesButton.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 6463b09cd29e543a49c1e2ea87b121f3 +timeCreated: 1478799645 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/BranchButton.png b/Assets/Obi/Editor/Resources/BranchButton.png new file mode 100644 index 000000000..c389a9735 Binary files /dev/null and b/Assets/Obi/Editor/Resources/BranchButton.png differ diff --git a/Assets/Obi/Editor/Resources/BranchButton.png.meta b/Assets/Obi/Editor/Resources/BranchButton.png.meta new file mode 100644 index 000000000..6a4866bcd --- /dev/null +++ b/Assets/Obi/Editor/Resources/BranchButton.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 4bb29d51ae50c4ee4acac3acc8c0cb18 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/BrushHandle.psd b/Assets/Obi/Editor/Resources/BrushHandle.psd new file mode 100644 index 000000000..43cd79c00 Binary files /dev/null and b/Assets/Obi/Editor/Resources/BrushHandle.psd differ diff --git a/Assets/Obi/Editor/Resources/BrushHandle.psd.meta b/Assets/Obi/Editor/Resources/BrushHandle.psd.meta new file mode 100644 index 000000000..812e50ad4 --- /dev/null +++ b/Assets/Obi/Editor/Resources/BrushHandle.psd.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 5cbb736fc86b64409b40fe7050933899 +timeCreated: 1441952145 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/BrushIcon.psd b/Assets/Obi/Editor/Resources/BrushIcon.psd new file mode 100644 index 000000000..b3bbf8bd8 Binary files /dev/null and b/Assets/Obi/Editor/Resources/BrushIcon.psd differ diff --git a/Assets/Obi/Editor/Resources/BrushIcon.psd.meta b/Assets/Obi/Editor/Resources/BrushIcon.psd.meta new file mode 100644 index 000000000..aa215c88b --- /dev/null +++ b/Assets/Obi/Editor/Resources/BrushIcon.psd.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 652e8f881c4764ec9a7705aac5ed0e84 +timeCreated: 1442227627 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/ClearButton.psd b/Assets/Obi/Editor/Resources/ClearButton.psd new file mode 100644 index 000000000..fca2599fc Binary files /dev/null and b/Assets/Obi/Editor/Resources/ClearButton.psd differ diff --git a/Assets/Obi/Editor/Resources/ClearButton.psd.meta b/Assets/Obi/Editor/Resources/ClearButton.psd.meta new file mode 100644 index 000000000..ec97fbfbc --- /dev/null +++ b/Assets/Obi/Editor/Resources/ClearButton.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: e6e3e5775eebd49e6aee6abb8470baa9 +timeCreated: 1478799645 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/ClearTethersButton.psd b/Assets/Obi/Editor/Resources/ClearTethersButton.psd new file mode 100644 index 000000000..12467dd84 Binary files /dev/null and b/Assets/Obi/Editor/Resources/ClearTethersButton.psd differ diff --git a/Assets/Obi/Editor/Resources/ClearTethersButton.psd.meta b/Assets/Obi/Editor/Resources/ClearTethersButton.psd.meta new file mode 100644 index 000000000..b06e21fb1 --- /dev/null +++ b/Assets/Obi/Editor/Resources/ClearTethersButton.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 0458bb2ee7da84bf6b990ed5679e8e22 +timeCreated: 1478799645 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/DistanceFieldPreview.mat b/Assets/Obi/Editor/Resources/DistanceFieldPreview.mat new file mode 100644 index 000000000..7be81869b --- /dev/null +++ b/Assets/Obi/Editor/Resources/DistanceFieldPreview.mat @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DistanceFieldPreview + m_Shader: {fileID: 4800000, guid: f667dd333ac88440587339a2a1ac0027, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Volume: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _Absorption: 2 + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Glossiness: 0.5 + - _MaxSteps: 300 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SrcBlend: 1 + - _StepSize: 0.01 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _AABBMax: {r: 1.3624613, g: 1.3624613, b: 1.3624613, a: 0} + - _AABBMin: {r: -1.3624613, g: -1.3624613, b: -1.3624613, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _InsideColor: {r: 1, g: 1, b: 1, a: 1} + - _OutsideColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Editor/Resources/DistanceFieldPreview.mat.meta b/Assets/Obi/Editor/Resources/DistanceFieldPreview.mat.meta new file mode 100644 index 000000000..0e5f4b005 --- /dev/null +++ b/Assets/Obi/Editor/Resources/DistanceFieldPreview.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5dde1f45f471c48a1a13fc4b8c0b5b43 +timeCreated: 1438180916 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/DistanceFieldPreview.shader b/Assets/Obi/Editor/Resources/DistanceFieldPreview.shader new file mode 100644 index 000000000..5b6de21f6 --- /dev/null +++ b/Assets/Obi/Editor/Resources/DistanceFieldPreview.shader @@ -0,0 +1,121 @@ +// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' + +// Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject' + + +Shader "Obi/Distance Field Preview" { + Properties { + _Volume ("Texture", 3D) = "" {} + _AABBMin("AABB Min",Vector) = (-0.5,-0.5,-0.5) + _AABBMax("AABB Max",Vector) = (0.5,0.5,0.5) + _InsideColor("Inside color",Color) = (1,1,1,1) + _OutsideColor("Outside color",Color) = (0,0,0,1) + _Absorption("Absorption",Float) = 1.5 + _StepSize("Step size",Float) = 0.01 + _MaxSteps("Max steps",Int) = 300 + } + SubShader { + Pass { + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma exclude_renderers flash gles + + #include "UnityCG.cginc" + + struct vs_input { + float4 vertex : POSITION; + }; + + struct ps_input { + float4 pos : SV_POSITION; + float3 eyeOrigin : TEXCOORD0; + float3 eyeDir : TEXCOORD1; + }; + + + ps_input vert (vs_input v) + { + ps_input o; + o.pos = UnityObjectToClipPos (v.vertex); + + o.eyeOrigin = mul((float3x3)unity_WorldToObject, _WorldSpaceCameraPos); // object space eye origin + o.eyeDir = -ObjSpaceViewDir(v.vertex); // object space eye direction + return o; + } + + sampler3D _Volume; + float3 _AABBMin; + float3 _AABBMax; + float _Absorption; + float _StepSize; + int _MaxSteps; + half4 _InsideColor; + half4 _OutsideColor; + + bool IntersectBox(float3 rayOrigin, float3 rayDir, float3 aabbMin, float3 aabbMax, out float t0, out float t1) + { + float3 invR = 1.0 / rayDir; + float3 tbot = invR * (aabbMin-rayOrigin); + float3 ttop = invR * (aabbMax-rayOrigin); + float3 tmin = min(ttop, tbot); + float3 tmax = max(ttop, tbot); + float2 t = max(tmin.xx, tmin.yz); + t0 = max(t.x, t.y); + t = min(tmax.xx, tmax.yz); + t1 = min(t.x, t.y); + return t0 <= t1; + } + + + float4 frag (ps_input input) : COLOR + { + float4 dst = float4(0.0, 0.0, 0.0, 0.0); + + // Calculate ray direction + float3 eyeDirection = normalize(input.eyeDir); + + //Calculate intersection with bounding box: + float tnear, tfar; + if (IntersectBox(input.eyeOrigin,eyeDirection,_AABBMin,_AABBMax,tnear,tfar)){ + if (tnear < 0.0) tnear = 0.0; + + //Calculate ray start and stop positions: + float3 rayStart = input.eyeOrigin + eyeDirection * tnear; + float3 rayStop = input.eyeOrigin + eyeDirection * tfar; + + // Transform from object space bounds to texture coordinate space: + float3 aabbSize = _AABBMax-_AABBMin; + rayStart = (rayStart-_AABBMin) / aabbSize; + rayStop = (rayStop-_AABBMin) / aabbSize; + + // Raytrace: + float3 pos = rayStart; + float3 step = normalize(rayStop-rayStart) * _StepSize; + float travel = distance(rayStop,rayStart); + + for (int i=0; i < _MaxSteps && travel > 0.0; ++i, pos += step, travel -= _StepSize) { + + float value = tex3Dlod(_Volume, float4(pos,0)).a; + float4 color; + if (value > 0.5){ //outside the surface. + color = _OutsideColor * (1 - value) * 2; + }else{ //inside the surface. + color = _InsideColor * value * 2; + } + dst += color * _StepSize * _Absorption; + + } + } + + return dst; + } + + ENDCG + + } + } + + Fallback "VertexLit" +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Resources/DistanceFieldPreview.shader.meta b/Assets/Obi/Editor/Resources/DistanceFieldPreview.shader.meta new file mode 100644 index 000000000..84621625c --- /dev/null +++ b/Assets/Obi/Editor/Resources/DistanceFieldPreview.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f667dd333ac88440587339a2a1ac0027 +timeCreated: 1438180827 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/EditCurves.psd b/Assets/Obi/Editor/Resources/EditCurves.psd new file mode 100644 index 000000000..2a82cde45 Binary files /dev/null and b/Assets/Obi/Editor/Resources/EditCurves.psd differ diff --git a/Assets/Obi/Editor/Resources/EditCurves.psd.meta b/Assets/Obi/Editor/Resources/EditCurves.psd.meta new file mode 100644 index 000000000..e2d484986 --- /dev/null +++ b/Assets/Obi/Editor/Resources/EditCurves.psd.meta @@ -0,0 +1,116 @@ +fileFormatVersion: 2 +guid: 5de08540b1d0e4ed9b02351ecf5fb429 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/EditParticles.psd b/Assets/Obi/Editor/Resources/EditParticles.psd new file mode 100644 index 000000000..14a51cef1 Binary files /dev/null and b/Assets/Obi/Editor/Resources/EditParticles.psd differ diff --git a/Assets/Obi/Editor/Resources/EditParticles.psd.meta b/Assets/Obi/Editor/Resources/EditParticles.psd.meta new file mode 100644 index 000000000..f5ed72827 --- /dev/null +++ b/Assets/Obi/Editor/Resources/EditParticles.psd.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 8ec838b6f6b4a49c5b127c7342c6657b +timeCreated: 1450429847 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/EditorLineShader.shader b/Assets/Obi/Editor/Resources/EditorLineShader.shader new file mode 100644 index 000000000..d44991f8b --- /dev/null +++ b/Assets/Obi/Editor/Resources/EditorLineShader.shader @@ -0,0 +1,17 @@ +Shader "Obi/EditorLines" +{ + SubShader + { + Pass + { + Blend SrcAlpha OneMinusSrcAlpha + Cull Off + ZTest Always + Fog { Mode Off } + BindChannels + { + Bind "vertex", vertex Bind "color", color + } + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/Resources/EditorLineShader.shader.meta b/Assets/Obi/Editor/Resources/EditorLineShader.shader.meta new file mode 100644 index 000000000..f880ee9a0 --- /dev/null +++ b/Assets/Obi/Editor/Resources/EditorLineShader.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 80a01a94e9fdb445a9e6dff54db02fa9 +timeCreated: 1470908721 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/EditorLines.mat b/Assets/Obi/Editor/Resources/EditorLines.mat new file mode 100644 index 000000000..c27133a91 --- /dev/null +++ b/Assets/Obi/Editor/Resources/EditorLines.mat @@ -0,0 +1,85 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: EditorLines + m_Shader: {fileID: 4800000, guid: 80a01a94e9fdb445a9e6dff54db02fa9, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _EMISSION + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Editor/Resources/EditorLines.mat.meta b/Assets/Obi/Editor/Resources/EditorLines.mat.meta new file mode 100644 index 000000000..a41900376 --- /dev/null +++ b/Assets/Obi/Editor/Resources/EditorLines.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f3999384313644fe3b9ba16589efe636 +timeCreated: 1470908872 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/EditorParticle.mat b/Assets/Obi/Editor/Resources/EditorParticle.mat new file mode 100644 index 000000000..926057759 --- /dev/null +++ b/Assets/Obi/Editor/Resources/EditorParticle.mat @@ -0,0 +1,80 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: EditorParticle + m_Shader: {fileID: 4800000, guid: a16859f14873144e2b41f2bd03a84bbc, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 7e271617753294f4aaf5d79862c5d182, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Glossiness: 0.5 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Editor/Resources/EditorParticle.mat.meta b/Assets/Obi/Editor/Resources/EditorParticle.mat.meta new file mode 100644 index 000000000..c04a62200 --- /dev/null +++ b/Assets/Obi/Editor/Resources/EditorParticle.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c668cf76c548481c80404cce80ab834 +timeCreated: 1445287098 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/EditorParticle.shader b/Assets/Obi/Editor/Resources/EditorParticle.shader new file mode 100644 index 000000000..214d6e40b --- /dev/null +++ b/Assets/Obi/Editor/Resources/EditorParticle.shader @@ -0,0 +1,60 @@ +Shader "Obi/EditorPoint" +{ + SubShader + { + Blend One OneMinusSrcAlpha + ZWrite Off + ZTest always + Cull Back + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + float3 corner : NORMAL; + fixed4 color : COLOR; + float4 t0 : TEXCOORD0; // ellipsoid t1 vector + }; + + struct v2f + { + float4 pos : SV_POSITION; + fixed4 color : COLOR; + float2 texcoord : TEXCOORD0; + }; + + v2f vert (appdata v) + { + v2f o; + + // particle positions are passed in world space, no need to use modelview matrix, just view. + float radius = v.t0.w * distance(mul(unity_ObjectToWorld, v.vertex), _WorldSpaceCameraPos); + float4 viewpos = mul(UNITY_MATRIX_V, v.vertex) + float4(v.corner.x, v.corner.y, 0, 0) * radius; + o.pos = mul(UNITY_MATRIX_P, viewpos); + + o.texcoord = float3(v.corner.x*0.5, v.corner.y*0.5, radius); + o.color = v.color; + + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + // antialiased circle: + float dist = length(i.texcoord); + float pwidth = fwidth(dist); + float alpha = i.color.a * saturate((0.5 - dist) / pwidth); + + return fixed4(i.color.rgb * alpha, alpha); + } + ENDCG + } + } +} diff --git a/Assets/Obi/Editor/Resources/EditorParticle.shader.meta b/Assets/Obi/Editor/Resources/EditorParticle.shader.meta new file mode 100644 index 000000000..3dd4ff7c4 --- /dev/null +++ b/Assets/Obi/Editor/Resources/EditorParticle.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a16859f14873144e2b41f2bd03a84bbc +timeCreated: 1445287084 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/EditorParticleShader.shader b/Assets/Obi/Editor/Resources/EditorParticleShader.shader new file mode 100644 index 000000000..74670cb63 --- /dev/null +++ b/Assets/Obi/Editor/Resources/EditorParticleShader.shader @@ -0,0 +1,118 @@ +Shader "Obi/EditorParticles" { + + Properties { + _Color ("Particle color", Color) = (1,1,1,1) + _RadiusScale("Radius scale",float) = 1 + } + + SubShader { + + Pass { + + Name "EditorParticle" + Tags {"Queue"="Geometry" "IgnoreProjector"="True" "RenderType"="Opaque"} + Blend SrcAlpha OneMinusSrcAlpha + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + + #include "../../Resources/ObiMaterials/ObiEllipsoids.cginc" + #include "../../Resources/ObiMaterials/ObiUtils.cginc" + + fixed4 _Color; + + struct vin{ + float4 vertex : POSITION; + float3 corner : NORMAL; + fixed4 color : COLOR; + + float4 t0 : TEXCOORD0; // ellipsoid t1 vector + float4 t1 : TEXCOORD1; // ellipsoid t2 vector + float4 t2 : TEXCOORD2; // ellipsoid t3 vector + }; + + struct v2f + { + float4 pos : SV_POSITION; + fixed4 color : COLOR; + float4 mapping : TEXCOORD0; + float3 viewRay : TEXCOORD1; + float3 lightDir : TEXCOORD2; + float3 a2 : TEXCOORD3; + float3 a3 : TEXCOORD4; + }; + + struct fout + { + half4 color : SV_Target; + float depth : SV_Depth; + }; + + v2f vert(vin v) + { + float3x3 P, IP; + BuildParameterSpaceMatrices(v.t0,v.t1,v.t2,P,IP); + + float3 worldPos; + float3 view; + float3 eye; + float radius = BuildEllipsoidBillboard(v.vertex,v.corner,P,IP,worldPos,view,eye); + + v2f o; + o.pos = mul(UNITY_MATRIX_VP, float4(worldPos,v.vertex.w)); + o.mapping = float4(v.corner.xy,1/length(eye),radius); // A[1] + o.viewRay = mul((float3x3)UNITY_MATRIX_V,view); // A[0] + o.color = v.color * _Color; + + BuildAuxiliaryNormalVectors(v.vertex,worldPos,view,P,IP,o.a2,o.a3); + + o.lightDir = mul((float3x3)UNITY_MATRIX_MV, float3(0.5f,0.5f,0.5f)); + + return o; + } + + fout frag(v2f i) + { + fout fo; + + fo.color = half4(0,0,0,i.color.a); + + // generate sphere normals: + float3 p,n; + IntersectEllipsoid(i.viewRay,i.mapping, i.a2,i.a3,p, n); + + // clip space position: + float4 pos = mul(UNITY_MATRIX_P,float4(p,1.0)); + + // simple lighting: ambient + float3 modelUp = mul (UNITY_MATRIX_IT_MV,float3(0,1,0)); + float vecHemi = dot(n, modelUp) * 0.5f + 0.5f; + half3 amb = 0.6f * lerp(float3(0.5f,0.48f,0.45f), float3(0.8f,0.9f,1), vecHemi); + + // simple lighting: diffuse + float ndotl = saturate( dot( n, normalize(i.lightDir) ) ); + + // final lit color: + fo.color.rgb = i.color * (0.5f * ndotl + amb); + + // normalized device coordinates: + fo.depth = pos.z/pos.w; + + // in openGL calculated depth range is <-1,1> map it to <0,1> + #if SHADER_API_OPENGL || SHADER_API_GLCORE || SHADER_API_GLES || SHADER_API_GLES3 + fo.depth = 0.5*fo.depth + 0.5; + #endif + + return fo; + } + + ENDCG + + } + + } +FallBack "Diffuse" +} + diff --git a/Assets/Obi/Editor/Resources/EditorParticleShader.shader.meta b/Assets/Obi/Editor/Resources/EditorParticleShader.shader.meta new file mode 100644 index 000000000..7e76c5afa --- /dev/null +++ b/Assets/Obi/Editor/Resources/EditorParticleShader.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f909e74f185674832ad45806b9c6e60f +timeCreated: 1438934781 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/FillButton.psd b/Assets/Obi/Editor/Resources/FillButton.psd new file mode 100644 index 000000000..ee57c7baf Binary files /dev/null and b/Assets/Obi/Editor/Resources/FillButton.psd differ diff --git a/Assets/Obi/Editor/Resources/FillButton.psd.meta b/Assets/Obi/Editor/Resources/FillButton.psd.meta new file mode 100644 index 000000000..70102da78 --- /dev/null +++ b/Assets/Obi/Editor/Resources/FillButton.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 5aa30f0cf5bab4c7dab839a28bd5a3b8 +timeCreated: 1478802054 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/FrontfacesButton.psd b/Assets/Obi/Editor/Resources/FrontfacesButton.psd new file mode 100644 index 000000000..391194698 Binary files /dev/null and b/Assets/Obi/Editor/Resources/FrontfacesButton.psd differ diff --git a/Assets/Obi/Editor/Resources/FrontfacesButton.psd.meta b/Assets/Obi/Editor/Resources/FrontfacesButton.psd.meta new file mode 100644 index 000000000..188af017e --- /dev/null +++ b/Assets/Obi/Editor/Resources/FrontfacesButton.psd.meta @@ -0,0 +1,95 @@ +fileFormatVersion: 2 +guid: 5f827adfcd494429faa0357b10a2b866 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/GaussianButton.psd b/Assets/Obi/Editor/Resources/GaussianButton.psd new file mode 100644 index 000000000..42afd4259 Binary files /dev/null and b/Assets/Obi/Editor/Resources/GaussianButton.psd differ diff --git a/Assets/Obi/Editor/Resources/GaussianButton.psd.meta b/Assets/Obi/Editor/Resources/GaussianButton.psd.meta new file mode 100644 index 000000000..8d580bc48 --- /dev/null +++ b/Assets/Obi/Editor/Resources/GaussianButton.psd.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 23303a76d97ac4435b47284e747a1e8f +timeCreated: 1442227197 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/HandleButton.psd b/Assets/Obi/Editor/Resources/HandleButton.psd new file mode 100644 index 000000000..3b65a0f9b Binary files /dev/null and b/Assets/Obi/Editor/Resources/HandleButton.psd differ diff --git a/Assets/Obi/Editor/Resources/HandleButton.psd.meta b/Assets/Obi/Editor/Resources/HandleButton.psd.meta new file mode 100644 index 000000000..a6a595845 --- /dev/null +++ b/Assets/Obi/Editor/Resources/HandleButton.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 25ef265869b174c41bd35bcb371e0fa9 +timeCreated: 1478802054 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons.meta b/Assets/Obi/Editor/Resources/Icons.meta new file mode 100644 index 000000000..3382ebe47 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 292753011b5614e38934aacb2697fd86 +folderAsset: yes +timeCreated: 1482921919 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiActorBlueprint Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiActorBlueprint Icon.png new file mode 100644 index 000000000..850ee5f48 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiActorBlueprint Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiActorBlueprint Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiActorBlueprint Icon.png.meta new file mode 100644 index 000000000..0e77ce1c7 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiActorBlueprint Icon.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: d0123218ec6144d0983c099fc7339924 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiAerodynamicConstraints Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiAerodynamicConstraints Icon.png new file mode 100644 index 000000000..ae0f69a06 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiAerodynamicConstraints Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiAerodynamicConstraints Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiAerodynamicConstraints Icon.png.meta new file mode 100644 index 000000000..fa9e5e66f --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiAerodynamicConstraints Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 8626b43f419d1466a9dc1c1509308b13 +timeCreated: 1448330601 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiAmbientForceZone Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiAmbientForceZone Icon.png new file mode 100644 index 000000000..15f7dc06f Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiAmbientForceZone Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiAmbientForceZone Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiAmbientForceZone Icon.png.meta new file mode 100644 index 000000000..9764026ac --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiAmbientForceZone Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 092f06332c018434b8c8ea86164ef4fd +timeCreated: 1482503923 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiBendConstraints Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiBendConstraints Icon.png new file mode 100644 index 000000000..a07cacc4a Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiBendConstraints Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiBendConstraints Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiBendConstraints Icon.png.meta new file mode 100644 index 000000000..0fd78b8cd --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiBendConstraints Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: f9aac3aba3ca7456d807e7fab120eb8a +timeCreated: 1448835892 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiBendTwistConstraints Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiBendTwistConstraints Icon.png new file mode 100644 index 000000000..63cbd0049 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiBendTwistConstraints Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiBendTwistConstraints Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiBendTwistConstraints Icon.png.meta new file mode 100644 index 000000000..a3012cd3e --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiBendTwistConstraints Icon.png.meta @@ -0,0 +1,95 @@ +fileFormatVersion: 2 +guid: 91de8d14a7b7a42d88d336323c428b20 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiBone Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiBone Icon.png new file mode 100644 index 000000000..6ddf89c7d Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiBone Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiBone Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiBone Icon.png.meta new file mode 100644 index 000000000..9ec7609e3 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiBone Icon.png.meta @@ -0,0 +1,140 @@ +fileFormatVersion: 2 +guid: 0a18e0376cc184a9b96ebb3bf0175cc2 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiChainConstraints Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiChainConstraints Icon.png new file mode 100644 index 000000000..a07d2cd33 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiChainConstraints Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiChainConstraints Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiChainConstraints Icon.png.meta new file mode 100644 index 000000000..1596bcb0a --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiChainConstraints Icon.png.meta @@ -0,0 +1,95 @@ +fileFormatVersion: 2 +guid: 1a42905220c3544c99b3ec98f88b080b +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiCloth Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiCloth Icon.png new file mode 100644 index 000000000..5c4c59c8a Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiCloth Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiCloth Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiCloth Icon.png.meta new file mode 100644 index 000000000..c6f8494ad --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiCloth Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 3970b32a4b80e4a9290b7ac8a8cf2619 +timeCreated: 1502052646 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiClothProxy Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiClothProxy Icon.png new file mode 100644 index 000000000..484acebfa Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiClothProxy Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiClothProxy Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiClothProxy Icon.png.meta new file mode 100644 index 000000000..f7d2521b7 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiClothProxy Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 7b6e7fb3568d24300be305b5d1d7554d +timeCreated: 1454660299 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiClothRenderer Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiClothRenderer Icon.png new file mode 100644 index 000000000..ce6b6bd9a Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiClothRenderer Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiClothRenderer Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiClothRenderer Icon.png.meta new file mode 100644 index 000000000..b6a8abd88 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiClothRenderer Icon.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 503f012f470234e44952b01da62590d2 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiCollider Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiCollider Icon.png new file mode 100644 index 000000000..d769edbd9 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiCollider Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiCollider Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiCollider Icon.png.meta new file mode 100644 index 000000000..dbadf1f99 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiCollider Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 6da22d6bce08a4f3d86542bb903de689 +timeCreated: 1502054757 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiCollider2D Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiCollider2D Icon.png new file mode 100644 index 000000000..e08dcb4f9 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiCollider2D Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiCollider2D Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiCollider2D Icon.png.meta new file mode 100644 index 000000000..8e7ac34da --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiCollider2D Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: e7185d0557058412db2fc499de3a0739 +timeCreated: 1503509205 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiCollisionMaterial Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiCollisionMaterial Icon.png new file mode 100644 index 000000000..87f714018 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiCollisionMaterial Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiCollisionMaterial Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiCollisionMaterial Icon.png.meta new file mode 100644 index 000000000..569974129 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiCollisionMaterial Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: e101664ae1c454916896aaaa3199221c +timeCreated: 1450304914 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiCurve Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiCurve Icon.png new file mode 100644 index 000000000..00ebdb8a2 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiCurve Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiCurve Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiCurve Icon.png.meta new file mode 100644 index 000000000..c0a6c7cbe --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiCurve Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: ed34a2f317b874412ad24d7bab730ad5 +timeCreated: 1466751256 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiDistanceConstraints Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiDistanceConstraints Icon.png new file mode 100644 index 000000000..2ab4ac8bc Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiDistanceConstraints Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiDistanceConstraints Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiDistanceConstraints Icon.png.meta new file mode 100644 index 000000000..7194cc7c4 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiDistanceConstraints Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 8be685232a6ad41508d8bbe9d003a892 +timeCreated: 1447902275 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiDistanceField Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiDistanceField Icon.png new file mode 100644 index 000000000..b3f52ee66 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiDistanceField Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiDistanceField Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiDistanceField Icon.png.meta new file mode 100644 index 000000000..fb4c6b08d --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiDistanceField Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: a83ed40096e3a40efa85f35b091e6298 +timeCreated: 1516041722 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiDistanceFieldRenderer Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiDistanceFieldRenderer Icon.png new file mode 100644 index 000000000..d5c420dbd Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiDistanceFieldRenderer Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiDistanceFieldRenderer Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiDistanceFieldRenderer Icon.png.meta new file mode 100644 index 000000000..137973681 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiDistanceFieldRenderer Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 41cb9d55de5b24458b45e5465606249a +timeCreated: 1516041845 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitter Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiEmitter Icon.png new file mode 100644 index 000000000..51b410b3d Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiEmitter Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitter Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiEmitter Icon.png.meta new file mode 100644 index 000000000..52988e56f --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiEmitter Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: d1048d188bf4d4e32ac7395da95aedd4 +timeCreated: 1466752717 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitterMaterialFluid Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiEmitterMaterialFluid Icon.png new file mode 100644 index 000000000..6a8ebdffb Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiEmitterMaterialFluid Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitterMaterialFluid Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiEmitterMaterialFluid Icon.png.meta new file mode 100644 index 000000000..81bcc5693 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiEmitterMaterialFluid Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: ea94643102f314a62a9fab85aaf9c559 +timeCreated: 1487699460 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitterMaterialGranular Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiEmitterMaterialGranular Icon.png new file mode 100644 index 000000000..38f11f203 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiEmitterMaterialGranular Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitterMaterialGranular Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiEmitterMaterialGranular Icon.png.meta new file mode 100644 index 000000000..6a243bbe6 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiEmitterMaterialGranular Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 7cf34d3db0e2e4a009f29fe06a4240d4 +timeCreated: 1487699330 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeCube Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeCube Icon.png new file mode 100644 index 000000000..0f82ff7b2 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeCube Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeCube Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeCube Icon.png.meta new file mode 100644 index 000000000..4b084eff5 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeCube Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 8723f934b6ce94aa698b20cae91c61bd +timeCreated: 1465712532 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeDisk Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeDisk Icon.png new file mode 100644 index 000000000..4ab4dbc10 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeDisk Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeDisk Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeDisk Icon.png.meta new file mode 100644 index 000000000..e97895184 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeDisk Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 84f2a1eb2e3bf40edbbfa365ba480de5 +timeCreated: 1465712532 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeEdge Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeEdge Icon.png new file mode 100644 index 000000000..520c263c5 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeEdge Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeEdge Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeEdge Icon.png.meta new file mode 100644 index 000000000..382e0513d --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeEdge Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 42373f4f9c4d04bc18125f69cf225dc0 +timeCreated: 1465712532 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeMesh Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeMesh Icon.png new file mode 100644 index 000000000..bb1366c01 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeMesh Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeMesh Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeMesh Icon.png.meta new file mode 100644 index 000000000..87b746397 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeMesh Icon.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: aadcf43cc18b74da587fc0fbe4fc019a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeSphere Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeSphere Icon.png new file mode 100644 index 000000000..29aac3f70 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeSphere Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeSphere Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeSphere Icon.png.meta new file mode 100644 index 000000000..28402b89f --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeSphere Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 882466012f5c44b69b035a407aa63e16 +timeCreated: 1465712839 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeSquare Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeSquare Icon.png new file mode 100644 index 000000000..6f60ed85a Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeSquare Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeSquare Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeSquare Icon.png.meta new file mode 100644 index 000000000..767c55041 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiEmitterShapeSquare Icon.png.meta @@ -0,0 +1,100 @@ +fileFormatVersion: 2 +guid: 775a8b8dbdc9a4bb9b5e06b22255ab80 +timeCreated: 1490861263 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiFluidRenderer Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiFluidRenderer Icon.png new file mode 100644 index 000000000..8bbace701 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiFluidRenderer Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiFluidRenderer Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiFluidRenderer Icon.png.meta new file mode 100644 index 000000000..5699caa0e --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiFluidRenderer Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: d1aaaa02ae8dd4da2a59227f5e4a3689 +timeCreated: 1487699364 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiMeshTopology Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiMeshTopology Icon.png new file mode 100644 index 000000000..7926bff21 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiMeshTopology Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiMeshTopology Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiMeshTopology Icon.png.meta new file mode 100644 index 000000000..95d97f436 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiMeshTopology Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 8e5266f7a0df04a17a5505a19aa2d4d1 +timeCreated: 1452221150 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiParticleHandle Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiParticleHandle Icon.png new file mode 100644 index 000000000..e50bb19e5 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiParticleHandle Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiParticleHandle Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiParticleHandle Icon.png.meta new file mode 100644 index 000000000..f6ce7de1f --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiParticleHandle Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 528d201bc10084452b24974deb16a423 +timeCreated: 1464049002 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiParticlePicker Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiParticlePicker Icon.png new file mode 100644 index 000000000..75f706cfd Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiParticlePicker Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiParticlePicker Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiParticlePicker Icon.png.meta new file mode 100644 index 000000000..0c23c24ff --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiParticlePicker Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 0f9d020f7c659443a93327a34ede18b4 +timeCreated: 1484584318 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiParticleRenderer Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiParticleRenderer Icon.png new file mode 100644 index 000000000..b234cb105 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiParticleRenderer Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiParticleRenderer Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiParticleRenderer Icon.png.meta new file mode 100644 index 000000000..743e09c4f --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiParticleRenderer Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: f424a87c9f03240c2870a664731ac9aa +timeCreated: 1447901223 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiPinConstraints Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiPinConstraints Icon.png new file mode 100644 index 000000000..81eb89c68 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiPinConstraints Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiPinConstraints Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiPinConstraints Icon.png.meta new file mode 100644 index 000000000..2861a1fb7 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiPinConstraints Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 85e4f507907784b9eb4637afe5c2e3a4 +timeCreated: 1450305437 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiPlant Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiPlant Icon.png new file mode 100644 index 000000000..bfa508a59 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiPlant Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiPlant Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiPlant Icon.png.meta new file mode 100644 index 000000000..3522620ff --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiPlant Icon.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 0edcf127e08404f979b63884bc2c0173 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiProfiler Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiProfiler Icon.png new file mode 100644 index 000000000..9bc5433f5 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiProfiler Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiProfiler Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiProfiler Icon.png.meta new file mode 100644 index 000000000..f4157015a --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiProfiler Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 1c322d61eeb3640408ee1119729d5c21 +timeCreated: 1482252070 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRigidbody Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiRigidbody Icon.png new file mode 100644 index 000000000..174c50672 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiRigidbody Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRigidbody Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiRigidbody Icon.png.meta new file mode 100644 index 000000000..8d93fea4b --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiRigidbody Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 1788ce7c914374d949486d9789c9f306 +timeCreated: 1502137043 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRigidbody2D Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiRigidbody2D Icon.png new file mode 100644 index 000000000..58f8861d4 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiRigidbody2D Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRigidbody2D Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiRigidbody2D Icon.png.meta new file mode 100644 index 000000000..6f40dad35 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiRigidbody2D Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 21e01eb398ab24a7abb1f3b493af6b20 +timeCreated: 1517939136 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRod Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiRod Icon.png new file mode 100644 index 000000000..61bdff8b7 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiRod Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRod Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiRod Icon.png.meta new file mode 100644 index 000000000..edf46095c --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiRod Icon.png.meta @@ -0,0 +1,95 @@ +fileFormatVersion: 2 +guid: 7125c3eebd3cc4f86aac51cca3ee1592 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRope Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiRope Icon.png new file mode 100644 index 000000000..d8490871c Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiRope Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRope Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiRope Icon.png.meta new file mode 100644 index 000000000..a4b2cf13e --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiRope Icon.png.meta @@ -0,0 +1,123 @@ +fileFormatVersion: 2 +guid: 7a860725829a34375a627c13703f0798 +labels: +- ObiRope +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRopeChainRenderer Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiRopeChainRenderer Icon.png new file mode 100644 index 000000000..ddd935d58 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiRopeChainRenderer Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRopeChainRenderer Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiRopeChainRenderer Icon.png.meta new file mode 100644 index 000000000..976d10a0f --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiRopeChainRenderer Icon.png.meta @@ -0,0 +1,95 @@ +fileFormatVersion: 2 +guid: 1289c40ad0e7c4fb3bd738f8a3f3e068 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRopeCursor Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiRopeCursor Icon.png new file mode 100644 index 000000000..58f15b5ec Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiRopeCursor Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRopeCursor Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiRopeCursor Icon.png.meta new file mode 100644 index 000000000..90a6dca20 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiRopeCursor Icon.png.meta @@ -0,0 +1,100 @@ +fileFormatVersion: 2 +guid: 618cf36eb21e34118ac5697fe77e2c3e +timeCreated: 1491822329 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRopeExtrudedRenderer Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiRopeExtrudedRenderer Icon.png new file mode 100644 index 000000000..2c5b674eb Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiRopeExtrudedRenderer Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRopeExtrudedRenderer Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiRopeExtrudedRenderer Icon.png.meta new file mode 100644 index 000000000..99f29747a --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiRopeExtrudedRenderer Icon.png.meta @@ -0,0 +1,95 @@ +fileFormatVersion: 2 +guid: a552ed0e1c0fd47c38eeff6d60b5b115 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRopeLineRenderer Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiRopeLineRenderer Icon.png new file mode 100644 index 000000000..91daeff17 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiRopeLineRenderer Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRopeLineRenderer Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiRopeLineRenderer Icon.png.meta new file mode 100644 index 000000000..1345c291f --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiRopeLineRenderer Icon.png.meta @@ -0,0 +1,95 @@ +fileFormatVersion: 2 +guid: 905a18c273af443d6bc588b59ebd56f6 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRopeMeshRenderer Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiRopeMeshRenderer Icon.png new file mode 100644 index 000000000..1e644b1b8 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiRopeMeshRenderer Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRopeMeshRenderer Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiRopeMeshRenderer Icon.png.meta new file mode 100644 index 000000000..1cae38b78 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiRopeMeshRenderer Icon.png.meta @@ -0,0 +1,95 @@ +fileFormatVersion: 2 +guid: c5afdc6c291b44a68be8bf66702358a5 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRopeSection Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiRopeSection Icon.png new file mode 100644 index 000000000..60ff7fb41 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiRopeSection Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiRopeSection Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiRopeSection Icon.png.meta new file mode 100644 index 000000000..4f157733c --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiRopeSection Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: fdb742a900c8d453ea5ce5027e80ad00 +timeCreated: 1464327508 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiShapeMatchingConstraints Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiShapeMatchingConstraints Icon.png new file mode 100644 index 000000000..8960a702f Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiShapeMatchingConstraints Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiShapeMatchingConstraints Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiShapeMatchingConstraints Icon.png.meta new file mode 100644 index 000000000..51d75f592 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiShapeMatchingConstraints Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: a2686776a1c104bfd8868f056a5cd335 +timeCreated: 1530703943 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiSkinConstraints Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiSkinConstraints Icon.png new file mode 100644 index 000000000..20c05c30f Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiSkinConstraints Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiSkinConstraints Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiSkinConstraints Icon.png.meta new file mode 100644 index 000000000..70912d2df --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiSkinConstraints Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: e58e2a3c37c7547a8a791a56e0a1ace6 +timeCreated: 1447902275 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiSkinnedCloth Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiSkinnedCloth Icon.png new file mode 100644 index 000000000..b5f4303fb Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiSkinnedCloth Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiSkinnedCloth Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiSkinnedCloth Icon.png.meta new file mode 100644 index 000000000..fc0c584fb --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiSkinnedCloth Icon.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 630a97028bd4d4777b63c4f8d7091317 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiSkinnedClothRenderer Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiSkinnedClothRenderer Icon.png new file mode 100644 index 000000000..65edf3629 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiSkinnedClothRenderer Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiSkinnedClothRenderer Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiSkinnedClothRenderer Icon.png.meta new file mode 100644 index 000000000..deba6ac2d --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiSkinnedClothRenderer Icon.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: b876d8c51699543acb2d919b54e8fd7a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiSoftbody Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiSoftbody Icon.png new file mode 100644 index 000000000..c7cf83310 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiSoftbody Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiSoftbody Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiSoftbody Icon.png.meta new file mode 100644 index 000000000..776e7944e --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiSoftbody Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 61d065505e09e47bc9f211c93b8d8941 +timeCreated: 1530704861 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiSoftbodySkinner Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiSoftbodySkinner Icon.png new file mode 100644 index 000000000..2ff31e964 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiSoftbodySkinner Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiSoftbodySkinner Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiSoftbodySkinner Icon.png.meta new file mode 100644 index 000000000..dd71bd93d --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiSoftbodySkinner Icon.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 654315230d2e241c3a9995c1e60507d0 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiSolver Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiSolver Icon.png new file mode 100644 index 000000000..8c681727a Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiSolver Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiSolver Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiSolver Icon.png.meta new file mode 100644 index 000000000..1a22f8ae9 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiSolver Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 4bb17fa3a0a95413a817e60391d26010 +timeCreated: 1447901223 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiSphericalForceZone Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiSphericalForceZone Icon.png new file mode 100644 index 000000000..f8ffcb82f Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiSphericalForceZone Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiSphericalForceZone Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiSphericalForceZone Icon.png.meta new file mode 100644 index 000000000..0790eb996 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiSphericalForceZone Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: d7b67d3b64785476bb7520aa3190fee3 +timeCreated: 1482503923 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiStitcher Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiStitcher Icon.png new file mode 100644 index 000000000..60e88bde1 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiStitcher Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiStitcher Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiStitcher Icon.png.meta new file mode 100644 index 000000000..68420da77 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiStitcher Icon.png.meta @@ -0,0 +1,100 @@ +fileFormatVersion: 2 +guid: ec05a2c75bb4a4ce5a3a1baa76b4c8d5 +timeCreated: 1489589286 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiStretchShearConstraints Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiStretchShearConstraints Icon.png new file mode 100644 index 000000000..5ddb1731d Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiStretchShearConstraints Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiStretchShearConstraints Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiStretchShearConstraints Icon.png.meta new file mode 100644 index 000000000..6b1bb22fd --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiStretchShearConstraints Icon.png.meta @@ -0,0 +1,95 @@ +fileFormatVersion: 2 +guid: b3583331769a946aab1e4c59859547b2 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiTearableCloth Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiTearableCloth Icon.png new file mode 100644 index 000000000..6e4149573 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiTearableCloth Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiTearableCloth Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiTearableCloth Icon.png.meta new file mode 100644 index 000000000..26dc03617 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiTearableCloth Icon.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: b77f723c576a04907a94ed4c1a78f74d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiTearableClothRenderer Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiTearableClothRenderer Icon.png new file mode 100644 index 000000000..1c8b05a62 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiTearableClothRenderer Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiTearableClothRenderer Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiTearableClothRenderer Icon.png.meta new file mode 100644 index 000000000..8f16f5bba --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiTearableClothRenderer Icon.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 13f5839d0b38e4abdb0dc5015a82afdc +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiTetherConstraints Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiTetherConstraints Icon.png new file mode 100644 index 000000000..85007acf5 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiTetherConstraints Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiTetherConstraints Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiTetherConstraints Icon.png.meta new file mode 100644 index 000000000..689fd5a3c --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiTetherConstraints Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 45a4a839cd07d49f698be261ce71ee3c +timeCreated: 1448331895 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiUpdater Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiUpdater Icon.png new file mode 100644 index 000000000..dc74d4fca Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiUpdater Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiUpdater Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiUpdater Icon.png.meta new file mode 100644 index 000000000..777fbae73 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiUpdater Icon.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 4e2c952f509ae40bdaf836136058d487 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/Icons/ObiVolumeConstraints Icon.png b/Assets/Obi/Editor/Resources/Icons/ObiVolumeConstraints Icon.png new file mode 100644 index 000000000..eefc8ae99 Binary files /dev/null and b/Assets/Obi/Editor/Resources/Icons/ObiVolumeConstraints Icon.png differ diff --git a/Assets/Obi/Editor/Resources/Icons/ObiVolumeConstraints Icon.png.meta b/Assets/Obi/Editor/Resources/Icons/ObiVolumeConstraints Icon.png.meta new file mode 100644 index 000000000..3fbf880e7 --- /dev/null +++ b/Assets/Obi/Editor/Resources/Icons/ObiVolumeConstraints Icon.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: d9d3ddf824bd449e5b405439ee034b12 +timeCreated: 1448433293 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/InvertButton.psd b/Assets/Obi/Editor/Resources/InvertButton.psd new file mode 100644 index 000000000..599534295 Binary files /dev/null and b/Assets/Obi/Editor/Resources/InvertButton.psd differ diff --git a/Assets/Obi/Editor/Resources/InvertButton.psd.meta b/Assets/Obi/Editor/Resources/InvertButton.psd.meta new file mode 100644 index 000000000..766dfafc8 --- /dev/null +++ b/Assets/Obi/Editor/Resources/InvertButton.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: d105dc041854c4b22b26600e565e6dc8 +timeCreated: 1478799531 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/LeafButton.png b/Assets/Obi/Editor/Resources/LeafButton.png new file mode 100644 index 000000000..c097c800b Binary files /dev/null and b/Assets/Obi/Editor/Resources/LeafButton.png differ diff --git a/Assets/Obi/Editor/Resources/LeafButton.png.meta b/Assets/Obi/Editor/Resources/LeafButton.png.meta new file mode 100644 index 000000000..dafc45a7d --- /dev/null +++ b/Assets/Obi/Editor/Resources/LeafButton.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: fc6329308ec7e4fa0a7134b8c1294dfd +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/MaskButton.psd b/Assets/Obi/Editor/Resources/MaskButton.psd new file mode 100644 index 000000000..5e3c792e8 Binary files /dev/null and b/Assets/Obi/Editor/Resources/MaskButton.psd differ diff --git a/Assets/Obi/Editor/Resources/MaskButton.psd.meta b/Assets/Obi/Editor/Resources/MaskButton.psd.meta new file mode 100644 index 000000000..b2c8c9f9c --- /dev/null +++ b/Assets/Obi/Editor/Resources/MaskButton.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 79009ead5070b47429cdb81d702888c1 +timeCreated: 1478802054 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/OpenCloseCurve.psd b/Assets/Obi/Editor/Resources/OpenCloseCurve.psd new file mode 100644 index 000000000..b315d257d Binary files /dev/null and b/Assets/Obi/Editor/Resources/OpenCloseCurve.psd differ diff --git a/Assets/Obi/Editor/Resources/OpenCloseCurve.psd.meta b/Assets/Obi/Editor/Resources/OpenCloseCurve.psd.meta new file mode 100644 index 000000000..3ca687cf1 --- /dev/null +++ b/Assets/Obi/Editor/Resources/OpenCloseCurve.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 0dd1ebceaea0d43018983f4b506cb72b +timeCreated: 1478799645 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/OptimizeButton.psd b/Assets/Obi/Editor/Resources/OptimizeButton.psd new file mode 100644 index 000000000..095ff613b Binary files /dev/null and b/Assets/Obi/Editor/Resources/OptimizeButton.psd differ diff --git a/Assets/Obi/Editor/Resources/OptimizeButton.psd.meta b/Assets/Obi/Editor/Resources/OptimizeButton.psd.meta new file mode 100644 index 000000000..ebfc164b1 --- /dev/null +++ b/Assets/Obi/Editor/Resources/OptimizeButton.psd.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 4343e41c062884ff4af81a34ade6d27c +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/OrientControlPoint.psd b/Assets/Obi/Editor/Resources/OrientControlPoint.psd new file mode 100644 index 000000000..22d8bf736 Binary files /dev/null and b/Assets/Obi/Editor/Resources/OrientControlPoint.psd differ diff --git a/Assets/Obi/Editor/Resources/OrientControlPoint.psd.meta b/Assets/Obi/Editor/Resources/OrientControlPoint.psd.meta new file mode 100644 index 000000000..4717e3529 --- /dev/null +++ b/Assets/Obi/Editor/Resources/OrientControlPoint.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 7727f2388bff242b1bdf55ae7a1abaec +timeCreated: 1478799645 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/PaddingMaterial.mat b/Assets/Obi/Editor/Resources/PaddingMaterial.mat new file mode 100644 index 000000000..2756d3f1c --- /dev/null +++ b/Assets/Obi/Editor/Resources/PaddingMaterial.mat @@ -0,0 +1,81 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: PaddingMaterial + m_Shader: {fileID: 4800000, guid: a915cd5b44e5b45509750bc8e231c325, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 7e271617753294f4aaf5d79862c5d182, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Glossiness: 0.5 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Padding: 64 + - _Parallax: 0.02 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Editor/Resources/PaddingMaterial.mat.meta b/Assets/Obi/Editor/Resources/PaddingMaterial.mat.meta new file mode 100644 index 000000000..b85cec38d --- /dev/null +++ b/Assets/Obi/Editor/Resources/PaddingMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c11f7c3415044fd9b6bc7896f38f9d8 +timeCreated: 1445287098 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/PaddingShader.shader b/Assets/Obi/Editor/Resources/PaddingShader.shader new file mode 100644 index 000000000..afab7e2fc --- /dev/null +++ b/Assets/Obi/Editor/Resources/PaddingShader.shader @@ -0,0 +1,81 @@ +Shader "Obi/PaddingShader" +{ + Properties + { + _MainTex ("Texture", 2D) = "white" {} + _Padding ("Paddding", Int) = 32 + } + SubShader + { + // No culling or depth + Cull Off ZWrite Off ZTest Always + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + }; + + struct v2f + { + float2 uv : TEXCOORD0; + float4 vertex : SV_POSITION; + }; + + v2f vert (appdata v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.uv = v.uv; + return o; + } + + sampler2D _MainTex; + float4 _MainTex_TexelSize; + int _Padding; + static const float2 offsets[8] = {float2(-1,0), float2(1,0), float2(0,1), float2(0,-1), float2(-1,1), float2(1,1), float2(1,-1), float2(-1,-1)}; + + fixed4 frag (v2f i) : SV_Target + { + + fixed4 sample = tex2D(_MainTex, i.uv); + + if (sample.a > 0) + return sample; + + fixed4 minSample = sample; + float minDist = 99999999; + + for (int k = 1; k < _Padding; ++k) + { + for (int j = 0; j < 8; ++j) + { + float2 offsetUV = i.uv + offsets[j] * _MainTex_TexelSize.xy * k; + fixed4 offsetSample = tex2Dlod(_MainTex, float4(offsetUV.xy,0,0)); + + if (offsetSample.a > 0) + { + float dist = length(i.uv - offsetUV); + if (dist < minDist) + { + minDist = dist; + minSample = offsetSample; + } + } + } + } + + return minSample; + } + ENDCG + } + } +} diff --git a/Assets/Obi/Editor/Resources/PaddingShader.shader.meta b/Assets/Obi/Editor/Resources/PaddingShader.shader.meta new file mode 100644 index 000000000..88728fdec --- /dev/null +++ b/Assets/Obi/Editor/Resources/PaddingShader.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a915cd5b44e5b45509750bc8e231c325 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/PauseButton.psd b/Assets/Obi/Editor/Resources/PauseButton.psd new file mode 100644 index 000000000..c22cc9cd7 Binary files /dev/null and b/Assets/Obi/Editor/Resources/PauseButton.psd differ diff --git a/Assets/Obi/Editor/Resources/PauseButton.psd.meta b/Assets/Obi/Editor/Resources/PauseButton.psd.meta new file mode 100644 index 000000000..6e24ea628 --- /dev/null +++ b/Assets/Obi/Editor/Resources/PauseButton.psd.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 280ec959fe3324151be804cf285fe931 +timeCreated: 1458681991 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/PencilButton.psd b/Assets/Obi/Editor/Resources/PencilButton.psd new file mode 100644 index 000000000..b6705e585 Binary files /dev/null and b/Assets/Obi/Editor/Resources/PencilButton.psd differ diff --git a/Assets/Obi/Editor/Resources/PencilButton.psd.meta b/Assets/Obi/Editor/Resources/PencilButton.psd.meta new file mode 100644 index 000000000..8e30edb8d --- /dev/null +++ b/Assets/Obi/Editor/Resources/PencilButton.psd.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: d7e21f95a6c084fd5be0c6ab594e4b78 +timeCreated: 1442227197 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/PinButton.psd b/Assets/Obi/Editor/Resources/PinButton.psd new file mode 100644 index 000000000..619b34e70 Binary files /dev/null and b/Assets/Obi/Editor/Resources/PinButton.psd differ diff --git a/Assets/Obi/Editor/Resources/PinButton.psd.meta b/Assets/Obi/Editor/Resources/PinButton.psd.meta new file mode 100644 index 000000000..0c59cff6a --- /dev/null +++ b/Assets/Obi/Editor/Resources/PinButton.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 0da1cb5104a8b4a60b761e4d1744d8ae +timeCreated: 1478802054 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/PinTranslation.psd b/Assets/Obi/Editor/Resources/PinTranslation.psd new file mode 100644 index 000000000..44495627a Binary files /dev/null and b/Assets/Obi/Editor/Resources/PinTranslation.psd differ diff --git a/Assets/Obi/Editor/Resources/PinTranslation.psd.meta b/Assets/Obi/Editor/Resources/PinTranslation.psd.meta new file mode 100644 index 000000000..db5c7f960 --- /dev/null +++ b/Assets/Obi/Editor/Resources/PinTranslation.psd.meta @@ -0,0 +1,95 @@ +fileFormatVersion: 2 +guid: 89138aa3f21fa426aa57afb83ebc3df3 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/PlayButton.psd b/Assets/Obi/Editor/Resources/PlayButton.psd new file mode 100644 index 000000000..296a318fa Binary files /dev/null and b/Assets/Obi/Editor/Resources/PlayButton.psd differ diff --git a/Assets/Obi/Editor/Resources/PlayButton.psd.meta b/Assets/Obi/Editor/Resources/PlayButton.psd.meta new file mode 100644 index 000000000..ca8974d23 --- /dev/null +++ b/Assets/Obi/Editor/Resources/PlayButton.psd.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 0368711c00a38431db570869752031a3 +timeCreated: 1435830837 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/PropertyGradientMaterial.mat b/Assets/Obi/Editor/Resources/PropertyGradientMaterial.mat new file mode 100644 index 000000000..6212a848a --- /dev/null +++ b/Assets/Obi/Editor/Resources/PropertyGradientMaterial.mat @@ -0,0 +1,80 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: PropertyGradientMaterial + m_Shader: {fileID: 4800000, guid: 41dfefbc390fc41cc8e1b421c43e52f5, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 7e271617753294f4aaf5d79862c5d182, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Glossiness: 0.5 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Editor/Resources/PropertyGradientMaterial.mat.meta b/Assets/Obi/Editor/Resources/PropertyGradientMaterial.mat.meta new file mode 100644 index 000000000..ee658f291 --- /dev/null +++ b/Assets/Obi/Editor/Resources/PropertyGradientMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cd3a36913cf194d75a271606ea32cde5 +timeCreated: 1445287098 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/PropertyGradientMaterial.shader b/Assets/Obi/Editor/Resources/PropertyGradientMaterial.shader new file mode 100644 index 000000000..e3f56cf78 --- /dev/null +++ b/Assets/Obi/Editor/Resources/PropertyGradientMaterial.shader @@ -0,0 +1,95 @@ +Shader "Obi/PropertyGradientMaterial" { + + Properties { + _MainTex ("Base (RGB)", 2D) = "white" {} + } + + SubShader { + + Pass { + + Offset 0, -50 + Cull Back + Fog { Mode Off } + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct vin{ + float4 vertex : POSITION; + fixed4 color : COLOR; + float2 texcoord : TEXCOORD0; + }; + + struct v2f { + float4 pos: POSITION; + fixed4 color : COLOR; + float2 texcoord : TEXCOORD0; + }; + + sampler2D _MainTex; + + v2f vert(vin v) { + v2f o; + o.pos = UnityObjectToClipPos (v.vertex); + o.texcoord = v.texcoord; + o.color = v.color; + return o; + } + + fixed4 frag(v2f i) : SV_Target { + return i.color; + } + + ENDCG + } + + Pass { + + Offset 0, -100 + Cull Back + ZWrite Off + Blend SrcAlpha OneMinusSrcAlpha + Fog { Mode Off } + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct vin{ + float4 vertex : POSITION; + fixed4 color : COLOR; + float2 texcoord : TEXCOORD0; + }; + + struct v2f { + float4 pos: POSITION; + fixed4 color : COLOR; + float2 texcoord : TEXCOORD0; + }; + + sampler2D _MainTex; + + v2f vert(vin v) { + v2f o; + o.pos = UnityObjectToClipPos (v.vertex); + o.texcoord = v.texcoord; + o.color = v.color; + return o; + } + + fixed4 frag(v2f i) : SV_Target { + return i.color; + } + + ENDCG + } + + } +} + diff --git a/Assets/Obi/Editor/Resources/PropertyGradientMaterial.shader.meta b/Assets/Obi/Editor/Resources/PropertyGradientMaterial.shader.meta new file mode 100644 index 000000000..2a3123aa1 --- /dev/null +++ b/Assets/Obi/Editor/Resources/PropertyGradientMaterial.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 41dfefbc390fc41cc8e1b421c43e52f5 +timeCreated: 1445287084 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/RadiusIndicator.psd b/Assets/Obi/Editor/Resources/RadiusIndicator.psd new file mode 100644 index 000000000..b51421581 Binary files /dev/null and b/Assets/Obi/Editor/Resources/RadiusIndicator.psd differ diff --git a/Assets/Obi/Editor/Resources/RadiusIndicator.psd.meta b/Assets/Obi/Editor/Resources/RadiusIndicator.psd.meta new file mode 100644 index 000000000..7f9e818b3 --- /dev/null +++ b/Assets/Obi/Editor/Resources/RadiusIndicator.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: fe4fd4da6245f48c1bcd64c8422b7b4c +timeCreated: 1471035768 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/RecButton.psd b/Assets/Obi/Editor/Resources/RecButton.psd new file mode 100644 index 000000000..d9cefe3da Binary files /dev/null and b/Assets/Obi/Editor/Resources/RecButton.psd differ diff --git a/Assets/Obi/Editor/Resources/RecButton.psd.meta b/Assets/Obi/Editor/Resources/RecButton.psd.meta new file mode 100644 index 000000000..bbb80a953 --- /dev/null +++ b/Assets/Obi/Editor/Resources/RecButton.psd.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: d5d19ff51922e4539a782a48d6adf4e1 +timeCreated: 1458681621 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/RemoveButton.psd b/Assets/Obi/Editor/Resources/RemoveButton.psd new file mode 100644 index 000000000..d422e962a Binary files /dev/null and b/Assets/Obi/Editor/Resources/RemoveButton.psd differ diff --git a/Assets/Obi/Editor/Resources/RemoveButton.psd.meta b/Assets/Obi/Editor/Resources/RemoveButton.psd.meta new file mode 100644 index 000000000..d561f91f4 --- /dev/null +++ b/Assets/Obi/Editor/Resources/RemoveButton.psd.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 8b56a65aecb4c42dea430c75690b8a4b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/RemoveControlPoint.psd b/Assets/Obi/Editor/Resources/RemoveControlPoint.psd new file mode 100644 index 000000000..acf904406 Binary files /dev/null and b/Assets/Obi/Editor/Resources/RemoveControlPoint.psd differ diff --git a/Assets/Obi/Editor/Resources/RemoveControlPoint.psd.meta b/Assets/Obi/Editor/Resources/RemoveControlPoint.psd.meta new file mode 100644 index 000000000..da5349a3c --- /dev/null +++ b/Assets/Obi/Editor/Resources/RemoveControlPoint.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 7d2ee37b895e649c186b4de7004bd444 +timeCreated: 1478799645 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/RemoveIcon.psd b/Assets/Obi/Editor/Resources/RemoveIcon.psd new file mode 100644 index 000000000..48f6bb12c Binary files /dev/null and b/Assets/Obi/Editor/Resources/RemoveIcon.psd differ diff --git a/Assets/Obi/Editor/Resources/RemoveIcon.psd.meta b/Assets/Obi/Editor/Resources/RemoveIcon.psd.meta new file mode 100644 index 000000000..069fee787 --- /dev/null +++ b/Assets/Obi/Editor/Resources/RemoveIcon.psd.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 79919ab1f90654f4f811134da7164129 +timeCreated: 1440144040 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/RestoreButton.psd b/Assets/Obi/Editor/Resources/RestoreButton.psd new file mode 100644 index 000000000..32674d37b Binary files /dev/null and b/Assets/Obi/Editor/Resources/RestoreButton.psd differ diff --git a/Assets/Obi/Editor/Resources/RestoreButton.psd.meta b/Assets/Obi/Editor/Resources/RestoreButton.psd.meta new file mode 100644 index 000000000..6086b8367 --- /dev/null +++ b/Assets/Obi/Editor/Resources/RestoreButton.psd.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 3b85a7a10acb94ba093952ee1cb68420 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/RewindButton.psd b/Assets/Obi/Editor/Resources/RewindButton.psd new file mode 100644 index 000000000..73b9694e2 Binary files /dev/null and b/Assets/Obi/Editor/Resources/RewindButton.psd differ diff --git a/Assets/Obi/Editor/Resources/RewindButton.psd.meta b/Assets/Obi/Editor/Resources/RewindButton.psd.meta new file mode 100644 index 000000000..5664ebb14 --- /dev/null +++ b/Assets/Obi/Editor/Resources/RewindButton.psd.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 3276c82f639db4e1393d50621591b623 +timeCreated: 1435831272 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/RotateControlPoint.psd b/Assets/Obi/Editor/Resources/RotateControlPoint.psd new file mode 100644 index 000000000..d21b4f3f6 Binary files /dev/null and b/Assets/Obi/Editor/Resources/RotateControlPoint.psd differ diff --git a/Assets/Obi/Editor/Resources/RotateControlPoint.psd.meta b/Assets/Obi/Editor/Resources/RotateControlPoint.psd.meta new file mode 100644 index 000000000..dc569cf07 --- /dev/null +++ b/Assets/Obi/Editor/Resources/RotateControlPoint.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: f33b6dcf4f7f946909841f077b4f1aa3 +timeCreated: 1478799645 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/ScaleControlPoint.psd b/Assets/Obi/Editor/Resources/ScaleControlPoint.psd new file mode 100644 index 000000000..cb52d7268 Binary files /dev/null and b/Assets/Obi/Editor/Resources/ScaleControlPoint.psd differ diff --git a/Assets/Obi/Editor/Resources/ScaleControlPoint.psd.meta b/Assets/Obi/Editor/Resources/ScaleControlPoint.psd.meta new file mode 100644 index 000000000..2f4c39cc3 --- /dev/null +++ b/Assets/Obi/Editor/Resources/ScaleControlPoint.psd.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: d13fb15ff13b2475b8585a693545eb0c +timeCreated: 1442227197 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/SelectIcon.psd b/Assets/Obi/Editor/Resources/SelectIcon.psd new file mode 100644 index 000000000..719afb5ce Binary files /dev/null and b/Assets/Obi/Editor/Resources/SelectIcon.psd differ diff --git a/Assets/Obi/Editor/Resources/SelectIcon.psd.meta b/Assets/Obi/Editor/Resources/SelectIcon.psd.meta new file mode 100644 index 000000000..82a5cbeba --- /dev/null +++ b/Assets/Obi/Editor/Resources/SelectIcon.psd.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: d10211a5e35be4a1f97e25a7f78b84fd +timeCreated: 1442227627 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/SelectedWorld_bck.psd b/Assets/Obi/Editor/Resources/SelectedWorld_bck.psd new file mode 100644 index 000000000..4d590d62b Binary files /dev/null and b/Assets/Obi/Editor/Resources/SelectedWorld_bck.psd differ diff --git a/Assets/Obi/Editor/Resources/SelectedWorld_bck.psd.meta b/Assets/Obi/Editor/Resources/SelectedWorld_bck.psd.meta new file mode 100644 index 000000000..716381932 --- /dev/null +++ b/Assets/Obi/Editor/Resources/SelectedWorld_bck.psd.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 01844e929694344c79f595973dd49a4a +timeCreated: 1440124004 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/SeparatorLine.psd b/Assets/Obi/Editor/Resources/SeparatorLine.psd new file mode 100644 index 000000000..b3234dc52 Binary files /dev/null and b/Assets/Obi/Editor/Resources/SeparatorLine.psd differ diff --git a/Assets/Obi/Editor/Resources/SeparatorLine.psd.meta b/Assets/Obi/Editor/Resources/SeparatorLine.psd.meta new file mode 100644 index 000000000..e939ca9ff --- /dev/null +++ b/Assets/Obi/Editor/Resources/SeparatorLine.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: ce2eac6e238e5450991af12bb7d594c1 +timeCreated: 1442217896 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -2 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/ShowTangentHandles.psd b/Assets/Obi/Editor/Resources/ShowTangentHandles.psd new file mode 100644 index 000000000..80bc18574 Binary files /dev/null and b/Assets/Obi/Editor/Resources/ShowTangentHandles.psd differ diff --git a/Assets/Obi/Editor/Resources/ShowTangentHandles.psd.meta b/Assets/Obi/Editor/Resources/ShowTangentHandles.psd.meta new file mode 100644 index 000000000..91403965a --- /dev/null +++ b/Assets/Obi/Editor/Resources/ShowTangentHandles.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 913a0a12dbef54c7ca939f3dc86dc19f +timeCreated: 1478799645 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/ShowThicknessHandles.psd b/Assets/Obi/Editor/Resources/ShowThicknessHandles.psd new file mode 100644 index 000000000..717c329e3 Binary files /dev/null and b/Assets/Obi/Editor/Resources/ShowThicknessHandles.psd differ diff --git a/Assets/Obi/Editor/Resources/ShowThicknessHandles.psd.meta b/Assets/Obi/Editor/Resources/ShowThicknessHandles.psd.meta new file mode 100644 index 000000000..bb3842d3c --- /dev/null +++ b/Assets/Obi/Editor/Resources/ShowThicknessHandles.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 71c2b8c0a1d5b4908a4764a8beed8da6 +timeCreated: 1478799645 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/SmoothButton.psd b/Assets/Obi/Editor/Resources/SmoothButton.psd new file mode 100644 index 000000000..bce383f62 Binary files /dev/null and b/Assets/Obi/Editor/Resources/SmoothButton.psd differ diff --git a/Assets/Obi/Editor/Resources/SmoothButton.psd.meta b/Assets/Obi/Editor/Resources/SmoothButton.psd.meta new file mode 100644 index 000000000..66ef2bacd --- /dev/null +++ b/Assets/Obi/Editor/Resources/SmoothButton.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 51e011fff1bad43078a63a1c71b11965 +timeCreated: 1478802054 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/StepButton.psd b/Assets/Obi/Editor/Resources/StepButton.psd new file mode 100644 index 000000000..049bfe911 Binary files /dev/null and b/Assets/Obi/Editor/Resources/StepButton.psd differ diff --git a/Assets/Obi/Editor/Resources/StepButton.psd.meta b/Assets/Obi/Editor/Resources/StepButton.psd.meta new file mode 100644 index 000000000..b6b08a1a4 --- /dev/null +++ b/Assets/Obi/Editor/Resources/StepButton.psd.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 3a4a9652d5a3546a494c48ad14e4b492 +timeCreated: 1435831067 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/StopButton.psd b/Assets/Obi/Editor/Resources/StopButton.psd new file mode 100644 index 000000000..d601f8691 Binary files /dev/null and b/Assets/Obi/Editor/Resources/StopButton.psd differ diff --git a/Assets/Obi/Editor/Resources/StopButton.psd.meta b/Assets/Obi/Editor/Resources/StopButton.psd.meta new file mode 100644 index 000000000..e07230971 --- /dev/null +++ b/Assets/Obi/Editor/Resources/StopButton.psd.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: d7f73785945ac441d9d2c7e6aea7c600 +timeCreated: 1435831194 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/StopRecButton.psd b/Assets/Obi/Editor/Resources/StopRecButton.psd new file mode 100644 index 000000000..2c3b63162 Binary files /dev/null and b/Assets/Obi/Editor/Resources/StopRecButton.psd differ diff --git a/Assets/Obi/Editor/Resources/StopRecButton.psd.meta b/Assets/Obi/Editor/Resources/StopRecButton.psd.meta new file mode 100644 index 000000000..defe78474 --- /dev/null +++ b/Assets/Obi/Editor/Resources/StopRecButton.psd.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: e4c64699292b6490aac7e91c52abdc2c +timeCreated: 1458681626 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/TextureIcon.psd b/Assets/Obi/Editor/Resources/TextureIcon.psd new file mode 100644 index 000000000..e72917621 Binary files /dev/null and b/Assets/Obi/Editor/Resources/TextureIcon.psd differ diff --git a/Assets/Obi/Editor/Resources/TextureIcon.psd.meta b/Assets/Obi/Editor/Resources/TextureIcon.psd.meta new file mode 100644 index 000000000..63fa7b668 --- /dev/null +++ b/Assets/Obi/Editor/Resources/TextureIcon.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 931c48569a82e4dae84d4702bf6da199 +timeCreated: 1478802054 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/ToggleableGroupBg.psd b/Assets/Obi/Editor/Resources/ToggleableGroupBg.psd new file mode 100644 index 000000000..5a186ceba Binary files /dev/null and b/Assets/Obi/Editor/Resources/ToggleableGroupBg.psd differ diff --git a/Assets/Obi/Editor/Resources/ToggleableGroupBg.psd.meta b/Assets/Obi/Editor/Resources/ToggleableGroupBg.psd.meta new file mode 100644 index 000000000..caa2025b8 --- /dev/null +++ b/Assets/Obi/Editor/Resources/ToggleableGroupBg.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: f08eeaacb82744bf498511aef9a6c649 +timeCreated: 1442217896 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -2 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/TopologyBorders.shader b/Assets/Obi/Editor/Resources/TopologyBorders.shader new file mode 100644 index 000000000..923f6aa42 --- /dev/null +++ b/Assets/Obi/Editor/Resources/TopologyBorders.shader @@ -0,0 +1,54 @@ +// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' + + +Shader "Obi/TopologyBorders" { +Properties { + _Color ("Main Color", Color) = (1,1,1,1) +} + +SubShader { + Tags { "RenderType"="Opaque" } + LOD 100 + + Pass { + + ZWrite Off + ZTest always + Cull Off + Fog { Mode Off } + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_fog + + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + }; + + struct v2f { + float4 vertex : SV_POSITION; + }; + + fixed4 _Color; + + v2f vert (appdata_t v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + return o; + } + + fixed4 frag (v2f i) : COLOR + { + fixed4 col = _Color; + UNITY_OPAQUE_ALPHA(col.a); + return col; + } + ENDCG + } +} + +} diff --git a/Assets/Obi/Editor/Resources/TopologyBorders.shader.meta b/Assets/Obi/Editor/Resources/TopologyBorders.shader.meta new file mode 100644 index 000000000..584e28856 --- /dev/null +++ b/Assets/Obi/Editor/Resources/TopologyBorders.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 973221b91492243759c6f0871607f830 +timeCreated: 1459228603 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/TopologyPreview.mat b/Assets/Obi/Editor/Resources/TopologyPreview.mat new file mode 100644 index 000000000..56d3d68c6 --- /dev/null +++ b/Assets/Obi/Editor/Resources/TopologyPreview.mat @@ -0,0 +1,85 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: TopologyPreview + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _EMISSION + m_InvalidKeywords: [] + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.49803922, g: 0.49803922, b: 0.49803922, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Editor/Resources/TopologyPreview.mat.meta b/Assets/Obi/Editor/Resources/TopologyPreview.mat.meta new file mode 100644 index 000000000..dfc815966 --- /dev/null +++ b/Assets/Obi/Editor/Resources/TopologyPreview.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 62dd1825e029c4d6291eb024124c520a +timeCreated: 1446008685 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/TopologyPreviewBorder.mat b/Assets/Obi/Editor/Resources/TopologyPreviewBorder.mat new file mode 100644 index 000000000..55b02f6e3 --- /dev/null +++ b/Assets/Obi/Editor/Resources/TopologyPreviewBorder.mat @@ -0,0 +1,80 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: TopologyPreviewBorder + m_Shader: {fileID: 10755, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Glossiness: 0.5 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Editor/Resources/TopologyPreviewBorder.mat.meta b/Assets/Obi/Editor/Resources/TopologyPreviewBorder.mat.meta new file mode 100644 index 000000000..32b303a9f --- /dev/null +++ b/Assets/Obi/Editor/Resources/TopologyPreviewBorder.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 83b0018e22cec4650b2f51e7b1cae99f +timeCreated: 1446016691 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/TranslateControlPoint.psd b/Assets/Obi/Editor/Resources/TranslateControlPoint.psd new file mode 100644 index 000000000..2c3ee0c71 Binary files /dev/null and b/Assets/Obi/Editor/Resources/TranslateControlPoint.psd differ diff --git a/Assets/Obi/Editor/Resources/TranslateControlPoint.psd.meta b/Assets/Obi/Editor/Resources/TranslateControlPoint.psd.meta new file mode 100644 index 000000000..d0e97e746 --- /dev/null +++ b/Assets/Obi/Editor/Resources/TranslateControlPoint.psd.meta @@ -0,0 +1,116 @@ +fileFormatVersion: 2 +guid: b759d71b63d26412f9bdf4730efccd87 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/TrunkButton.png b/Assets/Obi/Editor/Resources/TrunkButton.png new file mode 100644 index 000000000..6ed2d0f3e Binary files /dev/null and b/Assets/Obi/Editor/Resources/TrunkButton.png differ diff --git a/Assets/Obi/Editor/Resources/TrunkButton.png.meta b/Assets/Obi/Editor/Resources/TrunkButton.png.meta new file mode 100644 index 000000000..abc62b327 --- /dev/null +++ b/Assets/Obi/Editor/Resources/TrunkButton.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: ca503dc9534e0488b98fc100f4fd1d5d +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/UVSpaceColor.shader b/Assets/Obi/Editor/Resources/UVSpaceColor.shader new file mode 100644 index 000000000..c8b2ac3eb --- /dev/null +++ b/Assets/Obi/Editor/Resources/UVSpaceColor.shader @@ -0,0 +1,47 @@ +Shader "Obi/UVSpaceColor" +{ + SubShader + { + Tags { "RenderType"="Opaque" } + LOD 100 + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + fixed4 color : COLOR; + float2 uv : TEXCOORD0; + }; + + struct v2f + { + float2 uv : TEXCOORD0; + fixed4 color : COLOR; + float4 vertex : SV_POSITION; + }; + + v2f vert (appdata v) + { + v2f o; + o.uv = v.uv; + o.vertex = float4(v.uv.xy,0,1); + o.vertex = UnityObjectToClipPos(float4(v.uv,0,1)); + o.color = v.color; + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + return i.color; + } + ENDCG + } + } +} diff --git a/Assets/Obi/Editor/Resources/UVSpaceColor.shader.meta b/Assets/Obi/Editor/Resources/UVSpaceColor.shader.meta new file mode 100644 index 000000000..367df23aa --- /dev/null +++ b/Assets/Obi/Editor/Resources/UVSpaceColor.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 459ae7c4c81724f20b6810647d2dbd3d +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/UVSpaceColorMaterial.mat b/Assets/Obi/Editor/Resources/UVSpaceColorMaterial.mat new file mode 100644 index 000000000..5519f761d --- /dev/null +++ b/Assets/Obi/Editor/Resources/UVSpaceColorMaterial.mat @@ -0,0 +1,80 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: UVSpaceColorMaterial + m_Shader: {fileID: 4800000, guid: 459ae7c4c81724f20b6810647d2dbd3d, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 7e271617753294f4aaf5d79862c5d182, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Glossiness: 0.5 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Editor/Resources/UVSpaceColorMaterial.mat.meta b/Assets/Obi/Editor/Resources/UVSpaceColorMaterial.mat.meta new file mode 100644 index 000000000..66a8487b8 --- /dev/null +++ b/Assets/Obi/Editor/Resources/UVSpaceColorMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8d64d32033a9145218d8c42c02e53b63 +timeCreated: 1445287098 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/UnpinButton.psd b/Assets/Obi/Editor/Resources/UnpinButton.psd new file mode 100644 index 000000000..46e280c5a Binary files /dev/null and b/Assets/Obi/Editor/Resources/UnpinButton.psd differ diff --git a/Assets/Obi/Editor/Resources/UnpinButton.psd.meta b/Assets/Obi/Editor/Resources/UnpinButton.psd.meta new file mode 100644 index 000000000..a96c6e380 --- /dev/null +++ b/Assets/Obi/Editor/Resources/UnpinButton.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 546d0fbcbc7794babadce998d53cc471 +timeCreated: 1478802054 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/VoxelMaterial.mat b/Assets/Obi/Editor/Resources/VoxelMaterial.mat new file mode 100644 index 000000000..48145edff --- /dev/null +++ b/Assets/Obi/Editor/Resources/VoxelMaterial.mat @@ -0,0 +1,83 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: VoxelMaterial + m_Shader: {fileID: 4800000, guid: a5455d2f5ab50497d8642726d64b9cd5, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 7e271617753294f4aaf5d79862c5d182, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Glossiness: 0.5 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _Size: 0.95 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _InsideColor: {r: 0.8627451, g: 0.8627451, b: 0.8627451, a: 1} + - _OutsideColor: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Editor/Resources/VoxelMaterial.mat.meta b/Assets/Obi/Editor/Resources/VoxelMaterial.mat.meta new file mode 100644 index 000000000..344e7c4d4 --- /dev/null +++ b/Assets/Obi/Editor/Resources/VoxelMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 130b71128e55b4a3f9a4dceca6667bf9 +timeCreated: 1445287098 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/VoxelMaterial.shader b/Assets/Obi/Editor/Resources/VoxelMaterial.shader new file mode 100644 index 000000000..55d1a82b4 --- /dev/null +++ b/Assets/Obi/Editor/Resources/VoxelMaterial.shader @@ -0,0 +1,63 @@ +Shader "Obi/VoxelMaterial" { + + Properties { + _MainTex ("Base (RGB)", 2D) = "white" {} + _Size("Square size",Float) = 0.95 + _InsideColor("Inside color",Color) = (1,1,1,1) + _OutsideColor("Outside color",Color) = (0,0,0,1) + } + + SubShader { + + Pass { + + Cull Back + Fog { Mode Off } + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct vin{ + float4 vertex : POSITION; + fixed4 color : COLOR; + float2 texcoord : TEXCOORD0; + }; + + struct v2f { + float4 pos: POSITION; + fixed4 color : COLOR; + float2 texcoord : TEXCOORD0; + }; + + sampler2D _MainTex; + float _Size; + fixed4 _InsideColor; + fixed4 _OutsideColor; + + v2f vert(vin v) { + v2f o; + o.pos = UnityObjectToClipPos (v.vertex); + o.texcoord = v.texcoord; + o.color = v.color; + return o; + } + + fixed4 frag(v2f i) : SV_Target { + + float2 centered = i.texcoord * 2 - 1; + float square = max(abs(centered.x), abs(centered.y)) - 0.05f/(2.0*1.4142); + float width = fwidth(square); + float alpha = smoothstep(_Size - width, _Size, square); + + return lerp(_InsideColor,_OutsideColor,alpha); + } + + ENDCG + } + + } +} + diff --git a/Assets/Obi/Editor/Resources/VoxelMaterial.shader.meta b/Assets/Obi/Editor/Resources/VoxelMaterial.shader.meta new file mode 100644 index 000000000..d5800a63c --- /dev/null +++ b/Assets/Obi/Editor/Resources/VoxelMaterial.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a5455d2f5ab50497d8642726d64b9cd5 +timeCreated: 1445287084 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/Resources/obi_editor_logo.png b/Assets/Obi/Editor/Resources/obi_editor_logo.png new file mode 100644 index 000000000..51c3c88b6 Binary files /dev/null and b/Assets/Obi/Editor/Resources/obi_editor_logo.png differ diff --git a/Assets/Obi/Editor/Resources/obi_editor_logo.png.meta b/Assets/Obi/Editor/Resources/obi_editor_logo.png.meta new file mode 100644 index 000000000..464725b23 --- /dev/null +++ b/Assets/Obi/Editor/Resources/obi_editor_logo.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 8eeefc8d5c2ab4e0582a93f719bcd31a +timeCreated: 1471538194 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod.meta b/Assets/Obi/Editor/RopeAndRod.meta new file mode 100644 index 000000000..2f90f428d --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 00c9b99ffa90a4646b360dcad1ea0b84 +labels: +- ObiRope +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/Blueprints.meta b/Assets/Obi/Editor/RopeAndRod/Blueprints.meta new file mode 100644 index 000000000..2d99c2303 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/Blueprints.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 16f13a837c41b437a87aa83162abd677 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/Blueprints/ObiRopeBaseBlueprintEditor.cs b/Assets/Obi/Editor/RopeAndRod/Blueprints/ObiRopeBaseBlueprintEditor.cs new file mode 100644 index 000000000..ff5c98e18 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/Blueprints/ObiRopeBaseBlueprintEditor.cs @@ -0,0 +1,58 @@ +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using System.Collections; +using System; + +namespace Obi +{ + [CustomEditor(typeof(ObiRopeBlueprintBase), true)] + public class ObiRopeBaseBlueprintEditor : ObiActorBlueprintEditor + { + + public override void OnEnable() + { + base.OnEnable(); + Undo.undoRedoPerformed += UndoRedoPerformed; + } + + public override void OnDisable() + { + base.OnDisable(); + Undo.undoRedoPerformed -= UndoRedoPerformed; + } + + void UndoRedoPerformed() + { + // Re-generate the blueprint after undo/redo. + if (blueprint != null) + blueprint.GenerateImmediate(); + } + + public override void OnInspectorGUI() + { + + serializedObject.UpdateIfRequiredOrScript(); + + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + Editor.DrawPropertiesExcluding(serializedObject, "m_Script"); + + EditorGUILayout.EndVertical(); + + if (GUI.changed) + { + serializedObject.ApplyModifiedProperties(); + + // Re-generate the blueprint if any element has been changed. + if (blueprint != null) + blueprint.GenerateImmediate(); + + // There might be blueprint editing operations that have no undo entry, so do this to + // ensure changes are serialized to disk by Unity. + EditorUtility.SetDirty(this); + } + } + } + + +} diff --git a/Assets/Obi/Editor/RopeAndRod/Blueprints/ObiRopeBaseBlueprintEditor.cs.meta b/Assets/Obi/Editor/RopeAndRod/Blueprints/ObiRopeBaseBlueprintEditor.cs.meta new file mode 100644 index 000000000..c5925c274 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/Blueprints/ObiRopeBaseBlueprintEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 87efff4816bdd4fa4bda69ca33516658 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/BonePropertyCurveDrawer.cs b/Assets/Obi/Editor/RopeAndRod/BonePropertyCurveDrawer.cs new file mode 100644 index 000000000..8d240cdec --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/BonePropertyCurveDrawer.cs @@ -0,0 +1,29 @@ +using UnityEngine; +using UnityEditor; + +namespace Obi +{ + [CustomPropertyDrawer(typeof(ObiBone.BonePropertyCurve))] + public class BonePropertyCurveDrawer : PropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, label, property); + + float curveFieldWidth = (position.width - EditorGUIUtility.labelWidth) * 0.5f; + + var multRect = new Rect(position.x, position.y, position.width - curveFieldWidth, position.height); + EditorGUI.PropertyField(multRect, property.FindPropertyRelative("multiplier"), label); + + var indent = EditorGUI.indentLevel; + EditorGUI.indentLevel = 0; + + var curveRect = new Rect(position.x + position.width - curveFieldWidth + 3, position.y, curveFieldWidth - 3, position.height); + EditorGUI.CurveField(curveRect, property.FindPropertyRelative("curve"), Color.green, new Rect(0, 0, 1, 1), GUIContent.none); + + EditorGUI.indentLevel = indent; + + EditorGUI.EndProperty(); + } + } +} diff --git a/Assets/Obi/Editor/RopeAndRod/BonePropertyCurveDrawer.cs.meta b/Assets/Obi/Editor/RopeAndRod/BonePropertyCurveDrawer.cs.meta new file mode 100644 index 000000000..3fb84d07b --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/BonePropertyCurveDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b78a1342294ee4644a9a0d6a247d3604 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/IgnoredBoneDrawer.cs b/Assets/Obi/Editor/RopeAndRod/IgnoredBoneDrawer.cs new file mode 100644 index 000000000..2ba8fccf2 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/IgnoredBoneDrawer.cs @@ -0,0 +1,30 @@ +using UnityEngine; +using UnityEditor; + +namespace Obi +{ + [CustomPropertyDrawer(typeof(ObiBone.IgnoredBone))] + public class IgnoredBoneDrawer : PropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, label, property); + + GUI.Box(EditorGUI.IndentedRect(position), GUIContent.none, ObiEditorUtils.GetToggleablePropertyGroupStyle()); + + var rect = new Rect(position.x + 4, position.y + EditorGUIUtility.standardVerticalSpacing, position.width - 8, EditorGUIUtility.singleLineHeight); + EditorGUI.PropertyField(rect, property.FindPropertyRelative("bone"), label); + + rect.position = new Vector2(rect.position.x, rect.position.y + EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing); + EditorGUI.PropertyField(rect, property.FindPropertyRelative("ignoreChildren")); + + EditorGUI.EndProperty(); + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + int lineCount = 2; + return EditorGUIUtility.singleLineHeight * lineCount + EditorGUIUtility.standardVerticalSpacing * (lineCount + 1); + } + } +} diff --git a/Assets/Obi/Editor/RopeAndRod/IgnoredBoneDrawer.cs.meta b/Assets/Obi/Editor/RopeAndRod/IgnoredBoneDrawer.cs.meta new file mode 100644 index 000000000..f1da00749 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/IgnoredBoneDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f9e4bd0b2f9544e039fef4cd5d95232f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/ObiBoneEditor.cs b/Assets/Obi/Editor/RopeAndRod/ObiBoneEditor.cs new file mode 100644 index 000000000..adf371436 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiBoneEditor.cs @@ -0,0 +1,212 @@ +using UnityEditor; +using UnityEngine; + +namespace Obi +{ + + [CustomEditor(typeof(ObiBone))] + public class ObiBoneEditor : Editor + { + ObiBone bone; + + SerializedProperty collisionMaterial; + SerializedProperty selfCollisions; + SerializedProperty surfaceCollisions; + + SerializedProperty mass; + SerializedProperty rotationalMass; + SerializedProperty radius; + + SerializedProperty skinConstraintsEnabled; + SerializedProperty skinCompliance; + SerializedProperty skinRadius; + + SerializedProperty stretchShearConstraintsEnabled; + SerializedProperty stretchCompliance; + SerializedProperty shear1Compliance; + SerializedProperty shear2Compliance; + + SerializedProperty bendTwistConstraintsEnabled; + SerializedProperty torsionCompliance; + SerializedProperty bend1Compliance; + SerializedProperty bend2Compliance; + SerializedProperty plasticYield; + SerializedProperty plasticCreep; + + SerializedProperty fixRoot; + SerializedProperty stretchBones; + SerializedProperty ignored; + + public void OnEnable() + { + bone = (ObiBone)target; + + fixRoot = serializedObject.FindProperty("fixRoot"); + stretchBones = serializedObject.FindProperty("stretchBones"); + ignored = serializedObject.FindProperty("ignored"); + + collisionMaterial = serializedObject.FindProperty("m_CollisionMaterial"); + selfCollisions = serializedObject.FindProperty("m_SelfCollisions"); + surfaceCollisions = serializedObject.FindProperty("m_SurfaceCollisions"); + + mass = serializedObject.FindProperty("_mass"); + rotationalMass = serializedObject.FindProperty("_rotationalMass"); + radius = serializedObject.FindProperty("_radius"); + + skinConstraintsEnabled = serializedObject.FindProperty("_skinConstraintsEnabled"); + skinRadius = serializedObject.FindProperty("_skinRadius"); + skinCompliance = serializedObject.FindProperty("_skinCompliance"); + + stretchShearConstraintsEnabled = serializedObject.FindProperty("_stretchShearConstraintsEnabled"); + stretchCompliance = serializedObject.FindProperty("_stretchCompliance"); + shear1Compliance = serializedObject.FindProperty("_shear1Compliance"); + shear2Compliance = serializedObject.FindProperty("_shear2Compliance"); + + bendTwistConstraintsEnabled = serializedObject.FindProperty("_bendTwistConstraintsEnabled"); + torsionCompliance = serializedObject.FindProperty("_torsionCompliance"); + bend1Compliance = serializedObject.FindProperty("_bend1Compliance"); + bend2Compliance = serializedObject.FindProperty("_bend2Compliance"); + plasticYield = serializedObject.FindProperty("_plasticYield"); + plasticCreep = serializedObject.FindProperty("_plasticCreep"); + + } + + public void OnDisable() + { + Tools.hidden = false; + } + + public override void OnInspectorGUI() + { + serializedObject.UpdateIfRequiredOrScript(); + + EditorGUILayout.LabelField("Bones", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(fixRoot); + EditorGUILayout.PropertyField(stretchBones); + EditorGUILayout.PropertyField(ignored); + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Collisions", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(collisionMaterial, new GUIContent("Collision material")); + EditorGUI.BeginChangeCheck(); + var newCategory = EditorGUILayout.Popup("Collision category", ObiUtils.GetCategoryFromFilter(bone.Filter), ObiUtils.categoryNames); + if (EditorGUI.EndChangeCheck()) + { + foreach (ObiBone t in targets) + { + Undo.RecordObject(t, "Set collision category"); + t.Filter = ObiUtils.MakeFilter(ObiUtils.GetMaskFromFilter(t.Filter), newCategory); + PrefabUtility.RecordPrefabInstancePropertyModifications(t); + } + } + + EditorGUI.BeginChangeCheck(); + var newMask = EditorGUILayout.MaskField("Collides with", ObiUtils.GetMaskFromFilter(bone.Filter), ObiUtils.categoryNames); + if (EditorGUI.EndChangeCheck()) + { + foreach (ObiBone t in targets) + { + Undo.RecordObject(t, "Set collision mask"); + t.Filter = ObiUtils.MakeFilter(newMask, ObiUtils.GetCategoryFromFilter(t.Filter)); + PrefabUtility.RecordPrefabInstancePropertyModifications(t); + } + } + EditorGUILayout.PropertyField(selfCollisions, new GUIContent("Self collisions")); + EditorGUILayout.PropertyField(surfaceCollisions, new GUIContent("Surface-based collisions")); + EditorGUILayout.Space(); + + ObiEditorUtils.DoPropertyGroup(new GUIContent("Particles"), + () => { + EditorGUILayout.PropertyField(mass); + EditorGUILayout.PropertyField(rotationalMass); + EditorGUILayout.PropertyField(radius); + }); + + ObiEditorUtils.DoToggleablePropertyGroup(skinConstraintsEnabled, new GUIContent("Skin Constraints", Resources.Load("Icons/ObiSkinConstraints Icon")), + () => { + EditorGUILayout.PropertyField(skinRadius, new GUIContent("Skin radius")); + EditorGUILayout.PropertyField(skinCompliance, new GUIContent("Skin compliance")); + }); + + ObiEditorUtils.DoToggleablePropertyGroup(stretchShearConstraintsEnabled, new GUIContent("Stretch & Shear Constraints", Resources.Load("Icons/ObiStretchShearConstraints Icon")), + () => { + EditorGUILayout.PropertyField(stretchCompliance, new GUIContent("Stretch compliance")); + EditorGUILayout.PropertyField(shear1Compliance, new GUIContent("Shear compliance X")); + EditorGUILayout.PropertyField(shear2Compliance, new GUIContent("Shear compliance Y")); + }); + + ObiEditorUtils.DoToggleablePropertyGroup(bendTwistConstraintsEnabled, new GUIContent("Bend & Twist Constraints", Resources.Load("Icons/ObiBendTwistConstraints Icon")), + () => { + EditorGUILayout.PropertyField(torsionCompliance, new GUIContent("Torsion compliance")); + EditorGUILayout.PropertyField(bend1Compliance, new GUIContent("Bend compliance X")); + EditorGUILayout.PropertyField(bend2Compliance, new GUIContent("Bend compliance Y")); + EditorGUILayout.PropertyField(plasticYield, new GUIContent("Plastic yield")); + EditorGUILayout.PropertyField(plasticCreep, new GUIContent("Plastic creep")); + }); + + if (GUI.changed) + serializedObject.ApplyModifiedProperties(); + + } + + + [DrawGizmo(GizmoType.Selected)] + private static void DrawGizmos(ObiBone actor, GizmoType gizmoType) + { + if (actor.boneBlueprint != null && actor.isLoaded) + { + var color = new Color(1, 1, 1, 0.5f); + var upColor = new Color(0, 1, 0, 1); + + for (int i = 0; i < actor.boneBlueprint.parentIndices.Count; ++i) + { + int parent = actor.boneBlueprint.parentIndices[i]; + if (parent >= 0) + { + var index = actor.solverIndices[parent]; + var nextIndex = actor.solverIndices[i]; + + var pos = actor.GetParticlePosition(index); + var npos = actor.GetParticlePosition(nextIndex); + var or = actor.GetParticleOrientation(index); + var nor = actor.GetParticleOrientation(nextIndex); + var rad = actor.GetParticleMaxRadius(index); + var nrad = actor.GetParticleMaxRadius(nextIndex); + + var up = pos + or * Vector3.up * rad; + var down = pos + or * Vector3.down * rad; + var left = pos + or * Vector3.left * rad; + var right = pos + or * Vector3.right * rad; + + var nup = npos + nor * Vector3.up * nrad; + var ndown = npos + nor * Vector3.down * nrad; + var nleft = npos + nor * Vector3.left * nrad; + var nright = npos + nor * Vector3.right * nrad; + + Handles.color = upColor; + Handles.DrawLine(up, nup); + + Handles.color = color; + Handles.DrawLine(down, ndown); + Handles.DrawLine(left, nleft); + Handles.DrawLine(right, nright); + Handles.DrawWireDisc(npos, nor * Vector3.forward, nrad); + } + } + if (actor.particleCount > 0) + { + var index = actor.solverIndices[0]; + var pos = actor.GetParticlePosition(index); + var or = actor.GetParticleOrientation(index); + var rad = actor.GetParticleMaxRadius(index); + + Handles.DrawWireDisc(pos, or * Vector3.forward, rad); + } + } + } + + } + +} + + diff --git a/Assets/Obi/Editor/RopeAndRod/ObiBoneEditor.cs.meta b/Assets/Obi/Editor/RopeAndRod/ObiBoneEditor.cs.meta new file mode 100644 index 000000000..2f33c8d3c --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiBoneEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1f25827f322514e1bb93fd309cd801bf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/ObiDraggableIcon.cs b/Assets/Obi/Editor/RopeAndRod/ObiDraggableIcon.cs new file mode 100644 index 000000000..1d41c3b92 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiDraggableIcon.cs @@ -0,0 +1,73 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; + +namespace Obi{ +public class ObiDraggableIcon { + + public static bool Draw(bool selected, int id, ref Vector2 position, Color color){ + + Texture texture = Resources.Load("Dot"); + + int controlID = GUIUtility.GetControlID(id,FocusType.Passive); + + // select vertex on mouse click: + switch (Event.current.GetTypeForControl(controlID)){ + + case EventType.MouseDown: + + Rect area = new Rect (position.x-5, position.y-5, 10, 10); + + if (area.Contains(Event.current.mousePosition)) + { + selected = true; + GUIUtility.hotControl = controlID; + Event.current.Use(); + }else if ((Event.current.modifiers & EventModifiers.Shift) == 0 && (Event.current.modifiers & EventModifiers.Command) == 0){ + + selected = false; + + } + + break; + + case EventType.MouseDrag: + + if (GUIUtility.hotControl == controlID){ + + position = Event.current.mousePosition; + GUI.changed = true; + + Event.current.Use(); + + } + + break; + + case EventType.MouseUp: + + if (GUIUtility.hotControl == controlID){ + + GUIUtility.hotControl = 0; + Event.current.Use(); + + } + + break; + + case EventType.Repaint: + + Color oldColor = GUI.color; + GUI.color = selected ? ObiEditorSettings.GetOrCreateSettings().selectedParticleColor : ObiEditorSettings.GetOrCreateSettings().particleColor; + Rect rect = new Rect (position.x-2, position.y-2, 4, 4); + GUI.Box(rect,EditorGUIUtility.whiteTexture); + GUI.color = oldColor; + + break; + + } + + return selected; + } +} +} diff --git a/Assets/Obi/Editor/RopeAndRod/ObiDraggableIcon.cs.meta b/Assets/Obi/Editor/RopeAndRod/ObiDraggableIcon.cs.meta new file mode 100644 index 000000000..d2449d026 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiDraggableIcon.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c736a38cd50af4bccbd08b83993abbdb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/ObiPathEditor.cs b/Assets/Obi/Editor/RopeAndRod/ObiPathEditor.cs new file mode 100644 index 000000000..df630acf4 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiPathEditor.cs @@ -0,0 +1,1224 @@ +using UnityEngine; +using UnityEditor; +using UnityEditor.EditorTools; +using System; + +namespace Obi +{ + [EditorTool("Obi Path Editor Tool",typeof(ObiRopeBase))] + public class ObiPathEditor : EditorTool + { + enum PathEditorTool + { + TranslatePoints, + RotatePoints, + ScalePoints, + OrientPoints, + InsertPoints, + RemovePoints + } + + ObiPath path; + + Quaternion prevRot = Quaternion.identity; + Vector3 prevScale = Vector3.one; + + PathEditorTool currentTool = PathEditorTool.TranslatePoints; + bool showTangentHandles = true; + bool showThicknessHandles = true; + + public bool needsRepaint = false; + + protected bool[] selectedStatus; + protected int lastSelected = 0; + protected int selectedCount = 0; + protected Vector3 selectionAverage; + protected bool useOrientation = false; + + protected static Color handleColor = new Color(1, 0.55f, 0.1f); + protected GUIContent m_IconContent; + + public override GUIContent toolbarIcon + { + get + { + if (m_IconContent == null) + { + m_IconContent = new GUIContent() + { + image = Resources.Load("EditCurves"), + text = "Obi Path Editor Tool", + tooltip = "Obi Path Editor Tool" + }; + } + return m_IconContent; + } + } + + ObiRopeBlueprintBase blueprint + { + get { return (target as ObiRopeBase).sharedBlueprint as ObiRopeBlueprintBase; } + } + + public void OnEnable() + { + this.useOrientation = target is ObiRod; + selectedStatus = new bool[0]; + } + + public void ResizeCPArrays() + { + Array.Resize(ref selectedStatus, path.ControlPointCount); + } + + int windowId; + public override void OnToolGUI(EditorWindow window) + { + needsRepaint = false; + + float thicknessScale = blueprint.thickness; + this.path = (target as ObiRopeBase).path; + var matrix = (target as ObiRopeBase).transform.localToWorldMatrix; + + ResizeCPArrays(); + + HandleUtility.AddDefaultControl(GUIUtility.GetControlID(FocusType.Passive)); + + // get a window ID: + if (Event.current.type != EventType.Used) + windowId = GUIUtility.GetControlID(FocusType.Passive); + + Matrix4x4 prevMatrix = Handles.matrix; + Handles.matrix = matrix; + + // Draw control points: + Handles.color = handleColor; + for (int i = 0; i < path.ControlPointCount; ++i) + { + needsRepaint |= DrawControlPoint(i); + } + + // Control point selection handle: + needsRepaint |= ObiPathHandles.SplineCPSelector(path, selectedStatus); + + // Count selected and calculate average position: + selectionAverage = GetControlPointAverage(out lastSelected, out selectedCount); + + // Draw cp tool handles: + needsRepaint |= SplineCPTools(matrix); + + if (showThicknessHandles) + needsRepaint |= DoThicknessHandles(thicknessScale); + + // Sceneview GUI: + Handles.BeginGUI(); + GUILayout.Window(windowId, new Rect(10, 28, 0, 0), DrawUIWindow, "Path editor"); + Handles.EndGUI(); + + Handles.matrix = prevMatrix; + + // During edit mode, allow to add/remove control points. + if (currentTool == PathEditorTool.InsertPoints) + AddControlPointsMode(matrix); + + if (currentTool == PathEditorTool.RemovePoints) + RemoveControlPointsMode(matrix); + + if (needsRepaint) + window.Repaint(); + + } + + private void AddControlPointsMode(Matrix4x4 matrix) + { + + float mu = ScreenPointToCurveMu(path, Event.current.mousePosition, matrix); + + Vector3 pointOnSpline = matrix.MultiplyPoint3x4(path.points.GetPositionAtMu(path.Closed, mu)); + + float size = HandleUtility.GetHandleSize(pointOnSpline) * 0.12f; + + Ray ray = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition); + Handles.color = Color.green; + Handles.DrawDottedLine(pointOnSpline, ray.origin, 4); + Handles.SphereHandleCap(0, pointOnSpline, Quaternion.identity, size, Event.current.type); + + + if (Event.current.type == EventType.MouseDown && Event.current.modifiers == EventModifiers.None) + { + Undo.RecordObject(blueprint, "Add"); + + int newIndex = path.InsertControlPoint(mu); + if (newIndex >= 0) + { + ResizeCPArrays(); + for (int i = 0; i < selectedStatus.Length; ++i) + selectedStatus[i] = false; + selectedStatus[newIndex] = true; + } + + path.FlushEvents(); + Event.current.Use(); + } + + // Repaint the scene, so that the add control point helpers are updated every frame. + SceneView.RepaintAll(); + + } + + private void RemoveControlPointsMode(Matrix4x4 matrix) + { + + float mu = ScreenPointToCurveMu(path, Event.current.mousePosition, matrix); + + Vector3 pointOnSpline = matrix.MultiplyPoint3x4(path.points.GetPositionAtMu(path.Closed, mu)); + + float size = HandleUtility.GetHandleSize(pointOnSpline) * 0.12f; + + Ray ray = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition); + + Handles.color = Color.red; + Handles.DrawDottedLine(pointOnSpline, ray.origin, 4); + + int index = path.GetClosestControlPointIndex(mu); + Handles.SphereHandleCap(0, matrix.MultiplyPoint3x4(path.points[index].position), Quaternion.identity, size, Event.current.type); + + if (Event.current.type == EventType.MouseDown && Event.current.modifiers == EventModifiers.None && index >= 0 && path.ControlPointCount > 2) + { + Undo.RecordObject(blueprint, "Remove"); + + path.RemoveControlPoint(index); + ResizeCPArrays(); + for (int i = 0; i < selectedStatus.Length; ++i) + selectedStatus[i] = false; + + path.FlushEvents(); + Event.current.Use(); + } + + // Repaint the scene, so that the add control point helpers are updated every frame. + SceneView.RepaintAll(); + + } + + protected bool DrawControlPoint(int i) + { + bool repaint = false; + var wp = path.points[i]; + float size = HandleUtility.GetHandleSize(wp.position) * 0.04f; + + if (selectedStatus[i] && showTangentHandles) + { + + Handles.color = handleColor; + + if (!(i == 0 && !path.Closed)) + { + Vector3 tangentPosition = wp.inTangentEndpoint; + + if (Event.current.type == EventType.Repaint) + Handles.DrawDottedLine(tangentPosition, wp.position, 2); + + EditorGUI.BeginChangeCheck(); + Handles.DotHandleCap(0, tangentPosition, Quaternion.identity, size, Event.current.type); + Vector3 newTangent = Handles.PositionHandle(tangentPosition, Quaternion.identity); + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(blueprint, "Modify tangent"); + wp.SetInTangentEndpoint(newTangent); + path.points[i] = wp; + path.FlushEvents(); + repaint = true; + } + } + + if (!(i == path.ControlPointCount - 1 && !path.Closed)) + { + Vector3 tangentPosition = wp.outTangentEndpoint; + + if (Event.current.type == EventType.Repaint) + Handles.DrawDottedLine(tangentPosition, wp.position, 2); + + EditorGUI.BeginChangeCheck(); + Handles.DotHandleCap(0, tangentPosition, Quaternion.identity, size, Event.current.type); + Vector3 newTangent = Handles.PositionHandle(tangentPosition, Quaternion.identity); + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(blueprint, "Modify tangent"); + wp.SetOutTangentEndpoint(newTangent); + path.points[i] = wp; + path.FlushEvents(); + repaint = true; + } + } + } + + if (Event.current.type == EventType.Repaint) + { + + Handles.color = selectedStatus[i] ? handleColor : Color.white; + Vector3 pos = wp.position; + + if (currentTool == PathEditorTool.OrientPoints) + { + Handles.ArrowHandleCap(0, pos, Quaternion.LookRotation(path.normals[i]), HandleUtility.GetHandleSize(pos), EventType.Repaint); + } + + Handles.SphereHandleCap(0, pos, Quaternion.identity, size * 3, EventType.Repaint); + + } + return repaint; + } + + protected Vector3 GetControlPointAverage(out int lastSelected, out int selectedCount) + { + + lastSelected = -1; + selectedCount = 0; + Vector3 averagePos = Vector3.zero; + + // Find center of all selected control points: + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + + averagePos += path.points[i].position; + selectedCount++; + lastSelected = i; + + } + } + if (selectedCount > 0) + averagePos /= selectedCount; + return averagePos; + + } + + protected bool SplineCPTools(Matrix4x4 matrix) + { + bool repaint = false; + + // Calculate handle rotation, for local or world pivot modes. + Quaternion handleRotation = Tools.pivotRotation == PivotRotation.Local ? Quaternion.identity : Quaternion.Inverse(matrix.rotation); + + // Reset initial handle rotation/orientation after using a tool: + if (GUIUtility.hotControl == 0) + { + + prevRot = handleRotation; + prevScale = Vector3.one; + + if (selectedCount == 1 && Tools.pivotRotation == PivotRotation.Local && currentTool == PathEditorTool.OrientPoints) + { + //prevRot = Quaternion.LookRotation(GetNormal(lastSelected)); + } + } + + // Transform handles: + if (selectedCount > 0) + { + + if (useOrientation && currentTool == PathEditorTool.OrientPoints) + { + repaint |= OrientTool(selectionAverage, handleRotation); + } + else + { + switch (currentTool) + { + case PathEditorTool.TranslatePoints: + { + repaint |= MoveTool(selectionAverage, handleRotation); + } + break; + + case PathEditorTool.ScalePoints: + { + repaint |= ScaleTool(selectionAverage, handleRotation); + } + break; + + case PathEditorTool.RotatePoints: + { + repaint |= RotateTool(selectionAverage, handleRotation); + } + break; + } + } + } + return repaint; + } + + protected bool MoveTool(Vector3 handlePosition, Quaternion handleRotation) + { + + EditorGUI.BeginChangeCheck(); + Vector3 newPos = Handles.PositionHandle(handlePosition, handleRotation); + if (EditorGUI.EndChangeCheck()) + { + + Undo.RecordObject(blueprint, "Move control point"); + + Vector3 delta = newPos - handlePosition; + + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + var wp = path.points[i]; + wp.Transform(delta, Quaternion.identity, Vector3.one); + path.points[i] = wp; + } + } + + path.FlushEvents(); + return true; + } + return false; + } + + protected bool ScaleTool(Vector3 handlePosition, Quaternion handleRotation) + { + + EditorGUI.BeginChangeCheck(); + Vector3 scale = Handles.ScaleHandle(prevScale, handlePosition, handleRotation, HandleUtility.GetHandleSize(handlePosition)); + + if (EditorGUI.EndChangeCheck()) + { + + Vector3 deltaScale = new Vector3(scale.x / prevScale.x, scale.y / prevScale.y, scale.z / prevScale.z); + prevScale = scale; + + Undo.RecordObject(blueprint, "Scale control point"); + + if (Tools.pivotMode == PivotMode.Center && selectedCount > 1) + { + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + var wp = path.points[i]; + Vector3 newPos = handlePosition + Vector3.Scale(wp.position - handlePosition, deltaScale); + wp.Transform(newPos - wp.position, Quaternion.identity, Vector3.one); + path.points[i] = wp; + } + } + } + else + { + // Scale all handles of selected control points relative to their control point: + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + var wp = path.points[i]; + wp.Transform(Vector3.zero, Quaternion.identity, deltaScale); + path.points[i] = wp; + } + } + } + + path.FlushEvents(); + return true; + } + return false; + } + + protected bool RotateTool(Vector3 handlePosition, Quaternion handleRotation) + { + + EditorGUI.BeginChangeCheck(); + + // TODO: investigate weird rotation gizmo: + Quaternion newRotation = Handles.RotationHandle(prevRot, handlePosition); + + if (EditorGUI.EndChangeCheck()) + { + + Quaternion delta = newRotation * Quaternion.Inverse(prevRot); + prevRot = newRotation; + + Undo.RecordObject(blueprint, "Rotate control point"); + + if (Tools.pivotMode == PivotMode.Center && selectedCount > 1) + { + + // Rotate all selected control points around their average: + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + var wp = path.points[i]; + Vector3 newPos = handlePosition + delta * (wp.position - handlePosition); + wp.Transform(newPos - wp.position, Quaternion.identity, Vector3.one); + path.points[i] = wp; + } + } + + } + else + { + + // Rotate all handles of selected control points around their control point: + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + var wp = path.points[i]; + wp.Transform(Vector3.zero, delta, Vector3.one); + path.points[i] = wp; + } + } + } + + path.FlushEvents(); + return true; + } + return false; + } + + protected bool OrientTool(Vector3 averagePos, Quaternion pivotRotation) + { + + EditorGUI.BeginChangeCheck(); + Quaternion newRotation = Handles.RotationHandle(prevRot, averagePos); + + if (EditorGUI.EndChangeCheck()) + { + + Quaternion delta = newRotation * Quaternion.Inverse(prevRot); + prevRot = newRotation; + + Undo.RecordObject(blueprint, "Orient control point"); + + // Rotate all selected control points around their average: + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + path.normals[i] = delta * path.normals[i]; + } + } + + path.FlushEvents(); + return true; + } + return false; + } + + + protected bool DoThicknessHandles(float scale) + { + Color oldColor = Handles.color; + Handles.color = handleColor; + + EditorGUI.BeginChangeCheck(); + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + Vector3 position = path.points[i].position; + + var tangent = path.points.GetTangent(i); + if (!tangent.Equals(Vector3.zero)) + { + Quaternion orientation = Quaternion.LookRotation(tangent); + + float offset = 0.05f; + float thickness = (path.thicknesses[i] * scale) + offset; + + EditorGUI.BeginChangeCheck(); + thickness = DoRadiusHandle(orientation, position, thickness); + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(blueprint, "Change control point thickness"); + path.thicknesses[i] = Mathf.Max(0, (thickness - offset) / scale); + path.FlushEvents(); + return true; + } + } + } + } + Handles.color = oldColor; + + return false; + } + + public void DrawUIWindow(int windowID) + { + + DrawToolButtons(); + + DrawControlPointInspector(); + + } + + private void DrawToolButtons() + { + GUILayout.BeginHorizontal(); + + EditorGUI.BeginChangeCheck(); + GUILayout.Toggle(currentTool == PathEditorTool.TranslatePoints, new GUIContent(Resources.Load("TranslateControlPoint"), "Translate CPs"), "Button", GUILayout.MaxHeight(24), GUILayout.Width(38)); + if (EditorGUI.EndChangeCheck()) + { + currentTool = PathEditorTool.TranslatePoints; + } + + EditorGUI.BeginChangeCheck(); + GUILayout.Toggle(currentTool == PathEditorTool.RotatePoints, new GUIContent(Resources.Load("RotateControlPoint"), "Rotate CPs"), "Button", GUILayout.MaxHeight(24), GUILayout.Width(38)); + if (EditorGUI.EndChangeCheck()) + { + currentTool = PathEditorTool.RotatePoints; + } + + EditorGUI.BeginChangeCheck(); + GUILayout.Toggle(currentTool == PathEditorTool.ScalePoints, new GUIContent(Resources.Load("ScaleControlPoint"), "Scale CPs"), "Button", GUILayout.MaxHeight(24), GUILayout.Width(38)); + if (EditorGUI.EndChangeCheck()) + { + currentTool = PathEditorTool.ScalePoints; + } + + EditorGUI.BeginChangeCheck(); + GUILayout.Toggle(currentTool == PathEditorTool.InsertPoints, new GUIContent(Resources.Load("AddControlPoint"), "Add CPs"), "Button", GUILayout.MaxHeight(24), GUILayout.Width(38)); + if (EditorGUI.EndChangeCheck()) + { + currentTool = PathEditorTool.InsertPoints; + } + + EditorGUI.BeginChangeCheck(); + GUILayout.Toggle(currentTool == PathEditorTool.RemovePoints, new GUIContent(Resources.Load("RemoveControlPoint"), "Remove CPs"), "Button", GUILayout.MaxHeight(24), GUILayout.Width(38)); + if (EditorGUI.EndChangeCheck()) + { + currentTool = PathEditorTool.RemovePoints; + } + + EditorGUI.BeginChangeCheck(); + bool closed = GUILayout.Toggle(path.Closed, new GUIContent(Resources.Load("OpenCloseCurve"), "Open/Close the path"), "Button", GUILayout.MaxHeight(24), GUILayout.Width(38)); + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(blueprint, "Open/close path"); + path.Closed = closed; + path.FlushEvents(); + needsRepaint = true; + } + + if (useOrientation) + { + EditorGUI.BeginChangeCheck(); + GUILayout.Toggle(currentTool == PathEditorTool.OrientPoints, new GUIContent(Resources.Load("OrientControlPoint"), "Orientation tool"), "Button", GUILayout.MaxHeight(24), GUILayout.Width(38)); + if (EditorGUI.EndChangeCheck()) + { + currentTool = PathEditorTool.OrientPoints; + } + } + + showTangentHandles = GUILayout.Toggle(showTangentHandles, new GUIContent(Resources.Load("ShowTangentHandles"), "Show tangent handles"), "Button", GUILayout.MaxHeight(24), GUILayout.Width(38)); + showThicknessHandles = GUILayout.Toggle(showThicknessHandles, new GUIContent(Resources.Load("ShowThicknessHandles"), "Show thickness handles"), "Button", GUILayout.MaxHeight(24), GUILayout.Width(38)); + + GUILayout.EndHorizontal(); + } + + private void DrawPositionField(Rect rect, string label, int index) + { + EditorGUI.showMixedValue = false; + float pos = 0; + bool firstSelected = true; + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + if (firstSelected) + { + pos = path.points[i].position[index]; + firstSelected = false; + } + else if (!Mathf.Approximately(pos,path.points[i].position[index])) + { + EditorGUI.showMixedValue = true; + break; + } + } + } + + EditorGUI.BeginChangeCheck(); + float oldLabelWidth = EditorGUIUtility.labelWidth; + EditorGUIUtility.labelWidth = 10; + pos = EditorGUI.FloatField(rect, label, pos); + EditorGUIUtility.labelWidth = oldLabelWidth; + EditorGUI.showMixedValue = false; + if (EditorGUI.EndChangeCheck()) + { + + Undo.RecordObject(blueprint, "Change control points position"); + + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + var wp = path.points[i]; + wp.position[index] = pos; + path.points[i] = wp; + } + } + path.FlushEvents(); + needsRepaint = true; + } + } + + private void DrawInTangentField(Rect rect, string label, int index) + { + EditorGUI.showMixedValue = false; + float pos = 0; + bool firstSelected = true; + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + if (firstSelected) + { + pos = path.points[i].inTangent[index]; + firstSelected = false; + } + else if (!Mathf.Approximately(pos, path.points[i].inTangent[index])) + { + EditorGUI.showMixedValue = true; + break; + } + } + } + + EditorGUI.BeginChangeCheck(); + float oldLabelWidth = EditorGUIUtility.labelWidth; + EditorGUIUtility.labelWidth = 10; + pos = EditorGUI.FloatField(rect, label, pos); + EditorGUIUtility.labelWidth = oldLabelWidth; + EditorGUI.showMixedValue = false; + if (EditorGUI.EndChangeCheck()) + { + + Undo.RecordObject(blueprint, "Change control points tangent"); + + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + var wp = path.points[i]; + var newInTangent = wp.inTangent; + newInTangent[index] = pos; + wp.SetInTangent(newInTangent); + path.points[i] = wp; + } + } + path.FlushEvents(); + needsRepaint = true; + } + } + + private void DrawOutTangentField(Rect rect, string label, int index) + { + EditorGUI.showMixedValue = false; + float pos = 0; + bool firstSelected = true; + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + if (firstSelected) + { + pos = path.points[i].outTangent[index]; + firstSelected = false; + } + else if (!Mathf.Approximately(pos, path.points[i].outTangent[index])) + { + EditorGUI.showMixedValue = true; + break; + } + } + } + + EditorGUI.BeginChangeCheck(); + float oldLabelWidth = EditorGUIUtility.labelWidth; + EditorGUIUtility.labelWidth = 10; + pos = EditorGUI.FloatField(rect, label, pos); + EditorGUIUtility.labelWidth = oldLabelWidth; + EditorGUI.showMixedValue = false; + if (EditorGUI.EndChangeCheck()) + { + + Undo.RecordObject(blueprint, "Change control points tangent"); + + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + var wp = path.points[i]; + var newOutTangent = wp.outTangent; + newOutTangent[index] = pos; + wp.SetOutTangent(newOutTangent); + path.points[i] = wp; + } + } + path.FlushEvents(); + needsRepaint = true; + } + } + + private void DrawControlPointInspector() + { + + GUI.enabled = selectedCount > 0; + + bool wideMode = EditorGUIUtility.wideMode; + EditorGUIUtility.wideMode = true; + EditorGUIUtility.labelWidth = 100; + + EditorGUILayout.BeginVertical(); + + GUILayout.Box("", ObiEditorUtils.GetSeparatorLineStyle()); + + // position: + var rect = EditorGUILayout.GetControlRect(); + rect = EditorGUI.PrefixLabel(rect, GUIUtility.GetControlID(FocusType.Passive), new GUIContent("Position")); + rect.width /= 3.0f; + DrawPositionField(rect,"X",0); rect.x += rect.width; + DrawPositionField(rect,"Y",1); rect.x += rect.width; + DrawPositionField(rect,"Z",2); rect.x += rect.width; + + // in tangent: + rect = EditorGUILayout.GetControlRect(); + rect = EditorGUI.PrefixLabel(rect, GUIUtility.GetControlID(FocusType.Passive), new GUIContent("In Tangent")); + rect.width /= 3.0f; + DrawInTangentField(rect, "X", 0); rect.x += rect.width; + DrawInTangentField(rect, "Y", 1); rect.x += rect.width; + DrawInTangentField(rect, "Z", 2); rect.x += rect.width; + + // out tangent: + rect = EditorGUILayout.GetControlRect(); + rect = EditorGUI.PrefixLabel(rect, GUIUtility.GetControlID(FocusType.Passive), new GUIContent("Out Tangent")); + rect.width /= 3.0f; + DrawOutTangentField(rect, "X", 0); rect.x += rect.width; + DrawOutTangentField(rect, "Y", 1); rect.x += rect.width; + DrawOutTangentField(rect, "Z", 2); rect.x += rect.width; + + // tangent mode: + EditorGUI.showMixedValue = false; + var mode = ObiWingedPoint.TangentMode.Free; + bool firstSelected = true; + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + if (firstSelected) + { + mode = path.points[i].tangentMode; + firstSelected = false; + } + else if (mode != path.points[i].tangentMode) + { + EditorGUI.showMixedValue = true; + break; + } + } + } + + EditorGUI.BeginChangeCheck(); + var newMode = (ObiWingedPoint.TangentMode)EditorGUILayout.EnumPopup("Tangent mode", mode, GUILayout.MinWidth(94)); + EditorGUI.showMixedValue = false; + if (EditorGUI.EndChangeCheck()) + { + + Undo.RecordObject(blueprint, "Change control points mode"); + + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + var wp = path.points[i]; + wp.tangentMode = newMode; + path.points[i] = wp; + } + } + path.FlushEvents(); + needsRepaint = true; + } + + // thickness: + EditorGUI.showMixedValue = false; + float thickness = 0; + firstSelected = true; + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + if (firstSelected) + { + thickness = path.thicknesses[i]; + firstSelected = false; + } + else if (!Mathf.Approximately(thickness, path.thicknesses[i])) + { + EditorGUI.showMixedValue = true; + break; + } + } + } + + EditorGUI.BeginChangeCheck(); + thickness = EditorGUILayout.FloatField("Thickness", thickness, GUILayout.MinWidth(94)); + EditorGUI.showMixedValue = false; + if (EditorGUI.EndChangeCheck()) + { + + Undo.RecordObject(blueprint, "Change control point thickness"); + + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + path.thicknesses[i] = Mathf.Max(0, thickness); + } + path.FlushEvents(); + needsRepaint = true; + } + + // mass: + EditorGUI.showMixedValue = false; + float mass = 0; + firstSelected = true; + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + if (firstSelected) + { + mass = path.masses[i]; + firstSelected = false; + } + else if (!Mathf.Approximately(mass, path.masses[i])) + { + EditorGUI.showMixedValue = true; + break; + } + } + } + + EditorGUI.BeginChangeCheck(); + mass = EditorGUILayout.FloatField("Mass", mass, GUILayout.MinWidth(94)); + EditorGUI.showMixedValue = false; + if (EditorGUI.EndChangeCheck()) + { + + Undo.RecordObject(blueprint, "Change control point mass"); + + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + path.masses[i] = mass; + } + path.FlushEvents(); + needsRepaint = true; + } + + if (useOrientation) + { + // rotational mass: + EditorGUI.showMixedValue = false; + float rotationalMass = 0; + firstSelected = true; + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + if (firstSelected) + { + rotationalMass = path.rotationalMasses[i]; + firstSelected = false; + } + else if (!Mathf.Approximately(rotationalMass, path.rotationalMasses[i])) + { + EditorGUI.showMixedValue = true; + break; + } + } + } + + EditorGUI.BeginChangeCheck(); + rotationalMass = EditorGUILayout.FloatField("Rotational mass", rotationalMass, GUILayout.MinWidth(94)); + EditorGUI.showMixedValue = false; + if (EditorGUI.EndChangeCheck()) + { + + Undo.RecordObject(blueprint, "Change control point rotational mass"); + + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + path.rotationalMasses[i] = rotationalMass; + } + path.FlushEvents(); + needsRepaint = true; + } + } + + // category: + EditorGUI.showMixedValue = false; + int category = 0; + firstSelected = true; + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + if (firstSelected) + { + category = ObiUtils.GetCategoryFromFilter(path.filters[i]); + firstSelected = false; + } + else if (!Mathf.Approximately(category, ObiUtils.GetCategoryFromFilter(path.filters[i]))) + { + EditorGUI.showMixedValue = true; + break; + } + } + } + + EditorGUI.BeginChangeCheck(); + category = EditorGUILayout.Popup("Category", category, ObiUtils.categoryNames, GUILayout.MinWidth(94)); + EditorGUI.showMixedValue = false; + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(blueprint, "Change control point category"); + + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + path.filters[i] = ObiUtils.MakeFilter(ObiUtils.GetMaskFromFilter(path.filters[i]),category); + } + path.FlushEvents(); + needsRepaint = true; + } + + // mask: + EditorGUI.showMixedValue = false; + int mask = 0; + firstSelected = true; + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + if (firstSelected) + { + mask = ObiUtils.GetMaskFromFilter(path.filters[i]); + firstSelected = false; + } + else if (!Mathf.Approximately(mask, ObiUtils.GetMaskFromFilter(path.filters[i]))) + { + EditorGUI.showMixedValue = true; + break; + } + } + } + + EditorGUI.BeginChangeCheck(); + mask = EditorGUILayout.MaskField("Collides with", mask, ObiUtils.categoryNames, GUILayout.MinWidth(94)); + EditorGUI.showMixedValue = false; + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(blueprint, "Change control point mask"); + + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + path.filters[i] = ObiUtils.MakeFilter(mask,ObiUtils.GetCategoryFromFilter(path.filters[i])); + } + path.FlushEvents(); + needsRepaint = true; + } + + // color: + EditorGUI.showMixedValue = false; + Color color = Color.white; + firstSelected = true; + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + if (firstSelected) + { + color = path.colors[i]; + firstSelected = false; + } + else if (color != path.colors[i]) + { + EditorGUI.showMixedValue = true; + break; + } + } + } + + EditorGUI.BeginChangeCheck(); + color = EditorGUILayout.ColorField("Color", color, GUILayout.MinWidth(94)); + EditorGUI.showMixedValue = false; + if (EditorGUI.EndChangeCheck()) + { + + Undo.RecordObject(blueprint, "Change control point color"); + + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + path.colors[i] = color; + } + path.FlushEvents(); + needsRepaint = true; + } + + // name: + EditorGUI.showMixedValue = false; + string cpname = ""; + firstSelected = true; + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + { + if (firstSelected) + { + cpname = path.GetName(i); + firstSelected = false; + } + else if (cpname != path.GetName(i)) + { + EditorGUI.showMixedValue = true; + break; + } + } + } + + EditorGUI.BeginChangeCheck(); + cpname = EditorGUILayout.DelayedTextField("Name", cpname, GUILayout.MinWidth(94)); + EditorGUI.showMixedValue = false; + if (EditorGUI.EndChangeCheck()) + { + + Undo.RecordObject(blueprint, "Change control point name"); + + for (int i = 0; i < path.ControlPointCount; ++i) + { + if (selectedStatus[i]) + path.SetName(i, cpname); + } + path.FlushEvents(); + needsRepaint = true; + } + + + EditorGUILayout.EndVertical(); + + EditorGUIUtility.wideMode = wideMode; + + GUI.enabled = true; + } + + internal static float DoRadiusHandle(Quaternion rotation, Vector3 position, float radius) + { + Vector3[] vector3Array; + + Vector3 camToPosition; + if (Camera.current.orthographic) + { + camToPosition = Camera.current.transform.forward; + Handles.DrawWireDisc(position, camToPosition, radius); + + vector3Array = new Vector3[4] + { + Camera.current.transform.right, + Camera.current.transform.up, + -Camera.current.transform.right, + -Camera.current.transform.up, + }; + + } + else + { + camToPosition = position - Camera.current.transform.position; + Handles.DrawWireDisc(position, rotation * Vector3.forward, radius); + + vector3Array = new Vector3[4] + { + rotation * Vector3.right, + rotation * Vector3.up, + rotation * -Vector3.right, + rotation * -Vector3.up, + }; + } + + for (int index = 0; index < 4; ++index) + { + int controlId = GUIUtility.GetControlID("ObiPathThicknessHandle".GetHashCode(), FocusType.Keyboard); + Vector3 position1 = position + radius * vector3Array[index]; + bool changed = GUI.changed; + GUI.changed = false; + Vector3 a = Handles.Slider(controlId, position1, vector3Array[index], HandleUtility.GetHandleSize(position1) * 0.03f, Handles.DotHandleCap, 0.0f); + if (GUI.changed) + radius = Vector3.Distance(a, position); + GUI.changed |= changed; + } + + return radius; + } + + public static float ScreenPointToCurveMu(ObiPath path, Vector2 screenPoint, Matrix4x4 referenceFrame, int samples = 30) + { + + if (path.ControlPointCount >= 2) + { + + samples = Mathf.Max(1, samples); + float step = 1 / (float)samples; + + float closestMu = 0; + float minDistance = float.MaxValue; + + for (int k = 0; k < path.GetSpanCount(); ++k) + { + int nextCP = (k + 1) % path.ControlPointCount; + + var wp1 = path.points[k]; + var wp2 = path.points[nextCP]; + + Vector3 _p = referenceFrame.MultiplyPoint3x4(wp1.position); + Vector3 p = referenceFrame.MultiplyPoint3x4(wp1.outTangentEndpoint); + Vector3 p_ = referenceFrame.MultiplyPoint3x4(wp2.inTangentEndpoint); + Vector3 p__ = referenceFrame.MultiplyPoint3x4(wp2.position); + + Vector2 lastPoint = HandleUtility.WorldToGUIPoint(path.m_Points.Evaluate(_p, p, p_, p__, 0)); + for (int i = 1; i <= samples; ++i) + { + + Vector2 currentPoint = HandleUtility.WorldToGUIPoint(path.m_Points.Evaluate(_p, p, p_, p__, i * step)); + + float mu; + float distance = Vector2.SqrMagnitude((Vector2)ObiUtils.ProjectPointLine(screenPoint, lastPoint, currentPoint, out mu) - screenPoint); + + if (distance < minDistance) + { + minDistance = distance; + closestMu = (k + (i - 1) * step + mu / samples) / (float)path.GetSpanCount(); + } + lastPoint = currentPoint; + } + + } + + return closestMu; + + } + else + { + Debug.LogWarning("Curve needs at least 2 control points to be defined."); + } + return 0; + + } + + } +} \ No newline at end of file diff --git a/Assets/Obi/Editor/RopeAndRod/ObiPathEditor.cs.meta b/Assets/Obi/Editor/RopeAndRod/ObiPathEditor.cs.meta new file mode 100644 index 000000000..32c490bc1 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiPathEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0cb694bcadb6a4909b593111507e1eb3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/ObiPathHandles.cs b/Assets/Obi/Editor/RopeAndRod/ObiPathHandles.cs new file mode 100644 index 000000000..9e47ccaca --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiPathHandles.cs @@ -0,0 +1,273 @@ +using UnityEngine; +using UnityEditor; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + + public class ObiPathHandles + { + + static int splineSelectorHash = "ObiPathSelectorHash".GetHashCode(); + const int minSelectionDistance = 5; + + static Vector2 startPos; + static Vector2 currentPos; + static bool dragging = false; + static Rect marquee; + + public static bool SplineCPSelector(ObiPath path, bool[] selectionStatus) + { + + int controlID = GUIUtility.GetControlID(splineSelectorHash, FocusType.Passive); + int selectedCPIndex = -1; + bool selectionStatusChanged = false; + + // select vertex on mouse click: + switch (Event.current.GetTypeForControl(controlID)) + { + + case EventType.MouseDown: + { + + if ((Event.current.modifiers & EventModifiers.Control) == 0 && + (HandleUtility.nearestControl != controlID || Event.current.button != 0)) break; + + startPos = Event.current.mousePosition; + marquee.Set(0, 0, 0, 0); + + // If the user is pressing shift, accumulate selection. + if ((Event.current.modifiers & EventModifiers.Shift) == 0 && (Event.current.modifiers & EventModifiers.Alt) == 0) + { + for (int i = 0; i < selectionStatus.Length; i++) + selectionStatus[i] = false; + } + + // If the user is holding down control, dont allow selection of other objects and use marquee tool. + if ((Event.current.modifiers & EventModifiers.Control) != 0) + GUIUtility.hotControl = controlID; + + float minSqrDistance = System.Single.MaxValue; + float sqrMinSelectionDistance = minSelectionDistance * minSelectionDistance; + + for (int i = 0; i < path.ControlPointCount; i++) + { + + // get particle position in gui space: + Vector2 pos = HandleUtility.WorldToGUIPoint(path.points[i].position); + + // get distance from mouse position to particle position: + float sqrDistance = Vector2.SqrMagnitude(startPos - pos); + + // check if this control point is closer to the cursor that any previously considered point. + if (sqrDistance < sqrMinSelectionDistance && sqrDistance < minSqrDistance) + { + minSqrDistance = sqrDistance; + selectedCPIndex = i; + } + + } + + if (selectedCPIndex >= 0) + { // toggle particle selection status. + + selectionStatus[selectedCPIndex] = !selectionStatus[selectedCPIndex]; + selectionStatusChanged = true; + + // Prevent spline deselection if we have selected a particle: + GUIUtility.hotControl = controlID; + Event.current.Use(); + + } + else if (Event.current.modifiers == EventModifiers.None) + { // deselect all particles: + for (int i = 0; i < selectionStatus.Length; i++) + selectionStatus[i] = false; + + selectionStatusChanged = true; + } + + } + break; + + case EventType.MouseDrag: + + if (GUIUtility.hotControl == controlID) + { + + currentPos = Event.current.mousePosition; + if (!dragging && Vector2.Distance(startPos, currentPos) > 5) + { + dragging = true; + } + else + { + GUIUtility.hotControl = controlID; + Event.current.Use(); + } + + //update marquee rect: + float left = Mathf.Min(startPos.x, currentPos.x); + float right = Mathf.Max(startPos.x, currentPos.x); + float bottom = Mathf.Min(startPos.y, currentPos.y); + float top = Mathf.Max(startPos.y, currentPos.y); + + marquee = new Rect(left, bottom, right - left, top - bottom); + + } + + break; + + case EventType.MouseUp: + + if (GUIUtility.hotControl == controlID) + { + + dragging = false; + + for (int i = 0; i < path.ControlPointCount; i++) + { + + // get particle position in gui space: + Vector2 pos = HandleUtility.WorldToGUIPoint(path.points[i].position); + + if (pos.x > marquee.xMin && pos.x < marquee.xMax && pos.y > marquee.yMin && pos.y < marquee.yMax) + { + selectionStatus[i] = true; + selectionStatusChanged = true; + } + + } + + GUIUtility.hotControl = 0; + Event.current.Use(); + } + + break; + + case EventType.Repaint: + + if (dragging) + { + GUISkin oldSkin = GUI.skin; + GUI.skin = EditorGUIUtility.GetBuiltinSkin(EditorSkin.Scene); + Handles.BeginGUI(); + GUI.Box(new Rect(marquee.xMin, marquee.yMin, marquee.width, marquee.height), ""); + Handles.EndGUI(); + GUI.skin = oldSkin; + } + + break; + + + case EventType.Layout: + { + + float minSqrDistance = System.Single.MaxValue; + float sqrMinSelectionDistance = minSelectionDistance * minSelectionDistance; + + for (int i = 0; i < path.ControlPointCount; i++) + { + + // get particle position in gui space: + Vector2 pos = HandleUtility.WorldToGUIPoint(path.points[i].position); + + // get distance from mouse position to particle position: + float sqrDistance = Vector2.SqrMagnitude(Event.current.mousePosition - pos); + + // check if this control point is closer to the cursor that any previously considered point. + if (sqrDistance < sqrMinSelectionDistance && sqrDistance < minSqrDistance) + { //magic number 900 = 30*30, where 30 is min distance in pixels to select a particle. + minSqrDistance = sqrDistance; + } + + } + + HandleUtility.AddControl(controlID, Mathf.Sqrt(minSqrDistance)); + } + break; + + } + + return selectionStatusChanged; + } + + private static void DrawControlPointArcs(ObiPath path, float thicknessScale) + { + for (int i = 0; i < path.ControlPointCount; ++i) + { + Vector3 position = path.points[i].position; + Vector3 tangent = path.points.GetTangent(i); + Vector3 right = Vector3.Cross(tangent, path.normals[i]).normalized; + float thickness = path.thicknesses[i] * thicknessScale + 0.05f; + + Handles.DrawWireArc(position, tangent, right, -180, thickness); + } + } + + private static void DrawPathPolylines(Vector3[] samples, Vector3[] leftSamples, Vector3[] rightSamples, Vector3[] upSamples, bool drawOrientation) + { + Handles.DrawPolyLine(samples); + if (drawOrientation) + { + Handles.DrawPolyLine(leftSamples); + Handles.DrawPolyLine(upSamples); + Handles.DrawPolyLine(rightSamples); + } + } + + public static void DrawPathHandle(ObiPath path, Matrix4x4 referenceFrame, float thicknessScale, int resolution, bool drawOrientation = true) + { + + if (path == null || path.GetSpanCount() == 0) return; + + Matrix4x4 prevMatrix = Handles.matrix; + Handles.matrix = referenceFrame; + + // Draw the curve: + int curveSegments = path.GetSpanCount() * resolution; + Vector3[] samples = new Vector3[curveSegments + 1]; + Vector3[] leftSamples = new Vector3[curveSegments + 1]; + Vector3[] rightSamples = new Vector3[curveSegments + 1]; + Vector3[] upSamples = new Vector3[curveSegments + 1]; + + for (int i = 0; i <= curveSegments; ++i) + { + + float mu = i / (float)curveSegments; + samples[i] = path.points.GetPositionAtMu(path.Closed,mu); + + if (drawOrientation) + { + Vector3 tangent = path.points.GetTangentAtMu(path.Closed,mu); + Vector3 right = Vector3.Cross(tangent, path.normals.GetAtMu(path.Closed,mu)).normalized; + Vector3 up = Vector3.Cross(right, tangent).normalized; + float thickness = path.thicknesses.GetAtMu(path.Closed,mu) * thicknessScale + 0.05f; + + leftSamples[i] = samples[i] - right * thickness; + rightSamples[i] = samples[i] + right * thickness; + upSamples[i] = samples[i] + up * thickness; + + if (i % 5 == 0) + { + Handles.DrawLine(leftSamples[i], rightSamples[i]); + Handles.DrawLine(samples[i], samples[i] + up * thickness); + } + } + } + + if (drawOrientation) + DrawControlPointArcs(path, thicknessScale); + + DrawPathPolylines(samples, leftSamples, rightSamples, upSamples, drawOrientation); + DrawPathPolylines(samples, leftSamples, rightSamples, upSamples, drawOrientation); + + Handles.matrix = prevMatrix; + } + + + } +} + diff --git a/Assets/Obi/Editor/RopeAndRod/ObiPathHandles.cs.meta b/Assets/Obi/Editor/RopeAndRod/ObiPathHandles.cs.meta new file mode 100644 index 000000000..8df16e491 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiPathHandles.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f3c12ceb831344c47af02f0d6bf73de7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/ObiPathSmootherEditor.cs b/Assets/Obi/Editor/RopeAndRod/ObiPathSmootherEditor.cs new file mode 100644 index 000000000..068bc64ab --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiPathSmootherEditor.cs @@ -0,0 +1,37 @@ +using UnityEditor; +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + + [CustomEditor(typeof(ObiPathSmoother), true), CanEditMultipleObjects] + public class ObiPathSmootherEditor : Editor + { + + ObiPathSmoother shape; + + public void OnEnable() + { + shape = (ObiPathSmoother)target; + } + + public override void OnInspectorGUI() + { + + serializedObject.UpdateIfRequiredOrScript(); + + Editor.DrawPropertiesExcluding(serializedObject, "m_Script"); + + // Apply changes to the serializedProperty + if (GUI.changed) + serializedObject.ApplyModifiedProperties(); + + } + + } + +} + diff --git a/Assets/Obi/Editor/RopeAndRod/ObiPathSmootherEditor.cs.meta b/Assets/Obi/Editor/RopeAndRod/ObiPathSmootherEditor.cs.meta new file mode 100644 index 000000000..4b3fca50d --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiPathSmootherEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a01b6dc95e7284e2583513863858d670 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/ObiRodEditor.cs b/Assets/Obi/Editor/RopeAndRod/ObiRodEditor.cs new file mode 100644 index 000000000..dd519a094 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiRodEditor.cs @@ -0,0 +1,176 @@ +using UnityEditor; +using UnityEditor.EditorTools; +using UnityEditorInternal; +using UnityEngine; +using System; +using System.Collections.Generic; +using System.Linq; + + +namespace Obi +{ + + [CustomEditor(typeof(ObiRod))] + public class ObiRodEditor : Editor + { + [MenuItem("GameObject/3D Object/Obi/Obi Rod", false, 301)] + static void CreateObiRod(MenuCommand menuCommand) + { + GameObject go = new GameObject("Obi Rod", typeof(ObiRod), typeof(ObiRopeExtrudedRenderer)); + ObiEditorUtils.PlaceActorRoot(go, menuCommand); + } + + ObiRod actor; + + SerializedProperty rodBlueprint; + + SerializedProperty collisionMaterial; + SerializedProperty selfCollisions; + SerializedProperty surfaceCollisions; + + SerializedProperty stretchShearConstraintsEnabled; + SerializedProperty stretchCompliance; + SerializedProperty shear1Compliance; + SerializedProperty shear2Compliance; + + SerializedProperty bendTwistConstraintsEnabled; + SerializedProperty torsionCompliance; + SerializedProperty bend1Compliance; + SerializedProperty bend2Compliance; + SerializedProperty plasticYield; + SerializedProperty plasticCreep; + + SerializedProperty chainConstraintsEnabled; + SerializedProperty tightness; + + GUIStyle editLabelStyle; + + public void OnEnable() + { + actor = (ObiRod)target; + + rodBlueprint = serializedObject.FindProperty("m_RodBlueprint"); + + collisionMaterial = serializedObject.FindProperty("m_CollisionMaterial"); + selfCollisions = serializedObject.FindProperty("m_SelfCollisions"); + surfaceCollisions = serializedObject.FindProperty("m_SurfaceCollisions"); + + stretchShearConstraintsEnabled = serializedObject.FindProperty("_stretchShearConstraintsEnabled"); + stretchCompliance = serializedObject.FindProperty("_stretchCompliance"); + shear1Compliance = serializedObject.FindProperty("_shear1Compliance"); + shear2Compliance = serializedObject.FindProperty("_shear2Compliance"); + + bendTwistConstraintsEnabled = serializedObject.FindProperty("_bendTwistConstraintsEnabled"); + torsionCompliance = serializedObject.FindProperty("_torsionCompliance"); + bend1Compliance = serializedObject.FindProperty("_bend1Compliance"); + bend2Compliance = serializedObject.FindProperty("_bend2Compliance"); + plasticYield = serializedObject.FindProperty("_plasticYield"); + plasticCreep = serializedObject.FindProperty("_plasticCreep"); + + chainConstraintsEnabled = serializedObject.FindProperty("_chainConstraintsEnabled"); + tightness = serializedObject.FindProperty("_tightness"); + } + + private void DoEditButton() + { + using (new EditorGUI.DisabledScope(actor.rodBlueprint == null)) + { + EditorGUILayout.BeginHorizontal(); + GUILayout.Space(EditorGUIUtility.labelWidth); + EditorGUI.BeginChangeCheck(); + bool edit = GUILayout.Toggle(ToolManager.activeToolType == typeof(ObiPathEditor), new GUIContent(Resources.Load("EditCurves")), "Button", GUILayout.MaxWidth(36), GUILayout.MaxHeight(24)); + EditorGUILayout.LabelField("Edit path", editLabelStyle, GUILayout.ExpandHeight(true), GUILayout.MaxHeight(24)); + if (EditorGUI.EndChangeCheck()) + { + if (edit) + ToolManager.SetActiveTool(); + else + ToolManager.RestorePreviousPersistentTool(); + + SceneView.RepaintAll(); + } + EditorGUILayout.EndHorizontal(); + } + } + + public override void OnInspectorGUI() + { + if (editLabelStyle == null) + { + editLabelStyle = new GUIStyle(GUI.skin.label); + editLabelStyle.alignment = TextAnchor.MiddleLeft; + } + + serializedObject.UpdateIfRequiredOrScript(); + + if (actor.rodBlueprint != null && actor.rodBlueprint.path.ControlPointCount < 2) + { + actor.rodBlueprint.GenerateImmediate(); + } + + using (new EditorGUI.DisabledScope(ToolManager.activeToolType == typeof(ObiPathEditor))) + { + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(rodBlueprint, new GUIContent("Blueprint")); + if (EditorGUI.EndChangeCheck()) + { + foreach (var t in targets) + { + (t as ObiRod).RemoveFromSolver(); + (t as ObiRod).ClearState(); + } + serializedObject.ApplyModifiedProperties(); + foreach (var t in targets) + (t as ObiRod).AddToSolver(); + } + } + + DoEditButton(); + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Collisions", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(collisionMaterial, new GUIContent("Collision material")); + EditorGUILayout.PropertyField(selfCollisions, new GUIContent("Self collisions")); + EditorGUILayout.PropertyField(surfaceCollisions, new GUIContent("Surface-based collisions")); + + EditorGUILayout.Space(); + ObiEditorUtils.DoToggleablePropertyGroup(stretchShearConstraintsEnabled, new GUIContent("Stretch & Shear Constraints", Resources.Load("Icons/ObiStretchShearConstraints Icon")), + () => { + EditorGUILayout.PropertyField(stretchCompliance, new GUIContent("Stretch compliance")); + EditorGUILayout.PropertyField(shear1Compliance, new GUIContent("Shear compliance X")); + EditorGUILayout.PropertyField(shear2Compliance, new GUIContent("Shear compliance Y")); + }); + + ObiEditorUtils.DoToggleablePropertyGroup(bendTwistConstraintsEnabled, new GUIContent("Bend & Twist Constraints", Resources.Load("Icons/ObiBendTwistConstraints Icon")), + () => { + EditorGUILayout.PropertyField(torsionCompliance, new GUIContent("Torsion compliance")); + EditorGUILayout.PropertyField(bend1Compliance, new GUIContent("Bend compliance X")); + EditorGUILayout.PropertyField(bend2Compliance, new GUIContent("Bend compliance Y")); + EditorGUILayout.PropertyField(plasticYield, new GUIContent("Plastic yield")); + EditorGUILayout.PropertyField(plasticCreep, new GUIContent("Plastic creep")); + }); + + ObiEditorUtils.DoToggleablePropertyGroup(chainConstraintsEnabled, new GUIContent("Chain Constraints", Resources.Load("Icons/ObiChainConstraints Icon")), + () => { + EditorGUILayout.PropertyField(tightness, new GUIContent("Tightness")); + }); + + + if (GUI.changed) + serializedObject.ApplyModifiedProperties(); + + } + + [DrawGizmo(GizmoType.Selected)] + private static void DrawGizmos(ObiRod actor, GizmoType gizmoType) + { + Handles.color = Color.white; + if (actor.rodBlueprint != null) + ObiPathHandles.DrawPathHandle(actor.rodBlueprint.path, actor.transform.localToWorldMatrix, actor.rodBlueprint.thickness ,20); + } + + } + +} + + diff --git a/Assets/Obi/Editor/RopeAndRod/ObiRodEditor.cs.meta b/Assets/Obi/Editor/RopeAndRod/ObiRodEditor.cs.meta new file mode 100644 index 000000000..43404e2f0 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiRodEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d55c0f03ad50c414cacd39520aef2087 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/ObiRopeChainRendererEditor.cs b/Assets/Obi/Editor/RopeAndRod/ObiRopeChainRendererEditor.cs new file mode 100644 index 000000000..cace6a09d --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiRopeChainRendererEditor.cs @@ -0,0 +1,40 @@ +using UnityEditor; +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi{ + + [CustomEditor(typeof(ObiRopeChainRenderer)), CanEditMultipleObjects] + public class ObiRopeChainRendererEditor : Editor + { + + ObiRopeChainRenderer renderer; + + public void OnEnable(){ + renderer = (ObiRopeChainRenderer)target; + } + + public override void OnInspectorGUI() { + + serializedObject.UpdateIfRequiredOrScript(); + + Editor.DrawPropertiesExcluding(serializedObject,"m_Script"); + + // Apply changes to the serializedProperty + if (GUI.changed){ + + serializedObject.ApplyModifiedProperties(); + + renderer.ClearChainLinkInstances(); + renderer.CreateChainLinkInstances(renderer.GetComponent()); + renderer.UpdateRenderer(renderer.GetComponent()); + + } + + } + + } +} + diff --git a/Assets/Obi/Editor/RopeAndRod/ObiRopeChainRendererEditor.cs.meta b/Assets/Obi/Editor/RopeAndRod/ObiRopeChainRendererEditor.cs.meta new file mode 100644 index 000000000..f99530421 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiRopeChainRendererEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 0efaf4d397fcc4b87842866f9a69f07b +labels: +- ObiRope +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/ObiRopeCursorEditor.cs b/Assets/Obi/Editor/RopeAndRod/ObiRopeCursorEditor.cs new file mode 100644 index 000000000..18d81009f --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiRopeCursorEditor.cs @@ -0,0 +1,98 @@ +using UnityEditor; +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + + [CustomEditor(typeof(ObiRopeCursor)), CanEditMultipleObjects] + public class ObiRopeCursorEditor : Editor + { + SerializedProperty cursorMu; + SerializedProperty sourceMu; + SerializedProperty direction; + + public void OnEnable() + { + cursorMu = serializedObject.FindProperty("m_CursorMu"); + sourceMu = serializedObject.FindProperty("m_SourceMu"); + direction = serializedObject.FindProperty("direction"); + } + + public override void OnInspectorGUI() + { + serializedObject.UpdateIfRequiredOrScript(); + + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(cursorMu); + if (EditorGUI.EndChangeCheck()) + { + foreach (var t in targets) + (t as ObiRopeCursor).UpdateCursor(); + } + + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(sourceMu); + if (EditorGUI.EndChangeCheck()) + { + foreach (var t in targets) + (t as ObiRopeCursor).UpdateSource(); + } + + EditorGUILayout.PropertyField(direction); + + // Apply changes to the serializedProperty + if (GUI.changed) + serializedObject.ApplyModifiedProperties(); + + } + + private static void DrawArrow() + { + Gizmos.DrawLine(Vector3.left, Vector3.up); + Gizmos.DrawLine(Vector3.right, Vector3.up); + Gizmos.DrawLine(Vector3.left, Vector3.down); + Gizmos.DrawLine(Vector3.right, Vector3.down); + Gizmos.DrawLine(Vector3.left, Vector3.forward); + Gizmos.DrawLine(Vector3.right, Vector3.forward); + Gizmos.DrawLine(Vector3.up, Vector3.forward); + Gizmos.DrawLine(Vector3.down, Vector3.forward); + } + + [DrawGizmo(GizmoType.Selected)] + private static void DrawGizmos(ObiRopeCursor cursor, GizmoType gizmoType) + { + var rope = cursor.GetComponent(); + if (rope.solver != null) + { + Gizmos.color = new Color(1, 0.5f, 0, 0.75f); + + // draw source particle: + int sourceIndex = cursor.sourceParticleIndex; + + if (sourceIndex >= 0 && rope.IsParticleActive(rope.solver.particleToActor[sourceIndex].indexInActor)) + { + Vector3 pos = rope.GetParticlePosition(sourceIndex); + Gizmos.DrawWireSphere(pos, HandleUtility.GetHandleSize(pos) * 0.4f); + } + + // draw cursor: + var element = cursor.cursorElement; + + if (element != null && element.particle1 != element.particle2) + { + Vector3 pos = rope.GetParticlePosition(cursor.direction ? element.particle1 : element.particle2); + Vector3 pos2 = rope.GetParticlePosition(cursor.direction ? element.particle2 : element.particle1); + Vector3 direction = pos2 - pos; + + float size = HandleUtility.GetHandleSize(pos) * 0.4f; + Gizmos.matrix = Matrix4x4.TRS(pos, Quaternion.LookRotation(direction), Vector3.one * size); + DrawArrow(); + } + } + } + } +} + diff --git a/Assets/Obi/Editor/RopeAndRod/ObiRopeCursorEditor.cs.meta b/Assets/Obi/Editor/RopeAndRod/ObiRopeCursorEditor.cs.meta new file mode 100644 index 000000000..f740a0b2a --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiRopeCursorEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3ec1bf77ba7a47b596abdc62069c72b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/ObiRopeEditor.cs b/Assets/Obi/Editor/RopeAndRod/ObiRopeEditor.cs new file mode 100644 index 000000000..6dc04ad7f --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiRopeEditor.cs @@ -0,0 +1,180 @@ +using UnityEditor; +using UnityEditor.EditorTools; +using UnityEditorInternal; +using UnityEngine; +using System; +using System.Collections.Generic; +using System.Linq; + + +namespace Obi +{ + + [CustomEditor(typeof(ObiRope))] + public class ObiRopeEditor : Editor + { + + [MenuItem("GameObject/3D Object/Obi/Obi Rope", false, 300)] + static void CreateObiRope(MenuCommand menuCommand) + { + GameObject go = new GameObject("Obi Rope", typeof(ObiRope), typeof(ObiRopeExtrudedRenderer)); + ObiEditorUtils.PlaceActorRoot(go, menuCommand); + } + + ObiRope actor; + + SerializedProperty ropeBlueprint; + + SerializedProperty collisionMaterial; + SerializedProperty selfCollisions; + SerializedProperty surfaceCollisions; + + SerializedProperty distanceConstraintsEnabled; + SerializedProperty stretchingScale; + SerializedProperty stretchCompliance; + SerializedProperty maxCompression; + + SerializedProperty bendConstraintsEnabled; + SerializedProperty bendCompliance; + SerializedProperty maxBending; + SerializedProperty plasticYield; + SerializedProperty plasticCreep; + + SerializedProperty tearingEnabled; + SerializedProperty tearResistanceMultiplier; + SerializedProperty tearRate; + + GUIStyle editLabelStyle; + + public void OnEnable() + { + actor = (ObiRope)target; + + ropeBlueprint = serializedObject.FindProperty("m_RopeBlueprint"); + + collisionMaterial = serializedObject.FindProperty("m_CollisionMaterial"); + selfCollisions = serializedObject.FindProperty("m_SelfCollisions"); + surfaceCollisions = serializedObject.FindProperty("m_SurfaceCollisions"); + + distanceConstraintsEnabled = serializedObject.FindProperty("_distanceConstraintsEnabled"); + stretchingScale = serializedObject.FindProperty("_stretchingScale"); + stretchCompliance = serializedObject.FindProperty("_stretchCompliance"); + maxCompression = serializedObject.FindProperty("_maxCompression"); + + bendConstraintsEnabled = serializedObject.FindProperty("_bendConstraintsEnabled"); + bendCompliance = serializedObject.FindProperty("_bendCompliance"); + maxBending = serializedObject.FindProperty("_maxBending"); + plasticYield = serializedObject.FindProperty("_plasticYield"); + plasticCreep = serializedObject.FindProperty("_plasticCreep"); + + tearingEnabled = serializedObject.FindProperty("tearingEnabled"); + tearResistanceMultiplier = serializedObject.FindProperty("tearResistanceMultiplier"); + tearRate = serializedObject.FindProperty("tearRate"); + + } + + private void DoEditButton() + { + using (new EditorGUI.DisabledScope(actor.ropeBlueprint == null)) + { + EditorGUILayout.BeginHorizontal(); + GUILayout.Space(EditorGUIUtility.labelWidth); + EditorGUI.BeginChangeCheck(); + bool edit = GUILayout.Toggle(ToolManager.activeToolType == typeof(ObiPathEditor), new GUIContent(Resources.Load("EditCurves")), "Button", GUILayout.MaxWidth(36), GUILayout.MaxHeight(24)); + EditorGUILayout.LabelField("Edit path", editLabelStyle, GUILayout.ExpandHeight(true), GUILayout.MaxHeight(24)); + if (EditorGUI.EndChangeCheck()) + { + if (edit) + ToolManager.SetActiveTool(); + else + ToolManager.RestorePreviousPersistentTool(); + + SceneView.RepaintAll(); + } + EditorGUILayout.EndHorizontal(); + } + } + + public override void OnInspectorGUI() + { + if (editLabelStyle == null) + { + editLabelStyle = new GUIStyle(GUI.skin.label); + editLabelStyle.alignment = TextAnchor.MiddleLeft; + } + + serializedObject.UpdateIfRequiredOrScript(); + + if (actor.sourceBlueprint != null && actor.ropeBlueprint.path.ControlPointCount < 2) + { + actor.ropeBlueprint.GenerateImmediate(); + } + + using (new EditorGUI.DisabledScope(ToolManager.activeToolType == typeof(ObiPathEditor))) + { + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(ropeBlueprint, new GUIContent("Blueprint")); + if (EditorGUI.EndChangeCheck()) + { + foreach (var t in targets) + { + (t as ObiRope).RemoveFromSolver(); + (t as ObiRope).ClearState(); + } + serializedObject.ApplyModifiedProperties(); + foreach (var t in targets) + (t as ObiRope).AddToSolver(); + } + } + + DoEditButton(); + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Collisions", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(collisionMaterial, new GUIContent("Collision material")); + EditorGUILayout.PropertyField(selfCollisions, new GUIContent("Self collisions")); + EditorGUILayout.PropertyField(surfaceCollisions, new GUIContent("Surface-based collisions")); + + EditorGUILayout.Space(); + ObiEditorUtils.DoToggleablePropertyGroup(tearingEnabled, new GUIContent("Tearing"), + () => + { + EditorGUILayout.PropertyField(tearResistanceMultiplier, new GUIContent("Tear resistance")); + EditorGUILayout.PropertyField(tearRate, new GUIContent("Tear rate")); + }); + ObiEditorUtils.DoToggleablePropertyGroup(distanceConstraintsEnabled, new GUIContent("Distance Constraints", Resources.Load("Icons/ObiDistanceConstraints Icon")), + () => + { + EditorGUILayout.PropertyField(stretchingScale, new GUIContent("Stretching scale")); + EditorGUILayout.PropertyField(stretchCompliance, new GUIContent("Stretch compliance")); + EditorGUILayout.PropertyField(maxCompression, new GUIContent("Max compression")); + }); + + ObiEditorUtils.DoToggleablePropertyGroup(bendConstraintsEnabled, new GUIContent("Bend Constraints", Resources.Load("Icons/ObiBendConstraints Icon")), + () => + { + EditorGUILayout.PropertyField(bendCompliance, new GUIContent("Bend compliance")); + EditorGUILayout.PropertyField(maxBending, new GUIContent("Max bending")); + EditorGUILayout.PropertyField(plasticYield, new GUIContent("Plastic yield")); + EditorGUILayout.PropertyField(plasticCreep, new GUIContent("Plastic creep")); + }); + + + if (GUI.changed) + serializedObject.ApplyModifiedProperties(); + + } + + [DrawGizmo(GizmoType.Selected)] + private static void DrawGizmos(ObiRope actor, GizmoType gizmoType) + { + Handles.color = Color.white; + if (actor.ropeBlueprint != null) + ObiPathHandles.DrawPathHandle(actor.ropeBlueprint.path, actor.transform.localToWorldMatrix, actor.ropeBlueprint.thickness, 20, false); + } + + } + +} + + diff --git a/Assets/Obi/Editor/RopeAndRod/ObiRopeEditor.cs.meta b/Assets/Obi/Editor/RopeAndRod/ObiRopeEditor.cs.meta new file mode 100644 index 000000000..78df88c8d --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiRopeEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b7e5f7e0daf504c86885734478e9c965 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/ObiRopeExtrudedRendererEditor.cs b/Assets/Obi/Editor/RopeAndRod/ObiRopeExtrudedRendererEditor.cs new file mode 100644 index 000000000..de1b48fbc --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiRopeExtrudedRendererEditor.cs @@ -0,0 +1,51 @@ +using UnityEditor; +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi{ + + [CustomEditor(typeof(ObiRopeExtrudedRenderer)), CanEditMultipleObjects] + public class ObiRopeExtrudedRendererEditor : Editor + { + + ObiRopeExtrudedRenderer renderer; + + public void OnEnable(){ + renderer = (ObiRopeExtrudedRenderer)target; + } + + private void BakeMesh() + { + if (renderer != null && renderer.extrudedMesh != null) + { + ObiEditorUtils.SaveMesh(renderer.extrudedMesh, "Save extruded mesh", "rope mesh"); + } + } + + public override void OnInspectorGUI() { + + serializedObject.UpdateIfRequiredOrScript(); + + if (GUILayout.Button("BakeMesh")) + { + BakeMesh(); + } + + Editor.DrawPropertiesExcluding(serializedObject,"m_Script"); + + // Apply changes to the serializedProperty + if (GUI.changed){ + + serializedObject.ApplyModifiedProperties(); + + renderer.UpdateRenderer(renderer.GetComponent()); + + } + + } + + } +} + diff --git a/Assets/Obi/Editor/RopeAndRod/ObiRopeExtrudedRendererEditor.cs.meta b/Assets/Obi/Editor/RopeAndRod/ObiRopeExtrudedRendererEditor.cs.meta new file mode 100644 index 000000000..50deeab9a --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiRopeExtrudedRendererEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 0d0e145ce66cd47e798bf4b926eddfc2 +labels: +- ObiRope +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/ObiRopeLineRendererEditor.cs b/Assets/Obi/Editor/RopeAndRod/ObiRopeLineRendererEditor.cs new file mode 100644 index 000000000..4e21bf8ce --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiRopeLineRendererEditor.cs @@ -0,0 +1,38 @@ +using UnityEditor; +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi{ + + [CustomEditor(typeof(ObiRopeLineRenderer)), CanEditMultipleObjects] + public class ObiRopeLineRendererEditor : Editor + { + + ObiRopeLineRenderer renderer; + + public void OnEnable(){ + renderer = (ObiRopeLineRenderer)target; + } + + public override void OnInspectorGUI() { + + serializedObject.UpdateIfRequiredOrScript(); + + Editor.DrawPropertiesExcluding(serializedObject,"m_Script"); + + // Apply changes to the serializedProperty + if (GUI.changed){ + + serializedObject.ApplyModifiedProperties(); + + renderer.UpdateRenderer(null); + + } + + } + + } +} + diff --git a/Assets/Obi/Editor/RopeAndRod/ObiRopeLineRendererEditor.cs.meta b/Assets/Obi/Editor/RopeAndRod/ObiRopeLineRendererEditor.cs.meta new file mode 100644 index 000000000..5accc43c8 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiRopeLineRendererEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: c0a72c38772bb454dabc7efc5b8f03be +labels: +- ObiRope +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/ObiRopeMeshRendererEditor.cs b/Assets/Obi/Editor/RopeAndRod/ObiRopeMeshRendererEditor.cs new file mode 100644 index 000000000..8263a50a6 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiRopeMeshRendererEditor.cs @@ -0,0 +1,51 @@ +using UnityEditor; +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi{ + + [CustomEditor(typeof(ObiRopeMeshRenderer)), CanEditMultipleObjects] + public class ObiRopeMeshRendererEditor : Editor + { + + ObiRopeMeshRenderer renderer; + + public void OnEnable(){ + renderer = (ObiRopeMeshRenderer)target; + } + + private void BakeMesh() + { + if (renderer != null && renderer.deformedMesh != null) + { + ObiEditorUtils.SaveMesh(renderer.deformedMesh, "Save deformed mesh", "rope mesh"); + } + } + + public override void OnInspectorGUI() { + + serializedObject.UpdateIfRequiredOrScript(); + + if (GUILayout.Button("BakeMesh")) + { + BakeMesh(); + } + + Editor.DrawPropertiesExcluding(serializedObject,"m_Script"); + + // Apply changes to the serializedProperty + if (GUI.changed){ + + serializedObject.ApplyModifiedProperties(); + + renderer.UpdateRenderer(renderer.GetComponent()); + + } + + } + + } +} + diff --git a/Assets/Obi/Editor/RopeAndRod/ObiRopeMeshRendererEditor.cs.meta b/Assets/Obi/Editor/RopeAndRod/ObiRopeMeshRendererEditor.cs.meta new file mode 100644 index 000000000..6a6c6a27a --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiRopeMeshRendererEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 297abfc8979aa46329f3a7e914866adc +labels: +- ObiRope +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Editor/RopeAndRod/ObiRopeSectionEditor.cs b/Assets/Obi/Editor/RopeAndRod/ObiRopeSectionEditor.cs new file mode 100644 index 000000000..b5c6fe481 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiRopeSectionEditor.cs @@ -0,0 +1,213 @@ +using UnityEditor; +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi{ + + /** + * Custom inspector for ObiParticleRenderer component. + */ + + [CustomEditor(typeof(ObiRopeSection))] + public class ObiRopeSectionEditor : Editor + { + + ObiRopeSection section; + bool[] selected = new bool[0]; + + Color previewBck = new Color(0.2f,0.2f,0.2f,1); + Color previewLines = new Color(0.15f,0.15f,0.15f,1); + + public void OnEnable(){ + section = (ObiRopeSection)target; + } + + public override bool HasPreviewGUI(){ + return true; + } + + private void ResetSelection(){ + selected = new bool[section.Segments]; + } + + public override void OnInspectorGUI() { + + serializedObject.UpdateIfRequiredOrScript(); + + Editor.DrawPropertiesExcluding(serializedObject,"m_Script"); + + GUI.enabled = !EditorApplication.isPlaying; + GUILayout.Label("Presets"); + + GUILayout.BeginHorizontal(); + if (GUILayout.Button("4-segment circle")){ + Undo.RecordObject(section, "Set rope section preset"); + section.CirclePreset(4); + ResetSelection(); + } + + if (GUILayout.Button("8-segment circle")){ + Undo.RecordObject(section, "Set rope section preset"); + section.CirclePreset(8); + ResetSelection(); + } + GUILayout.EndHorizontal(); + + GUILayout.BeginHorizontal(); + if (GUILayout.Button("12-segment circle")){ + Undo.RecordObject(section, "Set rope section preset"); + section.CirclePreset(12); + ResetSelection(); + } + + if (GUILayout.Button("16-segment circle")){ + Undo.RecordObject(section, "Set rope section preset"); + section.CirclePreset(16); + ResetSelection(); + } + GUILayout.EndHorizontal(); + + GUILayout.Label("Tools"); + if (GUILayout.Button("Add vertex")){ + Undo.RecordObject(section, "Add rope vertex"); + section.vertices.Add(Vector2.zero); + } + + if (GUILayout.Button("Remove selected vertices")){ + Undo.RecordObject(section, "Remove rope vertices"); + for (int i = selected.Length-1; i > 0; --i){ + if (selected[i] && section.vertices.Count > 3) + section.vertices.RemoveAt(i); + } + // special cases: first vertex: + if (selected[0] && section.vertices.Count > 3){ + section.vertices.RemoveAt(0); + section.vertices[section.vertices.Count-1] = section.vertices[0]; + } + + ResetSelection(); + } + GUI.enabled = true; + + // Apply changes to the serializedProperty + if (GUI.changed){ + serializedObject.ApplyModifiedProperties(); + EditorUtility.SetDirty(target); + } + + } + + private void DrawSectionOutline(Rect region, Color color){ + // Draw segment lines: + Handles.BeginGUI( ); + Color oldColor = Handles.color; + Handles.color = color; + Vector3[] points = new Vector3[section.vertices.Count]; + for (int i = 0; i < section.vertices.Count; i++){ + points[i] = new Vector3(region.center.x + section.vertices[i].x * region.width * 0.5f, + region.center.y + section.vertices[i].y * region.height * 0.5f,0); + } + Handles.DrawAAPolyLine(points); + Handles.EndGUI(); + Handles.color = oldColor; + } + + private void DrawDrawingArea(Rect region){ + // Draw drawing area grid: + Handles.BeginGUI(); + Handles.DrawSolidRectangleWithOutline(region,previewBck,previewLines); + + Color oldColor = Handles.color; + Handles.color = previewLines; + + if (section.snapX > 5){ + float x = region.center.x; + while (x < region.xMax){ + Handles.DrawLine(new Vector3(x,region.yMin,0),new Vector3(x,region.yMax,0)); + x += section.snapX; + } + x = region.center.x - section.snapX; + while (x > region.xMin){ + Handles.DrawLine(new Vector3(x,region.yMin,0),new Vector3(x,region.yMax,0)); + x -= section.snapX; + } + } + + if (section.snapY > 5){ + float y = region.center.y; + while (y < region.yMax){ + Handles.DrawLine(new Vector3(region.xMin,y,0),new Vector3(region.xMax,y,0)); + y += section.snapY; + } + y = region.center.y - section.snapY; + while (y > region.yMin){ + Handles.DrawLine(new Vector3(region.xMin,y,0),new Vector3(region.xMax,y,0)); + y -= section.snapY; + } + } + + Handles.color = oldColor; + Handles.EndGUI(); + } + + public override void OnPreviewGUI(Rect region, GUIStyle background) + { + DrawSectionOutline(region, Color.red); + } + + public override void OnInteractivePreviewGUI(Rect region, GUIStyle background) + { + Array.Resize(ref selected,section.Segments); + + // Calculate drawing area rect: + Vector2 oldCenter = region.center; + if (region.width > region.height) + region.width = region.height; + if (region.height > region.width) + region.height = region.width; + + region.width -= 10; + region.height -= 15; + + region.center = oldCenter; + + // Draw background and lines: + DrawDrawingArea(region); + + // Draw the section outline: + DrawSectionOutline(region, Color.white); + + // Draw all draggable vertices: + for (int i = 0; i < section.Segments; i++){ + + float x = region.center.x + section.vertices[i].x * region.width * 0.5f; + float y = region.center.y + section.vertices[i].y * region.height * 0.5f; + Vector2 pos = new Vector2(x,y); + + bool oldSelection = selected[i]; + Vector2 olsPos = pos; + selected[i] = ObiDraggableIcon.Draw(selected[i],i,ref pos,Color.red); + + if (selected[i] != oldSelection) + this.Repaint(); + + if (pos != olsPos){ + + pos.x = Mathf.Clamp(ObiRopeSection.SnapTo(pos.x - region.center.x,section.snapX,5) / (region.width * 0.5f),-1,1); + pos.y = Mathf.Clamp(ObiRopeSection.SnapTo(pos.y - region.center.y,section.snapY,5) / (region.height * 0.5f),-1,1); + section.vertices[i] = pos; + if (i == 0) + section.vertices[section.Segments] = pos; + + EditorUtility.SetDirty(target); + } + } + + } + + } + +} + diff --git a/Assets/Obi/Editor/RopeAndRod/ObiRopeSectionEditor.cs.meta b/Assets/Obi/Editor/RopeAndRod/ObiRopeSectionEditor.cs.meta new file mode 100644 index 000000000..c12c5c628 --- /dev/null +++ b/Assets/Obi/Editor/RopeAndRod/ObiRopeSectionEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 1539d8c58261942e28859228dfa310fb +labels: +- ObiRope +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins.meta b/Assets/Obi/Plugins.meta new file mode 100644 index 000000000..536d60324 --- /dev/null +++ b/Assets/Obi/Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8e4e86215c462421ab9ce3fb2940e67e +folderAsset: yes +timeCreated: 1453095262 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/Android.meta b/Assets/Obi/Plugins/Android.meta new file mode 100644 index 000000000..ef9a766ef --- /dev/null +++ b/Assets/Obi/Plugins/Android.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: bd54dd4041414433090806277fe28ec5 +folderAsset: yes +timeCreated: 1469612501 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/Android/arm64-v8a.meta b/Assets/Obi/Plugins/Android/arm64-v8a.meta new file mode 100644 index 000000000..847d43cea --- /dev/null +++ b/Assets/Obi/Plugins/Android/arm64-v8a.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d31cde6706d1446b7a73b166ec0b560b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/Android/arm64-v8a/libOni.so b/Assets/Obi/Plugins/Android/arm64-v8a/libOni.so new file mode 100644 index 000000000..dcd581275 Binary files /dev/null and b/Assets/Obi/Plugins/Android/arm64-v8a/libOni.so differ diff --git a/Assets/Obi/Plugins/Android/arm64-v8a/libOni.so.meta b/Assets/Obi/Plugins/Android/arm64-v8a/libOni.so.meta new file mode 100644 index 000000000..fc75de83a --- /dev/null +++ b/Assets/Obi/Plugins/Android/arm64-v8a/libOni.so.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: ec20d84f513be4ff68f6efc457203d9c +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARM64 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/Android/arm64-v8a/libc++_shared.so b/Assets/Obi/Plugins/Android/arm64-v8a/libc++_shared.so new file mode 100644 index 000000000..ecc95fabe Binary files /dev/null and b/Assets/Obi/Plugins/Android/arm64-v8a/libc++_shared.so differ diff --git a/Assets/Obi/Plugins/Android/arm64-v8a/libc++_shared.so.meta b/Assets/Obi/Plugins/Android/arm64-v8a/libc++_shared.so.meta new file mode 100644 index 000000000..46671340c --- /dev/null +++ b/Assets/Obi/Plugins/Android/arm64-v8a/libc++_shared.so.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: 2246ddc641dff4615884b65bd5612954 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARM64 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/Android/armeabi-v7a.meta b/Assets/Obi/Plugins/Android/armeabi-v7a.meta new file mode 100644 index 000000000..db7cbb8b7 --- /dev/null +++ b/Assets/Obi/Plugins/Android/armeabi-v7a.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ef39573ee97374cefb6e9a4b7bd78901 +folderAsset: yes +timeCreated: 1469720436 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/Android/armeabi-v7a/libOni.so b/Assets/Obi/Plugins/Android/armeabi-v7a/libOni.so new file mode 100644 index 000000000..705dc68ea Binary files /dev/null and b/Assets/Obi/Plugins/Android/armeabi-v7a/libOni.so differ diff --git a/Assets/Obi/Plugins/Android/armeabi-v7a/libOni.so.meta b/Assets/Obi/Plugins/Android/armeabi-v7a/libOni.so.meta new file mode 100644 index 000000000..4f5bc1551 --- /dev/null +++ b/Assets/Obi/Plugins/Android/armeabi-v7a/libOni.so.meta @@ -0,0 +1,90 @@ +fileFormatVersion: 2 +guid: 17ee7dcf8e257477b93c077d54c798fb +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + '': OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + '': OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/Android/armeabi-v7a/libc++_shared.so b/Assets/Obi/Plugins/Android/armeabi-v7a/libc++_shared.so new file mode 100644 index 000000000..d50142c3c Binary files /dev/null and b/Assets/Obi/Plugins/Android/armeabi-v7a/libc++_shared.so differ diff --git a/Assets/Obi/Plugins/Android/armeabi-v7a/libc++_shared.so.meta b/Assets/Obi/Plugins/Android/armeabi-v7a/libc++_shared.so.meta new file mode 100644 index 000000000..674acf2df --- /dev/null +++ b/Assets/Obi/Plugins/Android/armeabi-v7a/libc++_shared.so.meta @@ -0,0 +1,90 @@ +fileFormatVersion: 2 +guid: ba970f948815f4d80931d2e0de373138 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + '': OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + '': OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/Android/x86.meta b/Assets/Obi/Plugins/Android/x86.meta new file mode 100644 index 000000000..dcb60d9f5 --- /dev/null +++ b/Assets/Obi/Plugins/Android/x86.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4f17988a3533442abbe3f5731bcbee89 +folderAsset: yes +timeCreated: 1469720436 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/Android/x86/libOni.so b/Assets/Obi/Plugins/Android/x86/libOni.so new file mode 100644 index 000000000..6e089dea7 Binary files /dev/null and b/Assets/Obi/Plugins/Android/x86/libOni.so differ diff --git a/Assets/Obi/Plugins/Android/x86/libOni.so.meta b/Assets/Obi/Plugins/Android/x86/libOni.so.meta new file mode 100644 index 000000000..5749e8927 --- /dev/null +++ b/Assets/Obi/Plugins/Android/x86/libOni.so.meta @@ -0,0 +1,90 @@ +fileFormatVersion: 2 +guid: 6a8150ad1b7c140b98640eab40a1c2b0 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + '': OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + '': OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: x86 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/Android/x86/libc++_shared.so b/Assets/Obi/Plugins/Android/x86/libc++_shared.so new file mode 100644 index 000000000..0cf61f3bb Binary files /dev/null and b/Assets/Obi/Plugins/Android/x86/libc++_shared.so differ diff --git a/Assets/Obi/Plugins/Android/x86/libc++_shared.so.meta b/Assets/Obi/Plugins/Android/x86/libc++_shared.so.meta new file mode 100644 index 000000000..a5052712b --- /dev/null +++ b/Assets/Obi/Plugins/Android/x86/libc++_shared.so.meta @@ -0,0 +1,90 @@ +fileFormatVersion: 2 +guid: a91ed7ff7ee034fc891e4b665a3dfbff +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + '': OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + '': OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: x86 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/iOS.meta b/Assets/Obi/Plugins/iOS.meta new file mode 100644 index 000000000..83ba6e5b8 --- /dev/null +++ b/Assets/Obi/Plugins/iOS.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ac2c20e2696d84b29a8bb41e98e72009 +folderAsset: yes +timeCreated: 1454285704 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/iOS/Oni.h b/Assets/Obi/Plugins/iOS/Oni.h new file mode 100644 index 000000000..4927e7747 --- /dev/null +++ b/Assets/Obi/Plugins/iOS/Oni.h @@ -0,0 +1,435 @@ +/* + * Oni.h + * Oni + * + * Created by José María Méndez González on 21/9/15. + * Copyright (c) 2015 ArK. All rights reserved. + * + */ + +#ifndef Oni_ +#define Oni_ + +#include "Solver.h" +#include "HalfEdgeMesh.h" +#include "ParticleGrid.h" +#include "ColliderGrid.h" + +#if defined(__APPLE__) || defined(ANDROID) || defined(__linux__) + #define EXPORT __attribute__((visibility("default"))) +#else + #define EXPORT __declspec(dllexport) +#endif + +namespace Oni +{ + + struct ConstraintGroupParameters; + class ConstraintBatchBase; + struct Collider; + struct Rigidbody; + class TriangleSkinMap; + class DistanceField; + struct CollisionMaterial; + struct ProfileInfo; + struct DFNode; + struct TriangleMeshHeader; + struct EdgeMeshHeader; + struct BIHNode; + struct Triangle; + struct Edge; + + template + struct ObjHandle + { + std::shared_ptr ptr; + + ObjHandle(T* obj):ptr(std::shared_ptr(obj)){} + + ObjHandle(std::shared_ptr obj):ptr(obj){} + + std::shared_ptr operator->() const{ + return ptr; + } + }; + + extern "C" + { + + typedef ObjHandle ConstraintBatchHandle; + typedef ObjHandle ColliderHandle; + typedef ObjHandle RigidbodyHandle; + typedef ObjHandle CollisionMaterialHandle; + typedef ObjHandle DistanceFieldHandle; + typedef ObjHandle TaskHandle; + + // Colliders ********************: + EXPORT void UpdateColliderGrid(float dt); + + EXPORT void SetColliders(Collider* shapes, Bounds* bounds, Transform* transforms, int count); + + EXPORT void SetRigidbodies(Rigidbody* rigidbodies); + + EXPORT void SetCollisionMaterials(CollisionMaterial* materials); + + EXPORT void SetTriangleMeshData(TriangleMeshHeader* headers, BIHNode* nodes, Triangle* triangles, Eigen::Vector3f* vertices); + EXPORT void SetEdgeMeshData(EdgeMeshHeader* headers, BIHNode* nodes, Edge* edges, Eigen::Vector2f* vertices); + EXPORT void SetDistanceFieldData(DistanceFieldHeader* headers, DFNode* nodes); + EXPORT void SetHeightFieldData(HeightFieldHeader* hf_headers, float* hf_samples); + + // Distance fields ********************: + + EXPORT DistanceFieldHandle* CreateDistanceField(); + EXPORT void DestroyDistanceField(DistanceFieldHandle* df); + + EXPORT void StartBuildingDistanceField(DistanceFieldHandle* df,float max_error, + int max_depth, + Eigen::Vector3f* vertex_positions, + int* triangle_indices_, + int num_vertices, + int num_triangles); + + EXPORT bool ContinueBuildingDistanceField(DistanceFieldHandle* df); + + EXPORT float SampleDistanceField(DistanceFieldHandle* df, float x, float y, float z); + + EXPORT int GetDistanceFieldNodeCount(DistanceFieldHandle* df); + EXPORT void GetDistanceFieldNodes(DistanceFieldHandle* df, DFNode* nodes); + EXPORT void SetDistanceFieldNodes(DistanceFieldHandle* df, const DFNode* nodes, int num); + + // Collision materials *****************: + + EXPORT CollisionMaterialHandle* CreateCollisionMaterial(); + EXPORT void UpdateCollisionMaterial(CollisionMaterialHandle* material, const CollisionMaterial& adaptor); + EXPORT void DestroyCollisionMaterial(CollisionMaterialHandle* collider); + + // Solver ********************: + + EXPORT Solver* CreateSolver(int capacity); + EXPORT void DestroySolver(Solver* solver); + + EXPORT void SetCapacity(Solver* solver,int capacity); + EXPORT void InitializeFrame(Solver* solver,const Vector4fUnaligned& position, const Vector4fUnaligned& scale, const QuaternionfUnaligned& rotation); + EXPORT void UpdateFrame(Solver* solver,const Vector4fUnaligned& position, const Vector4fUnaligned& scale, const QuaternionfUnaligned& rotation, float dt); + EXPORT void ApplyFrame(Solver* solver, float linear_velocity_scale, float angular_velocity_scale, float linear_inertia_scale,float angular_inertia_scale, float dt); + + EXPORT void GetBounds(Solver* solver, Eigen::Vector3f& min, Eigen::Vector3f& max); + EXPORT int GetParticleGridSize(Solver* solver); + EXPORT void GetParticleGrid(Solver* solver, Bounds* cells); + + EXPORT void SetSolverParameters(Solver* solver, const SolverParameters* parameters); + EXPORT void GetSolverParameters(Solver* solver, SolverParameters* parameters); + + EXPORT TaskHandle* CollisionDetection(Solver* solver, float step_time); + EXPORT TaskHandle* Step(Solver* solver, float step_time, float substep_time, int substeps); + + EXPORT int SpatialQuery(Solver* solver, QueryShape* shapes, Transform* transforms, int shape_count); + EXPORT void GetQueryResults(Solver* solver, QueryResult* results, int num); + + EXPORT void ApplyPositionInterpolation(Solver* solver, + Eigen::Vector4f* start_positions, + Eigen::Quaternionf* start_orientations, + float step_time, + float unsimulated_time); + + EXPORT void UpdateSkeletalAnimation(Solver* solver); + + EXPORT void RecalculateInertiaTensors(Solver* solver); + + EXPORT void ResetForces(Solver* solver); + + EXPORT void SetRigidbodyLinearDeltas(Solver* solver, Eigen::Vector4f* linear_deltas); + EXPORT void SetRigidbodyAngularDeltas(Solver* solver, Eigen::Vector4f* angular_deltas); + + + EXPORT int GetConstraintCount(Solver* solver, const Solver::ConstraintType type); + + EXPORT int SetActiveParticles(Solver* solver, const int* active, int num); + + EXPORT void SetParticleCollisionMaterials(Solver* solver, int* material_indices); + + EXPORT void SetParticlePhases(Solver* solver, int* phases); + + EXPORT void SetParticleFilters(Solver* solver, int* filters); + + EXPORT void SetParticlePositions(Solver* solver, Eigen::Vector4f* positions); + + EXPORT void SetParticlePreviousPositions(Solver* solver, Eigen::Vector4f* prev_positions); + + EXPORT void SetParticleOrientations(Solver* solver,Eigen::Quaternionf* orientations); + + EXPORT void SetParticlePreviousOrientations(Solver* solver, Eigen::Quaternionf* prev_orientations); + + EXPORT void SetRenderableParticleOrientations(Solver* solver, Eigen::Quaternionf* orientations); + + EXPORT void SetRenderableParticlePositions(Solver* solver, Eigen::Vector4f* positions); + + EXPORT void SetParticleInverseMasses(Solver* solver, float* inv_masses); + + EXPORT void SetParticleInverseRotationalMasses(Solver* solver, float* inv_rot_masses); + + EXPORT void SetParticlePrincipalRadii(Solver* solver, Eigen::Vector4f* radii); + + EXPORT void SetParticleVelocities(Solver* solver, Eigen::Vector4f* velocities); + + EXPORT void SetParticleAngularVelocities(Solver* solver, Eigen::Vector4f* velocities); + + EXPORT void SetParticleExternalForces(Solver* solver, Eigen::Vector4f* forces); + + EXPORT void SetParticleExternalTorques(Solver* solver, Eigen::Vector4f* torques); + + EXPORT void SetParticleWinds(Solver* solver, Eigen::Vector4f* wind); + + EXPORT void SetParticlePositionDeltas(Solver* solver, Eigen::Vector4f* deltas); + + EXPORT void SetParticleOrientationDeltas(Solver* solver, Eigen::Quaternionf* deltas); + + EXPORT void SetParticlePositionConstraintCounts(Solver* solver, int* counts); + + EXPORT void SetParticleOrientationConstraintCounts(Solver* solver, int* counts); + + EXPORT void SetParticleNormals(Solver* solver, Eigen::Vector4f* normals); + + EXPORT void SetParticleInverseInertiaTensors(Solver* solver, Eigen::Vector4f* tensors); + + EXPORT int SetSimplices(Solver* solver, const int* simplices, int point_count, int edge_count, int triangle_count); + + + EXPORT int GetDeformableTriangleCount(Solver* solver); + + EXPORT void SetDeformableTriangles(Solver* solver, const int* indices, int num, int dest_offset); + + EXPORT int RemoveDeformableTriangles(Solver* solver, int num, int source_offset); + + + // Fluid ********************: + + EXPORT void SetParticleSmoothingRadii(Solver* solver,float* radii); + + EXPORT void SetParticleBuoyancy(Solver* solver,float* buoyancy); + + EXPORT void SetParticleRestDensities(Solver* solver,float* rest_densities); + + EXPORT void SetParticleViscosities(Solver* solver,float* viscosities); + + EXPORT void SetParticleSurfaceTension(Solver* solver,float* surf_tension); + + EXPORT void SetParticleVorticityConfinement(Solver* solver,float* vort_confinement); + + EXPORT void SetParticleAtmosphericDragPressure(Solver* solver,float* atmospheric_drag, float* atmospheric_pressure); + + EXPORT void SetParticleDiffusion(Solver* solver,float* diffusion); + + + EXPORT void SetParticleVorticities(Solver* solver, Eigen::Vector4f* vorticities); + + EXPORT void SetParticleFluidData(Solver* solver, Eigen::Vector4f* fluid_data); + + EXPORT void SetParticleUserData(Solver* solver, Eigen::Vector4f* user_data); + + EXPORT void SetParticleAnisotropies(Solver* solver, Eigen::Vector4f* anisotropies); + + + + EXPORT void SetConstraintGroupParameters(Solver* solver, const Solver::ConstraintType type, const ConstraintGroupParameters* parameters); + + EXPORT void GetConstraintGroupParameters(Solver* solver, const Solver::ConstraintType type, ConstraintGroupParameters* parameters); + + EXPORT void SetRestPositions(Solver* solver, Eigen::Vector4f* rest_positions); + + EXPORT void SetRestOrientations(Solver* solver, Eigen::Quaternionf* rest_orientations); + + + // Batches ********************: + + EXPORT ConstraintBatchHandle* CreateBatch(const Solver::ConstraintType type); + + EXPORT void DestroyBatch(ConstraintBatchHandle* batch); + + EXPORT void AddBatch(Solver* solver, ConstraintBatchHandle* batch); + + EXPORT void RemoveBatch(Solver* solver, ConstraintBatchHandle* batch); + + EXPORT void EnableBatch(ConstraintBatchHandle* batch, bool enabled); + + EXPORT int GetBatchConstraintForces(ConstraintBatchHandle* batch, float* forces, int num, int source_offset); + + // Constraints ********************: + + EXPORT void SetBatchConstraintCount(ConstraintBatchHandle* batch, int num); + + EXPORT int GetBatchConstraintCount(ConstraintBatchHandle* batch); + + EXPORT void SetDistanceConstraints(ConstraintBatchHandle* batch, + int* indices, + float* restLengths, + float* stiffnesses, + float* lambdas, + int num); + + EXPORT void SetBendingConstraints(ConstraintBatchHandle* batch, + int* indices, + float* rest_bends, + float* bending_stiffnesses, + float* plasticity, + float* lambdas, + int num); + + EXPORT void SetSkinConstraints(ConstraintBatchHandle* batch, + int* indices, + Eigen::Vector4f* skin_points, + Eigen::Vector4f* skin_normals, + float* radii_backstops, + float* stiffnesses, + float* lambdas, + int num); + + EXPORT void SetAerodynamicConstraints(ConstraintBatchHandle* batch, + int* triangle_indices, + float* aerodynamic_coeffs, + int num); + + EXPORT void SetVolumeConstraints(ConstraintBatchHandle* batch, + int* triangle_indices, + int* first_triangle, + int* num_triangles, + float* rest_volumes, + float* pressure_stiffnesses, + float* lambdas, + int num); + + EXPORT void SetShapeMatchingConstraints(ConstraintBatchHandle* batch, + int* shape_indices, + int* first_index, + int* num_indices, + int* explicit_group, + float* shape_material_parameters, + Eigen::Vector4f* rest_coms, + Eigen::Vector4f* coms, + Eigen::Quaternionf* orientations, + Eigen::Matrix4f* linear_transforms, + Eigen::Matrix4f* plastic_deformations, + int num); + + EXPORT void CalculateRestShapeMatching(Solver* solver, ConstraintBatchHandle* batch); + + EXPORT void SetStretchShearConstraints(ConstraintBatchHandle* batch, + int* particle_indices, + int* orientation_indices, + float* rest_lengths, + Eigen::Quaternionf* rest_orientations, + Eigen::Vector3f* stiffnesses, + Eigen::Vector3f* lambdas, + int num); + + EXPORT void SetBendTwistConstraints(ConstraintBatchHandle* batch, + int* orientation_indices, + Eigen::Quaternionf* rest_darboux, + Eigen::Vector3f* stiffnesses, + float* plasticity, + Eigen::Vector3f* lambdas, + int num); + + EXPORT void SetTetherConstraints(ConstraintBatchHandle* batch, + int* indices, + float* max_lenght_scales, + float* stiffnesses, + float* lambdas, + int num); + + EXPORT void SetPinConstraints(ConstraintBatchHandle* batch, + int* indices, + Vector4f* pin_offsets, + Quaternionf* rest_darboux, + int* colliders, + float* stiffnesses, + Eigen::Vector4f* lambdas, + int num); + + EXPORT void SetStitchConstraints(ConstraintBatchHandle* batch, + int* indices, + float* stiffnesses, + float* lambdas, + int num); + + EXPORT void SetChainConstraints(ConstraintBatchHandle* batch, + int* indices, + float* rest_lengths, + int* first_index, + int* num_indices, + int num); + + // Collision data ********************: + + EXPORT void GetCollisionContacts(Solver* solver,Contact* contacts, int num); + + EXPORT void GetParticleCollisionContacts(Solver* solver,Contact* contacts, int num); + + // Diffuse particles ********************: + + EXPORT void InterpolateDiffuseParticles(Solver* solver, + const Eigen::Vector4f* properties, + const Eigen::Vector4f* diffuse_positions, + Eigen::Vector4f* diffuse_properties, + int* neighbour_count, + int count); + + // Skin maps ********************: + + EXPORT TriangleSkinMap* CreateTriangleSkinMap(); + + EXPORT void DestroyTriangleSkinMap(TriangleSkinMap* map); + + EXPORT void Bind(TriangleSkinMap* map, Mesh* source, Mesh* target, + const unsigned int* source_master_flags, + const unsigned int* target_slave_flags); + + EXPORT int GetSkinnedVertexCount(TriangleSkinMap* map); + + EXPORT void GetSkinInfo(TriangleSkinMap* map, + int* skin_indices, + int* source_tri_indices, + Eigen::Vector3f* bary_pos, + Eigen::Vector3f* bary_nrm, + Eigen::Vector3f* bary_tan); + + EXPORT void SetSkinInfo(TriangleSkinMap* map, + const int* skin_indices, + const int* source_tri_indices, + const Eigen::Vector3f* bary_pos, + const Eigen::Vector3f* bary_nrm, + const Eigen::Vector3f* bary_tan, + int num); + + // Tasks ********************: + + EXPORT void CompleteAll(); + + EXPORT void Complete(TaskHandle* task); + + EXPORT TaskHandle* CreateEmpty(); + + EXPORT void Schedule(TaskHandle* task); + + EXPORT void AddChild(TaskHandle* task, TaskHandle* child); + + // Profiling ****************: + + EXPORT int GetMaxSystemConcurrency(); + + EXPORT void ClearProfiler(); + + EXPORT void EnableProfiler(bool enabled); + + EXPORT void BeginSample(const char* name, unsigned char type); + + EXPORT void EndSample(); + + EXPORT int GetProfilingInfoCount(); + + EXPORT void GetProfilingInfo(ProfileInfo* info, int count); + } + +} + +#endif diff --git a/Assets/Obi/Plugins/iOS/Oni.h.meta b/Assets/Obi/Plugins/iOS/Oni.h.meta new file mode 100644 index 000000000..9f03bca3f --- /dev/null +++ b/Assets/Obi/Plugins/iOS/Oni.h.meta @@ -0,0 +1,90 @@ +fileFormatVersion: 2 +guid: 03646faf401f74c9e8e73b6365c17f63 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + '': OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + '': OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 1 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/iOS/OniHelpers.h b/Assets/Obi/Plugins/iOS/OniHelpers.h new file mode 100644 index 000000000..7b98e3ed4 --- /dev/null +++ b/Assets/Obi/Plugins/iOS/OniHelpers.h @@ -0,0 +1,72 @@ +/* + * OniHelpers.h + * Oni + * + * Created by José María Méndez González on 21/9/15. + * Copyright (c) 2015 ArK. All rights reserved. + * + */ + +#ifndef OniHelpers_ +#define OniHelpers_ + +#include "Dense" +#include "HalfEdgeMesh.h" + +#if defined(__APPLE__) || defined(ANDROID) || defined(__linux__) + #define EXPORT __attribute__((visibility("default"))) +#else + #define EXPORT __declspec(dllexport) +#endif + +namespace Oni +{ + extern "C" + { + + EXPORT int MakePhase(int group, int flags); + EXPORT int GetGroupFromPhase(int phase); + + /** + * Calculates the rest bend factor for a bending constraint between 3 particles. + * @param coordinates an array of 9 floats: x,y,z of the first particle, x,y,z of the second particle, x,y,z of the third (central) particle. + */ + EXPORT float BendingConstraintRest(float* coordinates); + + EXPORT HalfEdgeMesh* CreateHalfEdgeMesh(); + + EXPORT void DestroyHalfEdgeMesh(HalfEdgeMesh* mesh); + EXPORT void GetHalfEdgeMeshInfo(HalfEdgeMesh* mesh, HalfEdgeMesh::MeshInformation* mesh_info); + + EXPORT void CalculatePrimitiveCounts(HalfEdgeMesh* mesh, + Eigen::Vector3f* vertices, + int* triangles, + int vertex_count, + int triangle_count); + + EXPORT void Generate(HalfEdgeMesh* mesh, + Eigen::Vector3f* vertices, + int* triangles, + int vertex_count, + int triangle_count, + float* scale); + + EXPORT void SetHalfEdges(HalfEdgeMesh* mesh,HalfEdgeMesh::HalfEdge* half_edges, int count); + EXPORT void SetVertices(HalfEdgeMesh* mesh,HalfEdgeMesh::Vertex* vertices, int count); + EXPORT void SetFaces(HalfEdgeMesh* mesh,HalfEdgeMesh::Face* faces, int count); + + EXPORT void SetNormals(HalfEdgeMesh* mesh,Eigen::Vector3f* normals); + EXPORT void SetTangents(HalfEdgeMesh* mesh,Vector4fUnaligned* tangents); + EXPORT void SetInverseOrientations(HalfEdgeMesh* mesh,QuaternionfUnaligned* orientations); + EXPORT void SetVisualMap(HalfEdgeMesh* mesh,int* map); + + EXPORT int GetHalfEdgeCount(HalfEdgeMesh* mesh); + EXPORT int GetVertexCount(HalfEdgeMesh* mesh); + EXPORT int GetFaceCount(HalfEdgeMesh* mesh); + + EXPORT void GetPointCloudAnisotropy(Eigen::Vector3f* points,int count,float max_anisotropy,float radius, const Eigen::Vector3f& hint_normal, Eigen::Vector3f& centroid, QuaternionfUnaligned& orientation,Eigen::Vector3f& principal_values); + } + +} + +#endif diff --git a/Assets/Obi/Plugins/iOS/OniHelpers.h.meta b/Assets/Obi/Plugins/iOS/OniHelpers.h.meta new file mode 100644 index 000000000..5675557e1 --- /dev/null +++ b/Assets/Obi/Plugins/iOS/OniHelpers.h.meta @@ -0,0 +1,90 @@ +fileFormatVersion: 2 +guid: 4f88b733d928048638365465e86b8f3b +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + '': OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + '': OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 1 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/iOS/libOni.a b/Assets/Obi/Plugins/iOS/libOni.a new file mode 100644 index 000000000..bc6079fbd Binary files /dev/null and b/Assets/Obi/Plugins/iOS/libOni.a differ diff --git a/Assets/Obi/Plugins/iOS/libOni.a.meta b/Assets/Obi/Plugins/iOS/libOni.a.meta new file mode 100644 index 000000000..d532c806e --- /dev/null +++ b/Assets/Obi/Plugins/iOS/libOni.a.meta @@ -0,0 +1,105 @@ +fileFormatVersion: 2 +guid: 480286a2338ca4cb6a36110dcd0614f4 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 1 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/libOni.bundle.meta b/Assets/Obi/Plugins/libOni.bundle.meta new file mode 100644 index 000000000..ba94bc967 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle.meta @@ -0,0 +1,40 @@ +fileFormatVersion: 2 +guid: 2882732abb8524a2dad5a38e94bea1fc +folderAsset: yes +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': OSXIntel + second: + enabled: 1 + settings: {} + - first: + '': OSXIntel64 + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents.meta b/Assets/Obi/Plugins/libOni.bundle/Contents.meta new file mode 100644 index 000000000..8bdbdc030 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b0f57a84cadd44090a54d60174a2e7e9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Info.plist b/Assets/Obi/Plugins/libOni.bundle/Contents/Info.plist new file mode 100644 index 000000000..cfc875948 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Info.plist @@ -0,0 +1,50 @@ + + + + + BuildMachineOSBuild + 19E266 + CFBundleDevelopmentRegion + en + CFBundleExecutable + Oni + CFBundleIdentifier + com.Ark.Oni + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Oni + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 1 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 12D4e + DTPlatformName + macosx + DTPlatformVersion + 11.1 + DTSDKBuild + 20C63 + DTSDKName + macosx11.1 + DTXcode + 1240 + DTXcodeBuild + 12D4e + LSMinimumSystemVersion + 10.11 + NSHumanReadableCopyright + Copyright © 2016 Ark. All rights reserved. + + diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/MacOS.meta b/Assets/Obi/Plugins/libOni.bundle/Contents/MacOS.meta new file mode 100644 index 000000000..1354871a0 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/MacOS.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9571d0925c2004cd38ac86f7d85b061f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/MacOS/Oni b/Assets/Obi/Plugins/libOni.bundle/Contents/MacOS/Oni new file mode 100644 index 000000000..86f77bea8 Binary files /dev/null and b/Assets/Obi/Plugins/libOni.bundle/Contents/MacOS/Oni differ diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources.meta b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources.meta new file mode 100644 index 000000000..22b2f5c7b --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 99a8462e7396040d782ca6004afd63e8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/CMakeLists.txt b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/CMakeLists.txt new file mode 100644 index 000000000..9eb502b79 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/CMakeLists.txt @@ -0,0 +1,19 @@ +include(RegexUtils) +test_escape_string_as_regex() + +file(GLOB Eigen_directory_files "*") + +escape_string_as_regex(ESCAPED_CMAKE_CURRENT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") + +foreach(f ${Eigen_directory_files}) + if(NOT f MATCHES "\\.txt" AND NOT f MATCHES "${ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/[.].+" AND NOT f MATCHES "${ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/src") + list(APPEND Eigen_directory_files_to_install ${f}) + endif() +endforeach(f ${Eigen_directory_files}) + +install(FILES + ${Eigen_directory_files_to_install} + DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen COMPONENT Devel + ) + +install(DIRECTORY src DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen COMPONENT Devel FILES_MATCHING PATTERN "*.h") diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Cholesky b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Cholesky new file mode 100644 index 000000000..1332b540d --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Cholesky @@ -0,0 +1,46 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_CHOLESKY_MODULE_H +#define EIGEN_CHOLESKY_MODULE_H + +#include "Core" +#include "Jacobi" + +#include "src/Core/util/DisableStupidWarnings.h" + +/** \defgroup Cholesky_Module Cholesky module + * + * + * + * This module provides two variants of the Cholesky decomposition for selfadjoint (hermitian) matrices. + * Those decompositions are also accessible via the following methods: + * - MatrixBase::llt() + * - MatrixBase::ldlt() + * - SelfAdjointView::llt() + * - SelfAdjointView::ldlt() + * + * \code + * #include + * \endcode + */ + +#include "src/Cholesky/LLT.h" +#include "src/Cholesky/LDLT.h" +#ifdef EIGEN_USE_LAPACKE +#ifdef EIGEN_USE_MKL +#include "mkl_lapacke.h" +#else +#include "src/misc/lapacke.h" +#endif +#include "src/Cholesky/LLT_LAPACKE.h" +#endif + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_CHOLESKY_MODULE_H +/* vim: set filetype=cpp et sw=2 ts=2 ai: */ diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/CholmodSupport b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/CholmodSupport new file mode 100644 index 000000000..bed8924d3 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/CholmodSupport @@ -0,0 +1,48 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_CHOLMODSUPPORT_MODULE_H +#define EIGEN_CHOLMODSUPPORT_MODULE_H + +#include "SparseCore" + +#include "src/Core/util/DisableStupidWarnings.h" + +extern "C" { + #include +} + +/** \ingroup Support_modules + * \defgroup CholmodSupport_Module CholmodSupport module + * + * This module provides an interface to the Cholmod library which is part of the suitesparse package. + * It provides the two following main factorization classes: + * - class CholmodSupernodalLLT: a supernodal LLT Cholesky factorization. + * - class CholmodDecomposiiton: a general L(D)LT Cholesky factorization with automatic or explicit runtime selection of the underlying factorization method (supernodal or simplicial). + * + * For the sake of completeness, this module also propose the two following classes: + * - class CholmodSimplicialLLT + * - class CholmodSimplicialLDLT + * Note that these classes does not bring any particular advantage compared to the built-in + * SimplicialLLT and SimplicialLDLT factorization classes. + * + * \code + * #include + * \endcode + * + * In order to use this module, the cholmod headers must be accessible from the include paths, and your binary must be linked to the cholmod library and its dependencies. + * The dependencies depend on how cholmod has been compiled. + * For a cmake based project, you can use our FindCholmod.cmake module to help you in this task. + * + */ + +#include "src/CholmodSupport/CholmodSupport.h" + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_CHOLMODSUPPORT_MODULE_H + diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Core b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Core new file mode 100644 index 000000000..b923b8c00 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Core @@ -0,0 +1,537 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// Copyright (C) 2008 Gael Guennebaud +// Copyright (C) 2007-2011 Benoit Jacob +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_CORE_H +#define EIGEN_CORE_H + +// first thing Eigen does: stop the compiler from committing suicide +#include "src/Core/util/DisableStupidWarnings.h" + +#if defined(__CUDACC__) && !defined(EIGEN_NO_CUDA) + #define EIGEN_CUDACC __CUDACC__ +#endif + +#if defined(__CUDA_ARCH__) && !defined(EIGEN_NO_CUDA) + #define EIGEN_CUDA_ARCH __CUDA_ARCH__ +#endif + +#if defined(__CUDACC_VER_MAJOR__) && (__CUDACC_VER_MAJOR__ >= 9) +#define EIGEN_CUDACC_VER ((__CUDACC_VER_MAJOR__ * 10000) + (__CUDACC_VER_MINOR__ * 100)) +#elif defined(__CUDACC_VER__) +#define EIGEN_CUDACC_VER __CUDACC_VER__ +#else +#define EIGEN_CUDACC_VER 0 +#endif + +// Handle NVCC/CUDA/SYCL +#if defined(__CUDACC__) || defined(__SYCL_DEVICE_ONLY__) + // Do not try asserts on CUDA and SYCL! + #ifndef EIGEN_NO_DEBUG + #define EIGEN_NO_DEBUG + #endif + + #ifdef EIGEN_INTERNAL_DEBUGGING + #undef EIGEN_INTERNAL_DEBUGGING + #endif + + #ifdef EIGEN_EXCEPTIONS + #undef EIGEN_EXCEPTIONS + #endif + + // All functions callable from CUDA code must be qualified with __device__ + #ifdef __CUDACC__ + // Do not try to vectorize on CUDA and SYCL! + #ifndef EIGEN_DONT_VECTORIZE + #define EIGEN_DONT_VECTORIZE + #endif + + #define EIGEN_DEVICE_FUNC __host__ __device__ + // We need cuda_runtime.h to ensure that that EIGEN_USING_STD_MATH macro + // works properly on the device side + #include + #else + #define EIGEN_DEVICE_FUNC + #endif + +#else + #define EIGEN_DEVICE_FUNC + +#endif + +// When compiling CUDA device code with NVCC, pull in math functions from the +// global namespace. In host mode, and when device doee with clang, use the +// std versions. +#if defined(__CUDA_ARCH__) && defined(__NVCC__) + #define EIGEN_USING_STD_MATH(FUNC) using ::FUNC; +#else + #define EIGEN_USING_STD_MATH(FUNC) using std::FUNC; +#endif + +#if (defined(_CPPUNWIND) || defined(__EXCEPTIONS)) && !defined(__CUDA_ARCH__) && !defined(EIGEN_EXCEPTIONS) && !defined(EIGEN_USE_SYCL) + #define EIGEN_EXCEPTIONS +#endif + +#ifdef EIGEN_EXCEPTIONS + #include +#endif + +// then include this file where all our macros are defined. It's really important to do it first because +// it's where we do all the alignment settings (platform detection and honoring the user's will if he +// defined e.g. EIGEN_DONT_ALIGN) so it needs to be done before we do anything with vectorization. +#include "src/Core/util/Macros.h" + +// Disable the ipa-cp-clone optimization flag with MinGW 6.x or newer (enabled by default with -O3) +// See http://eigen.tuxfamily.org/bz/show_bug.cgi?id=556 for details. +#if EIGEN_COMP_MINGW && EIGEN_GNUC_AT_LEAST(4,6) + #pragma GCC optimize ("-fno-ipa-cp-clone") +#endif + +#include + +// this include file manages BLAS and MKL related macros +// and inclusion of their respective header files +#include "src/Core/util/MKL_support.h" + +// if alignment is disabled, then disable vectorization. Note: EIGEN_MAX_ALIGN_BYTES is the proper check, it takes into +// account both the user's will (EIGEN_MAX_ALIGN_BYTES,EIGEN_DONT_ALIGN) and our own platform checks +#if EIGEN_MAX_ALIGN_BYTES==0 + #ifndef EIGEN_DONT_VECTORIZE + #define EIGEN_DONT_VECTORIZE + #endif +#endif + +#if EIGEN_COMP_MSVC + #include // for _aligned_malloc -- need it regardless of whether vectorization is enabled + #if (EIGEN_COMP_MSVC >= 1500) // 2008 or later + // Remember that usage of defined() in a #define is undefined by the standard. + // a user reported that in 64-bit mode, MSVC doesn't care to define _M_IX86_FP. + #if (defined(_M_IX86_FP) && (_M_IX86_FP >= 2)) || EIGEN_ARCH_x86_64 + #define EIGEN_SSE2_ON_MSVC_2008_OR_LATER + #endif + #endif +#else + // Remember that usage of defined() in a #define is undefined by the standard + #if (defined __SSE2__) && ( (!EIGEN_COMP_GNUC) || EIGEN_COMP_ICC || EIGEN_GNUC_AT_LEAST(4,2) ) + #define EIGEN_SSE2_ON_NON_MSVC_BUT_NOT_OLD_GCC + #endif +#endif + +#ifndef EIGEN_DONT_VECTORIZE + + #if defined (EIGEN_SSE2_ON_NON_MSVC_BUT_NOT_OLD_GCC) || defined(EIGEN_SSE2_ON_MSVC_2008_OR_LATER) + + // Defines symbols for compile-time detection of which instructions are + // used. + // EIGEN_VECTORIZE_YY is defined if and only if the instruction set YY is used + #define EIGEN_VECTORIZE + #define EIGEN_VECTORIZE_SSE + #define EIGEN_VECTORIZE_SSE2 + + // Detect sse3/ssse3/sse4: + // gcc and icc defines __SSE3__, ... + // there is no way to know about this on msvc. You can define EIGEN_VECTORIZE_SSE* if you + // want to force the use of those instructions with msvc. + #ifdef __SSE3__ + #define EIGEN_VECTORIZE_SSE3 + #endif + #ifdef __SSSE3__ + #define EIGEN_VECTORIZE_SSSE3 + #endif + #ifdef __SSE4_1__ + #define EIGEN_VECTORIZE_SSE4_1 + #endif + #ifdef __SSE4_2__ + #define EIGEN_VECTORIZE_SSE4_2 + #endif + #ifdef __AVX__ + #define EIGEN_VECTORIZE_AVX + #define EIGEN_VECTORIZE_SSE3 + #define EIGEN_VECTORIZE_SSSE3 + #define EIGEN_VECTORIZE_SSE4_1 + #define EIGEN_VECTORIZE_SSE4_2 + #endif + #ifdef __AVX2__ + #define EIGEN_VECTORIZE_AVX2 + #endif + #ifdef __FMA__ + #define EIGEN_VECTORIZE_FMA + #endif + #if defined(__AVX512F__) && defined(EIGEN_ENABLE_AVX512) + #define EIGEN_VECTORIZE_AVX512 + #define EIGEN_VECTORIZE_AVX2 + #define EIGEN_VECTORIZE_AVX + #define EIGEN_VECTORIZE_FMA + #ifdef __AVX512DQ__ + #define EIGEN_VECTORIZE_AVX512DQ + #endif + #ifdef __AVX512ER__ + #define EIGEN_VECTORIZE_AVX512ER + #endif + #endif + + // include files + + // This extern "C" works around a MINGW-w64 compilation issue + // https://sourceforge.net/tracker/index.php?func=detail&aid=3018394&group_id=202880&atid=983354 + // In essence, intrin.h is included by windows.h and also declares intrinsics (just as emmintrin.h etc. below do). + // However, intrin.h uses an extern "C" declaration, and g++ thus complains of duplicate declarations + // with conflicting linkage. The linkage for intrinsics doesn't matter, but at that stage the compiler doesn't know; + // so, to avoid compile errors when windows.h is included after Eigen/Core, ensure intrinsics are extern "C" here too. + // notice that since these are C headers, the extern "C" is theoretically needed anyways. + extern "C" { + // In theory we should only include immintrin.h and not the other *mmintrin.h header files directly. + // Doing so triggers some issues with ICC. However old gcc versions seems to not have this file, thus: + #if EIGEN_COMP_ICC >= 1110 + #include + #else + #include + #include + #include + #ifdef EIGEN_VECTORIZE_SSE3 + #include + #endif + #ifdef EIGEN_VECTORIZE_SSSE3 + #include + #endif + #ifdef EIGEN_VECTORIZE_SSE4_1 + #include + #endif + #ifdef EIGEN_VECTORIZE_SSE4_2 + #include + #endif + #if defined(EIGEN_VECTORIZE_AVX) || defined(EIGEN_VECTORIZE_AVX512) + #include + #endif + #endif + } // end extern "C" + #elif defined __VSX__ + #define EIGEN_VECTORIZE + #define EIGEN_VECTORIZE_VSX + #include + // We need to #undef all these ugly tokens defined in + // => use __vector instead of vector + #undef bool + #undef vector + #undef pixel + #elif defined __ALTIVEC__ + #define EIGEN_VECTORIZE + #define EIGEN_VECTORIZE_ALTIVEC + #include + // We need to #undef all these ugly tokens defined in + // => use __vector instead of vector + #undef bool + #undef vector + #undef pixel + #elif (defined __ARM_NEON) || (defined __ARM_NEON__) + #define EIGEN_VECTORIZE + #define EIGEN_VECTORIZE_NEON + #include + #elif (defined __s390x__ && defined __VEC__) + #define EIGEN_VECTORIZE + #define EIGEN_VECTORIZE_ZVECTOR + #include + #endif +#endif + +#if defined(__F16C__) && !defined(EIGEN_COMP_CLANG) + // We can use the optimized fp16 to float and float to fp16 conversion routines + #define EIGEN_HAS_FP16_C +#endif + +#if defined __CUDACC__ + #define EIGEN_VECTORIZE_CUDA + #include + #if EIGEN_CUDACC_VER >= 70500 + #define EIGEN_HAS_CUDA_FP16 + #endif +#endif + +#if defined EIGEN_HAS_CUDA_FP16 + #include + #include +#endif + +#if (defined _OPENMP) && (!defined EIGEN_DONT_PARALLELIZE) + #define EIGEN_HAS_OPENMP +#endif + +#ifdef EIGEN_HAS_OPENMP +#include +#endif + +// MSVC for windows mobile does not have the errno.h file +#if !(EIGEN_COMP_MSVC && EIGEN_OS_WINCE) && !EIGEN_COMP_ARM +#define EIGEN_HAS_ERRNO +#endif + +#ifdef EIGEN_HAS_ERRNO +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // for CHAR_BIT +// for min/max: +#include + +// for std::is_nothrow_move_assignable +#ifdef EIGEN_INCLUDE_TYPE_TRAITS +#include +#endif + +// for outputting debug info +#ifdef EIGEN_DEBUG_ASSIGN +#include +#endif + +// required for __cpuid, needs to be included after cmath +#if EIGEN_COMP_MSVC && EIGEN_ARCH_i386_OR_x86_64 && !EIGEN_OS_WINCE + #include +#endif + +/** \brief Namespace containing all symbols from the %Eigen library. */ +namespace Eigen { + +inline static const char *SimdInstructionSetsInUse(void) { +#if defined(EIGEN_VECTORIZE_AVX512) + return "AVX512, FMA, AVX2, AVX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2"; +#elif defined(EIGEN_VECTORIZE_AVX) + return "AVX SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2"; +#elif defined(EIGEN_VECTORIZE_SSE4_2) + return "SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2"; +#elif defined(EIGEN_VECTORIZE_SSE4_1) + return "SSE, SSE2, SSE3, SSSE3, SSE4.1"; +#elif defined(EIGEN_VECTORIZE_SSSE3) + return "SSE, SSE2, SSE3, SSSE3"; +#elif defined(EIGEN_VECTORIZE_SSE3) + return "SSE, SSE2, SSE3"; +#elif defined(EIGEN_VECTORIZE_SSE2) + return "SSE, SSE2"; +#elif defined(EIGEN_VECTORIZE_ALTIVEC) + return "AltiVec"; +#elif defined(EIGEN_VECTORIZE_VSX) + return "VSX"; +#elif defined(EIGEN_VECTORIZE_NEON) + return "ARM NEON"; +#elif defined(EIGEN_VECTORIZE_ZVECTOR) + return "S390X ZVECTOR"; +#else + return "None"; +#endif +} + +} // end namespace Eigen + +#if defined EIGEN2_SUPPORT_STAGE40_FULL_EIGEN3_STRICTNESS || defined EIGEN2_SUPPORT_STAGE30_FULL_EIGEN3_API || defined EIGEN2_SUPPORT_STAGE20_RESOLVE_API_CONFLICTS || defined EIGEN2_SUPPORT_STAGE10_FULL_EIGEN2_API || defined EIGEN2_SUPPORT +// This will generate an error message: +#error Eigen2-support is only available up to version 3.2. Please go to "http://eigen.tuxfamily.org/index.php?title=Eigen2" for further information +#endif + +namespace Eigen { + +// we use size_t frequently and we'll never remember to prepend it with std:: everytime just to +// ensure QNX/QCC support +using std::size_t; +// gcc 4.6.0 wants std:: for ptrdiff_t +using std::ptrdiff_t; + +} + +/** \defgroup Core_Module Core module + * This is the main module of Eigen providing dense matrix and vector support + * (both fixed and dynamic size) with all the features corresponding to a BLAS library + * and much more... + * + * \code + * #include + * \endcode + */ + +#include "src/Core/util/Constants.h" +#include "src/Core/util/Meta.h" +#include "src/Core/util/ForwardDeclarations.h" +#include "src/Core/util/StaticAssert.h" +#include "src/Core/util/XprHelper.h" +#include "src/Core/util/Memory.h" + +#include "src/Core/NumTraits.h" +#include "src/Core/MathFunctions.h" +#include "src/Core/GenericPacketMath.h" +#include "src/Core/MathFunctionsImpl.h" +#include "src/Core/arch/Default/ConjHelper.h" + +#if defined EIGEN_VECTORIZE_AVX512 + #include "src/Core/arch/SSE/PacketMath.h" + #include "src/Core/arch/AVX/PacketMath.h" + #include "src/Core/arch/AVX512/PacketMath.h" + #include "src/Core/arch/AVX512/MathFunctions.h" +#elif defined EIGEN_VECTORIZE_AVX + // Use AVX for floats and doubles, SSE for integers + #include "src/Core/arch/SSE/PacketMath.h" + #include "src/Core/arch/SSE/Complex.h" + #include "src/Core/arch/SSE/MathFunctions.h" + #include "src/Core/arch/AVX/PacketMath.h" + #include "src/Core/arch/AVX/MathFunctions.h" + #include "src/Core/arch/AVX/Complex.h" + #include "src/Core/arch/AVX/TypeCasting.h" + #include "src/Core/arch/SSE/TypeCasting.h" +#elif defined EIGEN_VECTORIZE_SSE + #include "src/Core/arch/SSE/PacketMath.h" + #include "src/Core/arch/SSE/MathFunctions.h" + #include "src/Core/arch/SSE/Complex.h" + #include "src/Core/arch/SSE/TypeCasting.h" +#elif defined(EIGEN_VECTORIZE_ALTIVEC) || defined(EIGEN_VECTORIZE_VSX) + #include "src/Core/arch/AltiVec/PacketMath.h" + #include "src/Core/arch/AltiVec/MathFunctions.h" + #include "src/Core/arch/AltiVec/Complex.h" +#elif defined EIGEN_VECTORIZE_NEON + #include "src/Core/arch/NEON/PacketMath.h" + #include "src/Core/arch/NEON/MathFunctions.h" + #include "src/Core/arch/NEON/Complex.h" +#elif defined EIGEN_VECTORIZE_ZVECTOR + #include "src/Core/arch/ZVector/PacketMath.h" + #include "src/Core/arch/ZVector/MathFunctions.h" + #include "src/Core/arch/ZVector/Complex.h" +#endif + +// Half float support +#include "src/Core/arch/CUDA/Half.h" +#include "src/Core/arch/CUDA/PacketMathHalf.h" +#include "src/Core/arch/CUDA/TypeCasting.h" + +#if defined EIGEN_VECTORIZE_CUDA + #include "src/Core/arch/CUDA/PacketMath.h" + #include "src/Core/arch/CUDA/MathFunctions.h" +#endif + +#include "src/Core/arch/Default/Settings.h" + +#include "src/Core/functors/TernaryFunctors.h" +#include "src/Core/functors/BinaryFunctors.h" +#include "src/Core/functors/UnaryFunctors.h" +#include "src/Core/functors/NullaryFunctors.h" +#include "src/Core/functors/StlFunctors.h" +#include "src/Core/functors/AssignmentFunctors.h" + +// Specialized functors to enable the processing of complex numbers +// on CUDA devices +#include "src/Core/arch/CUDA/Complex.h" + +#include "src/Core/IO.h" +#include "src/Core/DenseCoeffsBase.h" +#include "src/Core/DenseBase.h" +#include "src/Core/MatrixBase.h" +#include "src/Core/EigenBase.h" + +#include "src/Core/Product.h" +#include "src/Core/CoreEvaluators.h" +#include "src/Core/AssignEvaluator.h" + +#ifndef EIGEN_PARSED_BY_DOXYGEN // work around Doxygen bug triggered by Assign.h r814874 + // at least confirmed with Doxygen 1.5.5 and 1.5.6 + #include "src/Core/Assign.h" +#endif + +#include "src/Core/ArrayBase.h" +#include "src/Core/util/BlasUtil.h" +#include "src/Core/DenseStorage.h" +#include "src/Core/NestByValue.h" + +// #include "src/Core/ForceAlignedAccess.h" + +#include "src/Core/ReturnByValue.h" +#include "src/Core/NoAlias.h" +#include "src/Core/PlainObjectBase.h" +#include "src/Core/Matrix.h" +#include "src/Core/Array.h" +#include "src/Core/CwiseTernaryOp.h" +#include "src/Core/CwiseBinaryOp.h" +#include "src/Core/CwiseUnaryOp.h" +#include "src/Core/CwiseNullaryOp.h" +#include "src/Core/CwiseUnaryView.h" +#include "src/Core/SelfCwiseBinaryOp.h" +#include "src/Core/Dot.h" +#include "src/Core/StableNorm.h" +#include "src/Core/Stride.h" +#include "src/Core/MapBase.h" +#include "src/Core/Map.h" +#include "src/Core/Ref.h" +#include "src/Core/Block.h" +#include "src/Core/VectorBlock.h" +#include "src/Core/Transpose.h" +#include "src/Core/DiagonalMatrix.h" +#include "src/Core/Diagonal.h" +#include "src/Core/DiagonalProduct.h" +#include "src/Core/Redux.h" +#include "src/Core/Visitor.h" +#include "src/Core/Fuzzy.h" +#include "src/Core/Swap.h" +#include "src/Core/CommaInitializer.h" +#include "src/Core/GeneralProduct.h" +#include "src/Core/Solve.h" +#include "src/Core/Inverse.h" +#include "src/Core/SolverBase.h" +#include "src/Core/PermutationMatrix.h" +#include "src/Core/Transpositions.h" +#include "src/Core/TriangularMatrix.h" +#include "src/Core/SelfAdjointView.h" +#include "src/Core/products/GeneralBlockPanelKernel.h" +#include "src/Core/products/Parallelizer.h" +#include "src/Core/ProductEvaluators.h" +#include "src/Core/products/GeneralMatrixVector.h" +#include "src/Core/products/GeneralMatrixMatrix.h" +#include "src/Core/SolveTriangular.h" +#include "src/Core/products/GeneralMatrixMatrixTriangular.h" +#include "src/Core/products/SelfadjointMatrixVector.h" +#include "src/Core/products/SelfadjointMatrixMatrix.h" +#include "src/Core/products/SelfadjointProduct.h" +#include "src/Core/products/SelfadjointRank2Update.h" +#include "src/Core/products/TriangularMatrixVector.h" +#include "src/Core/products/TriangularMatrixMatrix.h" +#include "src/Core/products/TriangularSolverMatrix.h" +#include "src/Core/products/TriangularSolverVector.h" +#include "src/Core/BandMatrix.h" +#include "src/Core/CoreIterators.h" +#include "src/Core/ConditionEstimator.h" + +#include "src/Core/BooleanRedux.h" +#include "src/Core/Select.h" +#include "src/Core/VectorwiseOp.h" +#include "src/Core/Random.h" +#include "src/Core/Replicate.h" +#include "src/Core/Reverse.h" +#include "src/Core/ArrayWrapper.h" + +#ifdef EIGEN_USE_BLAS +#include "src/Core/products/GeneralMatrixMatrix_BLAS.h" +#include "src/Core/products/GeneralMatrixVector_BLAS.h" +#include "src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h" +#include "src/Core/products/SelfadjointMatrixMatrix_BLAS.h" +#include "src/Core/products/SelfadjointMatrixVector_BLAS.h" +#include "src/Core/products/TriangularMatrixMatrix_BLAS.h" +#include "src/Core/products/TriangularMatrixVector_BLAS.h" +#include "src/Core/products/TriangularSolverMatrix_BLAS.h" +#endif // EIGEN_USE_BLAS + +#ifdef EIGEN_USE_MKL_VML +#include "src/Core/Assign_MKL.h" +#endif + +#include "src/Core/GlobalFunctions.h" + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_CORE_H diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Dense b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Dense new file mode 100644 index 000000000..5768910bd --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Dense @@ -0,0 +1,7 @@ +#include "Core" +#include "LU" +#include "Cholesky" +#include "QR" +#include "SVD" +#include "Geometry" +#include "Eigenvalues" diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Eigen b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Eigen new file mode 100644 index 000000000..654c8dc63 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Eigen @@ -0,0 +1,2 @@ +#include "Dense" +#include "Sparse" diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Eigenvalues b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Eigenvalues new file mode 100644 index 000000000..f3f661b07 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Eigenvalues @@ -0,0 +1,61 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_EIGENVALUES_MODULE_H +#define EIGEN_EIGENVALUES_MODULE_H + +#include "Core" + +#include "src/Core/util/DisableStupidWarnings.h" + +#include "Cholesky" +#include "Jacobi" +#include "Householder" +#include "LU" +#include "Geometry" + +/** \defgroup Eigenvalues_Module Eigenvalues module + * + * + * + * This module mainly provides various eigenvalue solvers. + * This module also provides some MatrixBase methods, including: + * - MatrixBase::eigenvalues(), + * - MatrixBase::operatorNorm() + * + * \code + * #include + * \endcode + */ + +#include "src/misc/RealSvd2x2.h" +#include "src/Eigenvalues/Tridiagonalization.h" +#include "src/Eigenvalues/RealSchur.h" +#include "src/Eigenvalues/EigenSolver.h" +#include "src/Eigenvalues/SelfAdjointEigenSolver.h" +#include "src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h" +#include "src/Eigenvalues/HessenbergDecomposition.h" +#include "src/Eigenvalues/ComplexSchur.h" +#include "src/Eigenvalues/ComplexEigenSolver.h" +#include "src/Eigenvalues/RealQZ.h" +#include "src/Eigenvalues/GeneralizedEigenSolver.h" +#include "src/Eigenvalues/MatrixBaseEigenvalues.h" +#ifdef EIGEN_USE_LAPACKE +#ifdef EIGEN_USE_MKL +#include "mkl_lapacke.h" +#else +#include "src/misc/lapacke.h" +#endif +#include "src/Eigenvalues/RealSchur_LAPACKE.h" +#include "src/Eigenvalues/ComplexSchur_LAPACKE.h" +#include "src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h" +#endif + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_EIGENVALUES_MODULE_H +/* vim: set filetype=cpp et sw=2 ts=2 ai: */ diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Geometry b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Geometry new file mode 100644 index 000000000..716d52952 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Geometry @@ -0,0 +1,62 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_GEOMETRY_MODULE_H +#define EIGEN_GEOMETRY_MODULE_H + +#include "Core" + +#include "src/Core/util/DisableStupidWarnings.h" + +#include "SVD" +#include "LU" +#include + +/** \defgroup Geometry_Module Geometry module + * + * This module provides support for: + * - fixed-size homogeneous transformations + * - translation, scaling, 2D and 3D rotations + * - \link Quaternion quaternions \endlink + * - cross products (\ref MatrixBase::cross, \ref MatrixBase::cross3) + * - orthognal vector generation (\ref MatrixBase::unitOrthogonal) + * - some linear components: \link ParametrizedLine parametrized-lines \endlink and \link Hyperplane hyperplanes \endlink + * - \link AlignedBox axis aligned bounding boxes \endlink + * - \link umeyama least-square transformation fitting \endlink + * + * \code + * #include + * \endcode + */ + +#include "src/Geometry/OrthoMethods.h" +#include "src/Geometry/EulerAngles.h" + +#include "src/Geometry/Homogeneous.h" +#include "src/Geometry/RotationBase.h" +#include "src/Geometry/Rotation2D.h" +#include "src/Geometry/Quaternion.h" +#include "src/Geometry/AngleAxis.h" +#include "src/Geometry/Transform.h" +#include "src/Geometry/Translation.h" +#include "src/Geometry/Scaling.h" +#include "src/Geometry/Hyperplane.h" +#include "src/Geometry/ParametrizedLine.h" +#include "src/Geometry/AlignedBox.h" +#include "src/Geometry/Umeyama.h" + +// Use the SSE optimized version whenever possible. At the moment the +// SSE version doesn't compile when AVX is enabled +#if defined EIGEN_VECTORIZE_SSE && !defined EIGEN_VECTORIZE_AVX +#include "src/Geometry/arch/Geometry_SSE.h" +#endif + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_GEOMETRY_MODULE_H +/* vim: set filetype=cpp et sw=2 ts=2 ai: */ + diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Householder b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Householder new file mode 100644 index 000000000..89cd81b1a --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Householder @@ -0,0 +1,30 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_HOUSEHOLDER_MODULE_H +#define EIGEN_HOUSEHOLDER_MODULE_H + +#include "Core" + +#include "src/Core/util/DisableStupidWarnings.h" + +/** \defgroup Householder_Module Householder module + * This module provides Householder transformations. + * + * \code + * #include + * \endcode + */ + +#include "src/Householder/Householder.h" +#include "src/Householder/HouseholderSequence.h" +#include "src/Householder/BlockHouseholder.h" + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_HOUSEHOLDER_MODULE_H +/* vim: set filetype=cpp et sw=2 ts=2 ai: */ diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/IterativeLinearSolvers b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/IterativeLinearSolvers new file mode 100644 index 000000000..957d5750b --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/IterativeLinearSolvers @@ -0,0 +1,48 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_ITERATIVELINEARSOLVERS_MODULE_H +#define EIGEN_ITERATIVELINEARSOLVERS_MODULE_H + +#include "SparseCore" +#include "OrderingMethods" + +#include "src/Core/util/DisableStupidWarnings.h" + +/** + * \defgroup IterativeLinearSolvers_Module IterativeLinearSolvers module + * + * This module currently provides iterative methods to solve problems of the form \c A \c x = \c b, where \c A is a squared matrix, usually very large and sparse. + * Those solvers are accessible via the following classes: + * - ConjugateGradient for selfadjoint (hermitian) matrices, + * - LeastSquaresConjugateGradient for rectangular least-square problems, + * - BiCGSTAB for general square matrices. + * + * These iterative solvers are associated with some preconditioners: + * - IdentityPreconditioner - not really useful + * - DiagonalPreconditioner - also called Jacobi preconditioner, work very well on diagonal dominant matrices. + * - IncompleteLUT - incomplete LU factorization with dual thresholding + * + * Such problems can also be solved using the direct sparse decomposition modules: SparseCholesky, CholmodSupport, UmfPackSupport, SuperLUSupport. + * + \code + #include + \endcode + */ + +#include "src/IterativeLinearSolvers/SolveWithGuess.h" +#include "src/IterativeLinearSolvers/IterativeSolverBase.h" +#include "src/IterativeLinearSolvers/BasicPreconditioners.h" +#include "src/IterativeLinearSolvers/ConjugateGradient.h" +#include "src/IterativeLinearSolvers/LeastSquareConjugateGradient.h" +#include "src/IterativeLinearSolvers/BiCGSTAB.h" +#include "src/IterativeLinearSolvers/IncompleteLUT.h" +#include "src/IterativeLinearSolvers/IncompleteCholesky.h" + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_ITERATIVELINEARSOLVERS_MODULE_H diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Jacobi b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Jacobi new file mode 100644 index 000000000..17c1d785a --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Jacobi @@ -0,0 +1,33 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_JACOBI_MODULE_H +#define EIGEN_JACOBI_MODULE_H + +#include "Core" + +#include "src/Core/util/DisableStupidWarnings.h" + +/** \defgroup Jacobi_Module Jacobi module + * This module provides Jacobi and Givens rotations. + * + * \code + * #include + * \endcode + * + * In addition to listed classes, it defines the two following MatrixBase methods to apply a Jacobi or Givens rotation: + * - MatrixBase::applyOnTheLeft() + * - MatrixBase::applyOnTheRight(). + */ + +#include "src/Jacobi/Jacobi.h" + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_JACOBI_MODULE_H +/* vim: set filetype=cpp et sw=2 ts=2 ai: */ + diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/LU b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/LU new file mode 100644 index 000000000..6418a86e1 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/LU @@ -0,0 +1,50 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_LU_MODULE_H +#define EIGEN_LU_MODULE_H + +#include "Core" + +#include "src/Core/util/DisableStupidWarnings.h" + +/** \defgroup LU_Module LU module + * This module includes %LU decomposition and related notions such as matrix inversion and determinant. + * This module defines the following MatrixBase methods: + * - MatrixBase::inverse() + * - MatrixBase::determinant() + * + * \code + * #include + * \endcode + */ + +#include "src/misc/Kernel.h" +#include "src/misc/Image.h" +#include "src/LU/FullPivLU.h" +#include "src/LU/PartialPivLU.h" +#ifdef EIGEN_USE_LAPACKE +#ifdef EIGEN_USE_MKL +#include "mkl_lapacke.h" +#else +#include "src/misc/lapacke.h" +#endif +#include "src/LU/PartialPivLU_LAPACKE.h" +#endif +#include "src/LU/Determinant.h" +#include "src/LU/InverseImpl.h" + +// Use the SSE optimized version whenever possible. At the moment the +// SSE version doesn't compile when AVX is enabled +#if defined EIGEN_VECTORIZE_SSE && !defined EIGEN_VECTORIZE_AVX + #include "src/LU/arch/Inverse_SSE.h" +#endif + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_LU_MODULE_H +/* vim: set filetype=cpp et sw=2 ts=2 ai: */ diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/MetisSupport b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/MetisSupport new file mode 100644 index 000000000..85c41bf34 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/MetisSupport @@ -0,0 +1,35 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_METISSUPPORT_MODULE_H +#define EIGEN_METISSUPPORT_MODULE_H + +#include "SparseCore" + +#include "src/Core/util/DisableStupidWarnings.h" + +extern "C" { +#include +} + + +/** \ingroup Support_modules + * \defgroup MetisSupport_Module MetisSupport module + * + * \code + * #include + * \endcode + * This module defines an interface to the METIS reordering package (http://glaros.dtc.umn.edu/gkhome/views/metis). + * It can be used just as any other built-in method as explained in \link OrderingMethods_Module here. \endlink + */ + + +#include "src/MetisSupport/MetisSupport.h" + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_METISSUPPORT_MODULE_H diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/OrderingMethods b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/OrderingMethods new file mode 100644 index 000000000..d8ea36193 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/OrderingMethods @@ -0,0 +1,73 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_ORDERINGMETHODS_MODULE_H +#define EIGEN_ORDERINGMETHODS_MODULE_H + +#include "SparseCore" + +#include "src/Core/util/DisableStupidWarnings.h" + +/** + * \defgroup OrderingMethods_Module OrderingMethods module + * + * This module is currently for internal use only + * + * It defines various built-in and external ordering methods for sparse matrices. + * They are typically used to reduce the number of elements during + * the sparse matrix decomposition (LLT, LU, QR). + * Precisely, in a preprocessing step, a permutation matrix P is computed using + * those ordering methods and applied to the columns of the matrix. + * Using for instance the sparse Cholesky decomposition, it is expected that + * the nonzeros elements in LLT(A*P) will be much smaller than that in LLT(A). + * + * + * Usage : + * \code + * #include + * \endcode + * + * A simple usage is as a template parameter in the sparse decomposition classes : + * + * \code + * SparseLU > solver; + * \endcode + * + * \code + * SparseQR > solver; + * \endcode + * + * It is possible as well to call directly a particular ordering method for your own purpose, + * \code + * AMDOrdering ordering; + * PermutationMatrix perm; + * SparseMatrix A; + * //Fill the matrix ... + * + * ordering(A, perm); // Call AMD + * \endcode + * + * \note Some of these methods (like AMD or METIS), need the sparsity pattern + * of the input matrix to be symmetric. When the matrix is structurally unsymmetric, + * Eigen computes internally the pattern of \f$A^T*A\f$ before calling the method. + * If your matrix is already symmetric (at leat in structure), you can avoid that + * by calling the method with a SelfAdjointView type. + * + * \code + * // Call the ordering on the pattern of the lower triangular matrix A + * ordering(A.selfadjointView(), perm); + * \endcode + */ + +#ifndef EIGEN_MPL2_ONLY +#include "src/OrderingMethods/Amd.h" +#endif + +#include "src/OrderingMethods/Ordering.h" +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_ORDERINGMETHODS_MODULE_H diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/PaStiXSupport b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/PaStiXSupport new file mode 100644 index 000000000..de3a63b4d --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/PaStiXSupport @@ -0,0 +1,48 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_PASTIXSUPPORT_MODULE_H +#define EIGEN_PASTIXSUPPORT_MODULE_H + +#include "SparseCore" + +#include "src/Core/util/DisableStupidWarnings.h" + +extern "C" { +#include +#include +} + +#ifdef complex +#undef complex +#endif + +/** \ingroup Support_modules + * \defgroup PaStiXSupport_Module PaStiXSupport module + * + * This module provides an interface to the PaSTiX library. + * PaSTiX is a general \b supernodal, \b parallel and \b opensource sparse solver. + * It provides the two following main factorization classes: + * - class PastixLLT : a supernodal, parallel LLt Cholesky factorization. + * - class PastixLDLT: a supernodal, parallel LDLt Cholesky factorization. + * - class PastixLU : a supernodal, parallel LU factorization (optimized for a symmetric pattern). + * + * \code + * #include + * \endcode + * + * In order to use this module, the PaSTiX headers must be accessible from the include paths, and your binary must be linked to the PaSTiX library and its dependencies. + * The dependencies depend on how PaSTiX has been compiled. + * For a cmake based project, you can use our FindPaSTiX.cmake module to help you in this task. + * + */ + +#include "src/PaStiXSupport/PaStiXSupport.h" + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_PASTIXSUPPORT_MODULE_H diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/PardisoSupport b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/PardisoSupport new file mode 100644 index 000000000..340edf51f --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/PardisoSupport @@ -0,0 +1,35 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_PARDISOSUPPORT_MODULE_H +#define EIGEN_PARDISOSUPPORT_MODULE_H + +#include "SparseCore" + +#include "src/Core/util/DisableStupidWarnings.h" + +#include + +/** \ingroup Support_modules + * \defgroup PardisoSupport_Module PardisoSupport module + * + * This module brings support for the Intel(R) MKL PARDISO direct sparse solvers. + * + * \code + * #include + * \endcode + * + * In order to use this module, the MKL headers must be accessible from the include paths, and your binary must be linked to the MKL library and its dependencies. + * See this \ref TopicUsingIntelMKL "page" for more information on MKL-Eigen integration. + * + */ + +#include "src/PardisoSupport/PardisoSupport.h" + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_PARDISOSUPPORT_MODULE_H diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/QR b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/QR new file mode 100644 index 000000000..c7e914469 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/QR @@ -0,0 +1,51 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_QR_MODULE_H +#define EIGEN_QR_MODULE_H + +#include "Core" + +#include "src/Core/util/DisableStupidWarnings.h" + +#include "Cholesky" +#include "Jacobi" +#include "Householder" + +/** \defgroup QR_Module QR module + * + * + * + * This module provides various QR decompositions + * This module also provides some MatrixBase methods, including: + * - MatrixBase::householderQr() + * - MatrixBase::colPivHouseholderQr() + * - MatrixBase::fullPivHouseholderQr() + * + * \code + * #include + * \endcode + */ + +#include "src/QR/HouseholderQR.h" +#include "src/QR/FullPivHouseholderQR.h" +#include "src/QR/ColPivHouseholderQR.h" +#include "src/QR/CompleteOrthogonalDecomposition.h" +#ifdef EIGEN_USE_LAPACKE +#ifdef EIGEN_USE_MKL +#include "mkl_lapacke.h" +#else +#include "src/misc/lapacke.h" +#endif +#include "src/QR/HouseholderQR_LAPACKE.h" +#include "src/QR/ColPivHouseholderQR_LAPACKE.h" +#endif + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_QR_MODULE_H +/* vim: set filetype=cpp et sw=2 ts=2 ai: */ diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/QtAlignedMalloc b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/QtAlignedMalloc new file mode 100644 index 000000000..4f07df02a --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/QtAlignedMalloc @@ -0,0 +1,40 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_QTMALLOC_MODULE_H +#define EIGEN_QTMALLOC_MODULE_H + +#include "Core" + +#if (!EIGEN_MALLOC_ALREADY_ALIGNED) + +#include "src/Core/util/DisableStupidWarnings.h" + +void *qMalloc(std::size_t size) +{ + return Eigen::internal::aligned_malloc(size); +} + +void qFree(void *ptr) +{ + Eigen::internal::aligned_free(ptr); +} + +void *qRealloc(void *ptr, std::size_t size) +{ + void* newPtr = Eigen::internal::aligned_malloc(size); + std::memcpy(newPtr, ptr, size); + Eigen::internal::aligned_free(ptr); + return newPtr; +} + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif + +#endif // EIGEN_QTMALLOC_MODULE_H +/* vim: set filetype=cpp et sw=2 ts=2 ai: */ diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SPQRSupport b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SPQRSupport new file mode 100644 index 000000000..f70390c17 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SPQRSupport @@ -0,0 +1,34 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_SPQRSUPPORT_MODULE_H +#define EIGEN_SPQRSUPPORT_MODULE_H + +#include "SparseCore" + +#include "src/Core/util/DisableStupidWarnings.h" + +#include "SuiteSparseQR.hpp" + +/** \ingroup Support_modules + * \defgroup SPQRSupport_Module SuiteSparseQR module + * + * This module provides an interface to the SPQR library, which is part of the suitesparse package. + * + * \code + * #include + * \endcode + * + * In order to use this module, the SPQR headers must be accessible from the include paths, and your binary must be linked to the SPQR library and its dependencies (Cholmod, AMD, COLAMD,...). + * For a cmake based project, you can use our FindSPQR.cmake and FindCholmod.Cmake modules + * + */ + +#include "src/CholmodSupport/CholmodSupport.h" +#include "src/SPQRSupport/SuiteSparseQRSupport.h" + +#endif diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SVD b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SVD new file mode 100644 index 000000000..5d0e75f7f --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SVD @@ -0,0 +1,51 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_SVD_MODULE_H +#define EIGEN_SVD_MODULE_H + +#include "QR" +#include "Householder" +#include "Jacobi" + +#include "src/Core/util/DisableStupidWarnings.h" + +/** \defgroup SVD_Module SVD module + * + * + * + * This module provides SVD decomposition for matrices (both real and complex). + * Two decomposition algorithms are provided: + * - JacobiSVD implementing two-sided Jacobi iterations is numerically very accurate, fast for small matrices, but very slow for larger ones. + * - BDCSVD implementing a recursive divide & conquer strategy on top of an upper-bidiagonalization which remains fast for large problems. + * These decompositions are accessible via the respective classes and following MatrixBase methods: + * - MatrixBase::jacobiSvd() + * - MatrixBase::bdcSvd() + * + * \code + * #include + * \endcode + */ + +#include "src/misc/RealSvd2x2.h" +#include "src/SVD/UpperBidiagonalization.h" +#include "src/SVD/SVDBase.h" +#include "src/SVD/JacobiSVD.h" +#include "src/SVD/BDCSVD.h" +#if defined(EIGEN_USE_LAPACKE) && !defined(EIGEN_USE_LAPACKE_STRICT) +#ifdef EIGEN_USE_MKL +#include "mkl_lapacke.h" +#else +#include "src/misc/lapacke.h" +#endif +#include "src/SVD/JacobiSVD_LAPACKE.h" +#endif + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_SVD_MODULE_H +/* vim: set filetype=cpp et sw=2 ts=2 ai: */ diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Sparse b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Sparse new file mode 100644 index 000000000..136e681a1 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/Sparse @@ -0,0 +1,36 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_SPARSE_MODULE_H +#define EIGEN_SPARSE_MODULE_H + +/** \defgroup Sparse_Module Sparse meta-module + * + * Meta-module including all related modules: + * - \ref SparseCore_Module + * - \ref OrderingMethods_Module + * - \ref SparseCholesky_Module + * - \ref SparseLU_Module + * - \ref SparseQR_Module + * - \ref IterativeLinearSolvers_Module + * + \code + #include + \endcode + */ + +#include "SparseCore" +#include "OrderingMethods" +#ifndef EIGEN_MPL2_ONLY +#include "SparseCholesky" +#endif +#include "SparseLU" +#include "SparseQR" +#include "IterativeLinearSolvers" + +#endif // EIGEN_SPARSE_MODULE_H + diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SparseCholesky b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SparseCholesky new file mode 100644 index 000000000..b6a320c40 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SparseCholesky @@ -0,0 +1,45 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// Copyright (C) 2008-2013 Gael Guennebaud +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_SPARSECHOLESKY_MODULE_H +#define EIGEN_SPARSECHOLESKY_MODULE_H + +#include "SparseCore" +#include "OrderingMethods" + +#include "src/Core/util/DisableStupidWarnings.h" + +/** + * \defgroup SparseCholesky_Module SparseCholesky module + * + * This module currently provides two variants of the direct sparse Cholesky decomposition for selfadjoint (hermitian) matrices. + * Those decompositions are accessible via the following classes: + * - SimplicialLLt, + * - SimplicialLDLt + * + * Such problems can also be solved using the ConjugateGradient solver from the IterativeLinearSolvers module. + * + * \code + * #include + * \endcode + */ + +#ifdef EIGEN_MPL2_ONLY +#error The SparseCholesky module has nothing to offer in MPL2 only mode +#endif + +#include "src/SparseCholesky/SimplicialCholesky.h" + +#ifndef EIGEN_MPL2_ONLY +#include "src/SparseCholesky/SimplicialCholesky_impl.h" +#endif + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_SPARSECHOLESKY_MODULE_H diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SparseCore b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SparseCore new file mode 100644 index 000000000..76966c4c4 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SparseCore @@ -0,0 +1,69 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_SPARSECORE_MODULE_H +#define EIGEN_SPARSECORE_MODULE_H + +#include "Core" + +#include "src/Core/util/DisableStupidWarnings.h" + +#include +#include +#include +#include +#include + +/** + * \defgroup SparseCore_Module SparseCore module + * + * This module provides a sparse matrix representation, and basic associated matrix manipulations + * and operations. + * + * See the \ref TutorialSparse "Sparse tutorial" + * + * \code + * #include + * \endcode + * + * This module depends on: Core. + */ + +#include "src/SparseCore/SparseUtil.h" +#include "src/SparseCore/SparseMatrixBase.h" +#include "src/SparseCore/SparseAssign.h" +#include "src/SparseCore/CompressedStorage.h" +#include "src/SparseCore/AmbiVector.h" +#include "src/SparseCore/SparseCompressedBase.h" +#include "src/SparseCore/SparseMatrix.h" +#include "src/SparseCore/SparseMap.h" +#include "src/SparseCore/MappedSparseMatrix.h" +#include "src/SparseCore/SparseVector.h" +#include "src/SparseCore/SparseRef.h" +#include "src/SparseCore/SparseCwiseUnaryOp.h" +#include "src/SparseCore/SparseCwiseBinaryOp.h" +#include "src/SparseCore/SparseTranspose.h" +#include "src/SparseCore/SparseBlock.h" +#include "src/SparseCore/SparseDot.h" +#include "src/SparseCore/SparseRedux.h" +#include "src/SparseCore/SparseView.h" +#include "src/SparseCore/SparseDiagonalProduct.h" +#include "src/SparseCore/ConservativeSparseSparseProduct.h" +#include "src/SparseCore/SparseSparseProductWithPruning.h" +#include "src/SparseCore/SparseProduct.h" +#include "src/SparseCore/SparseDenseProduct.h" +#include "src/SparseCore/SparseSelfAdjointView.h" +#include "src/SparseCore/SparseTriangularView.h" +#include "src/SparseCore/TriangularSolver.h" +#include "src/SparseCore/SparsePermutation.h" +#include "src/SparseCore/SparseFuzzy.h" +#include "src/SparseCore/SparseSolverBase.h" + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_SPARSECORE_MODULE_H + diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SparseLU b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SparseLU new file mode 100644 index 000000000..38b38b531 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SparseLU @@ -0,0 +1,46 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// Copyright (C) 2012 Désiré Nuentsa-Wakam +// Copyright (C) 2012 Gael Guennebaud +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_SPARSELU_MODULE_H +#define EIGEN_SPARSELU_MODULE_H + +#include "SparseCore" + +/** + * \defgroup SparseLU_Module SparseLU module + * This module defines a supernodal factorization of general sparse matrices. + * The code is fully optimized for supernode-panel updates with specialized kernels. + * Please, see the documentation of the SparseLU class for more details. + */ + +// Ordering interface +#include "OrderingMethods" + +#include "src/SparseLU/SparseLU_gemm_kernel.h" + +#include "src/SparseLU/SparseLU_Structs.h" +#include "src/SparseLU/SparseLU_SupernodalMatrix.h" +#include "src/SparseLU/SparseLUImpl.h" +#include "src/SparseCore/SparseColEtree.h" +#include "src/SparseLU/SparseLU_Memory.h" +#include "src/SparseLU/SparseLU_heap_relax_snode.h" +#include "src/SparseLU/SparseLU_relax_snode.h" +#include "src/SparseLU/SparseLU_pivotL.h" +#include "src/SparseLU/SparseLU_panel_dfs.h" +#include "src/SparseLU/SparseLU_kernel_bmod.h" +#include "src/SparseLU/SparseLU_panel_bmod.h" +#include "src/SparseLU/SparseLU_column_dfs.h" +#include "src/SparseLU/SparseLU_column_bmod.h" +#include "src/SparseLU/SparseLU_copy_to_ucol.h" +#include "src/SparseLU/SparseLU_pruneL.h" +#include "src/SparseLU/SparseLU_Utils.h" +#include "src/SparseLU/SparseLU.h" + +#endif // EIGEN_SPARSELU_MODULE_H diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SparseQR b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SparseQR new file mode 100644 index 000000000..a6f3b7f7d --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SparseQR @@ -0,0 +1,37 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_SPARSEQR_MODULE_H +#define EIGEN_SPARSEQR_MODULE_H + +#include "SparseCore" +#include "OrderingMethods" +#include "src/Core/util/DisableStupidWarnings.h" + +/** \defgroup SparseQR_Module SparseQR module + * \brief Provides QR decomposition for sparse matrices + * + * This module provides a simplicial version of the left-looking Sparse QR decomposition. + * The columns of the input matrix should be reordered to limit the fill-in during the + * decomposition. Built-in methods (COLAMD, AMD) or external methods (METIS) can be used to this end. + * See the \link OrderingMethods_Module OrderingMethods\endlink module for the list + * of built-in and external ordering methods. + * + * \code + * #include + * \endcode + * + * + */ + +#include "OrderingMethods" +#include "src/SparseCore/SparseColEtree.h" +#include "src/SparseQR/SparseQR.h" + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/StdDeque b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/StdDeque new file mode 100644 index 000000000..bc68397be --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/StdDeque @@ -0,0 +1,27 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// Copyright (C) 2009 Gael Guennebaud +// Copyright (C) 2009 Hauke Heibel +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_STDDEQUE_MODULE_H +#define EIGEN_STDDEQUE_MODULE_H + +#include "Core" +#include + +#if EIGEN_COMP_MSVC && EIGEN_OS_WIN64 && (EIGEN_MAX_STATIC_ALIGN_BYTES<=16) /* MSVC auto aligns up to 16 bytes in 64 bit builds */ + +#define EIGEN_DEFINE_STL_DEQUE_SPECIALIZATION(...) + +#else + +#include "src/StlSupport/StdDeque.h" + +#endif + +#endif // EIGEN_STDDEQUE_MODULE_H diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/StdList b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/StdList new file mode 100644 index 000000000..4c6262c08 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/StdList @@ -0,0 +1,26 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// Copyright (C) 2009 Hauke Heibel +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_STDLIST_MODULE_H +#define EIGEN_STDLIST_MODULE_H + +#include "Core" +#include + +#if EIGEN_COMP_MSVC && EIGEN_OS_WIN64 && (EIGEN_MAX_STATIC_ALIGN_BYTES<=16) /* MSVC auto aligns up to 16 bytes in 64 bit builds */ + +#define EIGEN_DEFINE_STL_LIST_SPECIALIZATION(...) + +#else + +#include "src/StlSupport/StdList.h" + +#endif + +#endif // EIGEN_STDLIST_MODULE_H diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/StdVector b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/StdVector new file mode 100644 index 000000000..0c4697ad5 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/StdVector @@ -0,0 +1,27 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// Copyright (C) 2009 Gael Guennebaud +// Copyright (C) 2009 Hauke Heibel +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_STDVECTOR_MODULE_H +#define EIGEN_STDVECTOR_MODULE_H + +#include "Core" +#include + +#if EIGEN_COMP_MSVC && EIGEN_OS_WIN64 && (EIGEN_MAX_STATIC_ALIGN_BYTES<=16) /* MSVC auto aligns up to 16 bytes in 64 bit builds */ + +#define EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(...) + +#else + +#include "src/StlSupport/StdVector.h" + +#endif + +#endif // EIGEN_STDVECTOR_MODULE_H diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SuperLUSupport b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SuperLUSupport new file mode 100644 index 000000000..59312a82d --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/SuperLUSupport @@ -0,0 +1,64 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_SUPERLUSUPPORT_MODULE_H +#define EIGEN_SUPERLUSUPPORT_MODULE_H + +#include "SparseCore" + +#include "src/Core/util/DisableStupidWarnings.h" + +#ifdef EMPTY +#define EIGEN_EMPTY_WAS_ALREADY_DEFINED +#endif + +typedef int int_t; +#include +#include +#include + +// slu_util.h defines a preprocessor token named EMPTY which is really polluting, +// so we remove it in favor of a SUPERLU_EMPTY token. +// If EMPTY was already defined then we don't undef it. + +#if defined(EIGEN_EMPTY_WAS_ALREADY_DEFINED) +# undef EIGEN_EMPTY_WAS_ALREADY_DEFINED +#elif defined(EMPTY) +# undef EMPTY +#endif + +#define SUPERLU_EMPTY (-1) + +namespace Eigen { struct SluMatrix; } + +/** \ingroup Support_modules + * \defgroup SuperLUSupport_Module SuperLUSupport module + * + * This module provides an interface to the SuperLU library. + * It provides the following factorization class: + * - class SuperLU: a supernodal sequential LU factorization. + * - class SuperILU: a supernodal sequential incomplete LU factorization (to be used as a preconditioner for iterative methods). + * + * \warning This wrapper requires at least versions 4.0 of SuperLU. The 3.x versions are not supported. + * + * \warning When including this module, you have to use SUPERLU_EMPTY instead of EMPTY which is no longer defined because it is too polluting. + * + * \code + * #include + * \endcode + * + * In order to use this module, the superlu headers must be accessible from the include paths, and your binary must be linked to the superlu library and its dependencies. + * The dependencies depend on how superlu has been compiled. + * For a cmake based project, you can use our FindSuperLU.cmake module to help you in this task. + * + */ + +#include "src/SuperLUSupport/SuperLUSupport.h" + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_SUPERLUSUPPORT_MODULE_H diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/UmfPackSupport b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/UmfPackSupport new file mode 100644 index 000000000..00eec8087 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/Resources/UmfPackSupport @@ -0,0 +1,40 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef EIGEN_UMFPACKSUPPORT_MODULE_H +#define EIGEN_UMFPACKSUPPORT_MODULE_H + +#include "SparseCore" + +#include "src/Core/util/DisableStupidWarnings.h" + +extern "C" { +#include +} + +/** \ingroup Support_modules + * \defgroup UmfPackSupport_Module UmfPackSupport module + * + * This module provides an interface to the UmfPack library which is part of the suitesparse package. + * It provides the following factorization class: + * - class UmfPackLU: a multifrontal sequential LU factorization. + * + * \code + * #include + * \endcode + * + * In order to use this module, the umfpack headers must be accessible from the include paths, and your binary must be linked to the umfpack library and its dependencies. + * The dependencies depend on how umfpack has been compiled. + * For a cmake based project, you can use our FindUmfPack.cmake module to help you in this task. + * + */ + +#include "src/UmfPackSupport/UmfPackSupport.h" + +#include "src/Core/util/ReenableStupidWarnings.h" + +#endif // EIGEN_UMFPACKSUPPORT_MODULE_H diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/_CodeSignature.meta b/Assets/Obi/Plugins/libOni.bundle/Contents/_CodeSignature.meta new file mode 100644 index 000000000..7a8ec8e65 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/_CodeSignature.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 41100ab29033f4c358fbfed418551bc0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/libOni.bundle/Contents/_CodeSignature/CodeResources b/Assets/Obi/Plugins/libOni.bundle/Contents/_CodeSignature/CodeResources new file mode 100644 index 000000000..578027da5 --- /dev/null +++ b/Assets/Obi/Plugins/libOni.bundle/Contents/_CodeSignature/CodeResources @@ -0,0 +1,567 @@ + + + + + files + + Resources/CMakeLists.txt + + cOtLXxofm3lG1qCCrIvrwNXC1XA= + + Resources/Cholesky + + rbUhwzsxHGtY4Odila0J8dDsV7k= + + Resources/CholmodSupport + + JcYHIXmbeMaeHAwwYAmP0vUX5r0= + + Resources/Core + + 1e57zXoa4MfI2FfPzMoxe9qkZFM= + + Resources/Dense + + l6aicKxqX1+TG9mrHj2EXaWnn/I= + + Resources/Eigen + + T4sCLK+7QbphwVpDFbY6bkR8w24= + + Resources/Eigenvalues + + QxGMXYy3HLNE6th4DJ2CZNO5+Gg= + + Resources/Geometry + + 6bH+dsNAF2978gZVJzjyBQemqdw= + + Resources/Householder + + 9lmBF6j1KedsAiS56htztnuZTWw= + + Resources/IterativeLinearSolvers + + 605Q7NK74EEQXA5Z4zmB+EBlFk8= + + Resources/Jacobi + + Me3Qwr2J524HN3kmNL2jw6Oyrco= + + Resources/LU + + B2LyoXHxqVkjJiOGrnjWbagyjjs= + + Resources/MetisSupport + + N0SrA+L+jFsTerjHBpj1FQwUko0= + + Resources/OrderingMethods + + 13PUHtslb3Pl8BZZPML035HSo+s= + + Resources/PaStiXSupport + + f3z7K4pYDhKZF4jZ12qik6ViZNE= + + Resources/PardisoSupport + + u0iXf0ZsM2IbFXXzJgrB/ytE1Cg= + + Resources/QR + + QXKl7/7DIw2i7Apx3qN5GA3GuhY= + + Resources/QtAlignedMalloc + + rpLY5WInNGmI/WRfJUQPjO3wpxA= + + Resources/SPQRSupport + + PhbG0vB6FuoQqcTZcXTmaSvBA5s= + + Resources/SVD + + v/sdbqyMvo2FJojRWaYGrVNQfCY= + + Resources/Sparse + + HRDaPlp1w8nkb6ljJjDbZwK8CDg= + + Resources/SparseCholesky + + ekL4dP8xYzHzS4CgaMScIxwyqLc= + + Resources/SparseCore + + kxsvRhvb2pV54xnktT8W/qGgMSA= + + Resources/SparseLU + + lK/U4MqbwhmtHbKWdoE5YfxrPLI= + + Resources/SparseQR + + wcjlNfy9k2yMG1ItF6ig+6EJme0= + + Resources/StdDeque + + IoY/3GB4PujtiSHyQua86fal3B0= + + Resources/StdList + + MNRej3tS60Pw58N2+MRA59U9mFs= + + Resources/StdVector + + +ZDwOyhJ5VynkBV0pM3nEgn13Ho= + + Resources/SuperLUSupport + + RwjfZ7P3MquMRVRW2ETZptE1GUU= + + Resources/UmfPackSupport + + M8QOb2WmVgN/4pnOv9+urwokZUw= + + + files2 + + Resources/CMakeLists.txt + + hash + + cOtLXxofm3lG1qCCrIvrwNXC1XA= + + hash2 + + 6Z3rtsJEI2ZM9hDVP6sJLuqx7CMHa5Zkdt3+c68SAgI= + + + Resources/Cholesky + + hash + + rbUhwzsxHGtY4Odila0J8dDsV7k= + + hash2 + + ZiWSB5ItbHNVDzQN7dEjKix/S9k64PnC8ekY5ivWPiY= + + + Resources/CholmodSupport + + hash + + JcYHIXmbeMaeHAwwYAmP0vUX5r0= + + hash2 + + JvDRvQZ3eFOU8fTrLN33Y0I/cDwJQbPlg3PpVbATAyc= + + + Resources/Core + + hash + + 1e57zXoa4MfI2FfPzMoxe9qkZFM= + + hash2 + + XZUAlmhc6e7fCZqjpfARdPxo7EHD8MMBHig0y3kz+m0= + + + Resources/Dense + + hash + + l6aicKxqX1+TG9mrHj2EXaWnn/I= + + hash2 + + UyXJ1NaT5QTuASxSda1LELE1pwHL2HwURm0uoh6iLuU= + + + Resources/Eigen + + hash + + T4sCLK+7QbphwVpDFbY6bkR8w24= + + hash2 + + sEc7XXwM2TEdSpBUgWLozxYJBEdocff7dJ6WJOmz39E= + + + Resources/Eigenvalues + + hash + + QxGMXYy3HLNE6th4DJ2CZNO5+Gg= + + hash2 + + FK3msK6JiMFj0GpeJfpW6N3dEF0AdcjQc4vzPWfTN4w= + + + Resources/Geometry + + hash + + 6bH+dsNAF2978gZVJzjyBQemqdw= + + hash2 + + MelWZv7cjgpCH1wOIT0JFuroXKS0J1Eu4SSg1xdnGkk= + + + Resources/Householder + + hash + + 9lmBF6j1KedsAiS56htztnuZTWw= + + hash2 + + +uLEXDVHKaNzk09RBGAkWNuziztuYfWO9bFWt7q6t0k= + + + Resources/IterativeLinearSolvers + + hash + + 605Q7NK74EEQXA5Z4zmB+EBlFk8= + + hash2 + + hP+jisHvO+AFv/UAt4tSnB4WT8UGN4Nv+GSP6hJ7dPc= + + + Resources/Jacobi + + hash + + Me3Qwr2J524HN3kmNL2jw6Oyrco= + + hash2 + + xIpgdOLmWzZI3YZxV0p0zuJT2OK5SGb1QQ8SSlVYkjI= + + + Resources/LU + + hash + + B2LyoXHxqVkjJiOGrnjWbagyjjs= + + hash2 + + i4A6iQsITpNuynj68eNhunZpcYHS66XWgQ9gInPvlZU= + + + Resources/MetisSupport + + hash + + N0SrA+L+jFsTerjHBpj1FQwUko0= + + hash2 + + 5G1R0wZZYkCKQDSA8snK1OfWH7UJweSmlSdHUSdJaaI= + + + Resources/OrderingMethods + + hash + + 13PUHtslb3Pl8BZZPML035HSo+s= + + hash2 + + mimHU/G8AMZZHPPY+vIFOsmwyNNi5xuiE2UEyoy9jZ4= + + + Resources/PaStiXSupport + + hash + + f3z7K4pYDhKZF4jZ12qik6ViZNE= + + hash2 + + EUhTmIWLVP/BlcxR0xVD/GX+p5qM2QHvldpAXOeQ43A= + + + Resources/PardisoSupport + + hash + + u0iXf0ZsM2IbFXXzJgrB/ytE1Cg= + + hash2 + + UOxQA985n6v1GGIOIg9xxxf/OgOnIYuGUKl03DrQaxU= + + + Resources/QR + + hash + + QXKl7/7DIw2i7Apx3qN5GA3GuhY= + + hash2 + + STU0Hi8NgBNq1S6zT5VVYZC2Y93WOOZKqf/P6YrGXAM= + + + Resources/QtAlignedMalloc + + hash + + rpLY5WInNGmI/WRfJUQPjO3wpxA= + + hash2 + + m6XbWPwuNmqDPQpH5ljceOyJBE6gvFddQA131+KVZoM= + + + Resources/SPQRSupport + + hash + + PhbG0vB6FuoQqcTZcXTmaSvBA5s= + + hash2 + + T6LXO5mMB5RoLWPf+//3lb6kGn0YZlhAscNX5m/xyJ0= + + + Resources/SVD + + hash + + v/sdbqyMvo2FJojRWaYGrVNQfCY= + + hash2 + + gK7oqjJo1vSqYB1grNVgYk6Y7UfQtEDMGfNUzoaM3vY= + + + Resources/Sparse + + hash + + HRDaPlp1w8nkb6ljJjDbZwK8CDg= + + hash2 + + +5LkscC4XT6SktBksbFwC/HUiNSQXGSqI7nkD+2nVHg= + + + Resources/SparseCholesky + + hash + + ekL4dP8xYzHzS4CgaMScIxwyqLc= + + hash2 + + f+/W9qpxQFLRpn759ZjUe9+i4h8jfIIMTA430BO0kik= + + + Resources/SparseCore + + hash + + kxsvRhvb2pV54xnktT8W/qGgMSA= + + hash2 + + IyPB4xed/Gq/NIFht4wb9ezQyqj0UscMrKmhzf3Wpq4= + + + Resources/SparseLU + + hash + + lK/U4MqbwhmtHbKWdoE5YfxrPLI= + + hash2 + + z5KW+7PH1oMpAT/cdGTh1pbRrq6cd42eBtNw0Qj62aI= + + + Resources/SparseQR + + hash + + wcjlNfy9k2yMG1ItF6ig+6EJme0= + + hash2 + + l1a62EFnSRtE2ZkGE+ouiJhX7rVP/KUNWQQQhG9cZ9I= + + + Resources/StdDeque + + hash + + IoY/3GB4PujtiSHyQua86fal3B0= + + hash2 + + wYhRZ6RHglq3w1VzQiw++iPexi9bYwrDIv/mWODuUkI= + + + Resources/StdList + + hash + + MNRej3tS60Pw58N2+MRA59U9mFs= + + hash2 + + A1QOKXrpbtA+go2aQzu39aXpOqg8b1CmwnHHj5KD1mc= + + + Resources/StdVector + + hash + + +ZDwOyhJ5VynkBV0pM3nEgn13Ho= + + hash2 + + fosQYHV6EUApj/OQXfcO21mtEIP1BWgd8w3J3Jlj2Ks= + + + Resources/SuperLUSupport + + hash + + RwjfZ7P3MquMRVRW2ETZptE1GUU= + + hash2 + + iqYB8/oea/wDt5lma/OevELUSRel+yqqSJvq/WOQH3I= + + + Resources/UmfPackSupport + + hash + + M8QOb2WmVgN/4pnOv9+urwokZUw= + + hash2 + + AD1B+gjN5oscRphJn6m/nIA867J650hhWFFRn0LcVqw= + + + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ + + nested + + weight + 10 + + ^.* + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^Resources/ + + weight + 20 + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^[^/]+$ + + nested + + weight + 10 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/Assets/Obi/Plugins/x86.meta b/Assets/Obi/Plugins/x86.meta new file mode 100644 index 000000000..80893acc7 --- /dev/null +++ b/Assets/Obi/Plugins/x86.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 80456217692874029bfa8535cab5e715 +folderAsset: yes +timeCreated: 1453064755 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/x86/libOni.dll b/Assets/Obi/Plugins/x86/libOni.dll new file mode 100644 index 000000000..d719e3473 Binary files /dev/null and b/Assets/Obi/Plugins/x86/libOni.dll differ diff --git a/Assets/Obi/Plugins/x86/libOni.dll.meta b/Assets/Obi/Plugins/x86/libOni.dll.meta new file mode 100644 index 000000000..ec348d700 --- /dev/null +++ b/Assets/Obi/Plugins/x86/libOni.dll.meta @@ -0,0 +1,107 @@ +fileFormatVersion: 2 +guid: eb02e369b26e142719b77dde09868e40 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Linux + second: + enabled: 1 + settings: + CPU: x86 + - first: + : LinuxUniversal + second: + enabled: 0 + settings: + CPU: x86 + - first: + : OSXIntel + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + : OSXIntel64 + second: + enabled: 0 + settings: + CPU: None + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 0 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 0 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86 + DefaultValueInitialized: true + OS: Windows + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/x86/libOni.so b/Assets/Obi/Plugins/x86/libOni.so new file mode 100644 index 000000000..13ec9d910 Binary files /dev/null and b/Assets/Obi/Plugins/x86/libOni.so differ diff --git a/Assets/Obi/Plugins/x86/libOni.so.meta b/Assets/Obi/Plugins/x86/libOni.so.meta new file mode 100644 index 000000000..e3d3c5195 --- /dev/null +++ b/Assets/Obi/Plugins/x86/libOni.so.meta @@ -0,0 +1,138 @@ +fileFormatVersion: 2 +guid: 88448b11249634f08b945b0d34e3844e +timeCreated: 1528194247 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 0 + Exclude Linux64: 1 + Exclude LinuxUniversal: 0 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 1 + data: + first: + '': Editor + second: + enabled: 0 + settings: + CPU: x86 + OS: Linux + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86 + DefaultValueInitialized: true + data: + first: + Facebook: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: Linux + second: + enabled: 1 + settings: + CPU: x86 + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: LinuxUniversal + second: + enabled: 1 + settings: + CPU: x86 + data: + first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: None + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/x86_64.meta b/Assets/Obi/Plugins/x86_64.meta new file mode 100644 index 000000000..7891529ea --- /dev/null +++ b/Assets/Obi/Plugins/x86_64.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6f417b5d0f496433da26e1498dc0f91f +folderAsset: yes +timeCreated: 1453064763 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/x86_64/libOni.dll b/Assets/Obi/Plugins/x86_64/libOni.dll new file mode 100644 index 000000000..3e7fb7754 Binary files /dev/null and b/Assets/Obi/Plugins/x86_64/libOni.dll differ diff --git a/Assets/Obi/Plugins/x86_64/libOni.dll.meta b/Assets/Obi/Plugins/x86_64/libOni.dll.meta new file mode 100644 index 000000000..9652706b1 --- /dev/null +++ b/Assets/Obi/Plugins/x86_64/libOni.dll.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: e2c2ebd4a8d9a4f9c962e342f097d0f2 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Linux + second: + enabled: 0 + settings: + CPU: None + - first: + '': LinuxUniversal + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + '': OSXIntel + second: + enabled: 0 + settings: + CPU: None + - first: + '': OSXIntel64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 0 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 0 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 0 + Exclude iOS: 1 + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Windows + - first: + Facebook: WebGL + second: + enabled: 0 + settings: {} + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Facebook: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + WebGL: WebGL + second: + enabled: 0 + settings: {} + - first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Plugins/x86_64/libOni.so b/Assets/Obi/Plugins/x86_64/libOni.so new file mode 100644 index 000000000..43b547979 Binary files /dev/null and b/Assets/Obi/Plugins/x86_64/libOni.so differ diff --git a/Assets/Obi/Plugins/x86_64/libOni.so.meta b/Assets/Obi/Plugins/x86_64/libOni.so.meta new file mode 100644 index 000000000..b537bd73e --- /dev/null +++ b/Assets/Obi/Plugins/x86_64/libOni.so.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: bd7704a5aa9874f209b6e16cd06c6c63 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 0 + Exclude LinuxUniversal: 0 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 1 + - first: + '': Editor + second: + enabled: 0 + settings: + CPU: x86_64 + OS: Linux + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Facebook: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: LinuxUniversal + second: + enabled: 1 + settings: + CPU: x86_64 + - first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/QuickstartGuide_rope.pdf b/Assets/Obi/QuickstartGuide_rope.pdf new file mode 100644 index 000000000..f20127ec4 Binary files /dev/null and b/Assets/Obi/QuickstartGuide_rope.pdf differ diff --git a/Assets/Obi/QuickstartGuide_rope.pdf.meta b/Assets/Obi/QuickstartGuide_rope.pdf.meta new file mode 100644 index 000000000..0218f7a96 --- /dev/null +++ b/Assets/Obi/QuickstartGuide_rope.pdf.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: dd3977598aee74c5eaa2111f3d999165 +labels: +- ObiRope +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/README.rtf b/Assets/Obi/README.rtf new file mode 100644 index 000000000..d6d71741c --- /dev/null +++ b/Assets/Obi/README.rtf @@ -0,0 +1,38 @@ +{\rtf1\ansi\ansicpg1252\cocoartf2512 +\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fmodern\fcharset0 Courier-Bold;\f1\fmodern\fcharset0 Courier;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\paperw11900\paperh16840\margl1440\margr1440\vieww23180\viewh10900\viewkind0 +\deftab720 +\pard\pardeftab720\partightenfactor0 + +\f0\b\fs26 \cf0 \expnd0\expndtw0\kerning0 +OFFICIAL OBI WEBPAGE:\ +{\field{\*\fldinst{HYPERLINK "http://obi.virtualmethodstudio.com"}}{\fldrslt +\f1\b0 http://obi.virtualmethodstudio.com}}\ +\ +OFFICIAL FORUM:\ +{\field{\*\fldinst{HYPERLINK "http://obi.virtualmethodstudio.com/forum"}}{\fldrslt +\f1\b0 http://obi.virtualmethodstudio.com/forum}}\ +\ +CREDITS: +\f1\b0 \ +\ +\ul Programming, design:\ulnone \ +Jos\'e9 Mar\'eda \'93ArK\'94 M\'e9ndez Gonz\'e1lez\ +\ +\ul Support, Community management and Web/Forum maintenance:\ulnone \ +Lidia Mart\'ednez Prado \ +\ +\ul Special thanks to:\ulnone \ +VargaPD (testing and debugging)\ +theANMATOR2b (testing)\ +Hanging Cui (testing, help with vectorization issues)\ +Janne Ramstedt (debugging and suggestions)\ +Tigrero Tiger (debugging)\ +Hatchling (feedback regarding collision filtering and spatial query API)\ +\ +all the folks at the Unity forums and of course, all Obi users.\ +\ +\ +} \ No newline at end of file diff --git a/Assets/Obi/README.rtf.meta b/Assets/Obi/README.rtf.meta new file mode 100644 index 000000000..de9ed91b3 --- /dev/null +++ b/Assets/Obi/README.rtf.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 133c58a050c6b404cb14cc72f0a1676c +timeCreated: 1443155832 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources.meta b/Assets/Obi/Resources.meta new file mode 100644 index 000000000..0cc732a65 --- /dev/null +++ b/Assets/Obi/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6217e7f6fe8104bbca06fe7ac150a57d +folderAsset: yes +timeCreated: 1435572248 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/DefaultRopeSection.asset b/Assets/Obi/Resources/DefaultRopeSection.asset new file mode 100644 index 000000000..1cd5bb945 --- /dev/null +++ b/Assets/Obi/Resources/DefaultRopeSection.asset @@ -0,0 +1,26 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ee7737c43f5734f87be9e49d1bbfba78, type: 3} + m_Name: DefaultRopeSection + m_EditorClassIdentifier: + vertices: + - {x: 1, y: 0} + - {x: 0.70710677, y: 0.70710677} + - {x: -0.00000004371139, y: 1} + - {x: -0.70710677, y: 0.70710677} + - {x: -1, y: -0.00000008742278} + - {x: -0.70710665, y: -0.7071069} + - {x: 0.000000011924881, y: -1} + - {x: 0.707107, y: -0.70710653} + - {x: 1, y: 0.00000017484555} + snapX: 32 + snapY: 32 diff --git a/Assets/Obi/Resources/DefaultRopeSection.asset.meta b/Assets/Obi/Resources/DefaultRopeSection.asset.meta new file mode 100644 index 000000000..989bd9ac5 --- /dev/null +++ b/Assets/Obi/Resources/DefaultRopeSection.asset.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: a0bc36a59515f413e90e10895929c938 +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/GUI.meta b/Assets/Obi/Resources/GUI.meta new file mode 100644 index 000000000..63fee6bd7 --- /dev/null +++ b/Assets/Obi/Resources/GUI.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: bd46757354fbf4182af57f2913e20fc1 +folderAsset: yes +timeCreated: 1474532461 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/GUI/ProfilerSkin.guiskin b/Assets/Obi/Resources/GUI/ProfilerSkin.guiskin new file mode 100644 index 000000000..1265b3e65 --- /dev/null +++ b/Assets/Obi/Resources/GUI/ProfilerSkin.guiskin @@ -0,0 +1,1494 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12001, guid: 0000000000000000e000000000000000, type: 0} + m_Name: ProfilerSkin + m_EditorClassIdentifier: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_box: + m_Name: box + m_Normal: + m_Background: {fileID: 2800000, guid: 98f1105e6aebd46a1878df08ab79b5d7, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.79999995, g: 0.79999995, b: 0.79999995, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_button: + m_Name: button + m_Normal: + m_Background: {fileID: 11006, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_Hover: + m_Background: {fileID: 11003, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 11002, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 11005, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 11004, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 11002, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 4 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_toggle: + m_Name: toggle + m_Normal: + m_Background: {fileID: 11018, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.89112896, g: 0.89112896, b: 0.89112896, a: 1} + m_Hover: + m_Background: {fileID: 11014, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 11013, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 11016, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8901961, g: 0.8901961, b: 0.8901961, a: 1} + m_OnHover: + m_Background: {fileID: 11015, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 11017, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 14 + m_Right: 0 + m_Top: 14 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 15 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: -1 + m_Right: 0 + m_Top: -4 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_label: + m_Name: label + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5882353, g: 0.5882353, b: 0.5882353, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_textField: + m_Name: textfield + m_Normal: + m_Background: {fileID: 11024, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.79999995, g: 0.79999995, b: 0.79999995, a: 1} + m_Hover: + m_Background: {fileID: 11026, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 11026, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 11025, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_textArea: + m_Name: textarea + m_Normal: + m_Background: {fileID: 11024, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_Hover: + m_Background: {fileID: 11026, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.79999995, g: 0.79999995, b: 0.79999995, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 11025, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_window: + m_Name: window + m_Normal: + m_Background: {fileID: 11023, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 11022, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 8 + m_Top: 18 + m_Bottom: 8 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 20 + m_Bottom: 10 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -18} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalSlider: + m_Name: horizontalslider + m_Normal: + m_Background: {fileID: 11009, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: -1 + m_Right: -1 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -2 + m_Bottom: -3 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalSliderThumb: + m_Name: horizontalsliderthumb + m_Normal: + m_Background: {fileID: 11011, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 11012, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 11010, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: -1 + m_Right: -1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_verticalSlider: + m_Name: verticalslider + m_Normal: + m_Background: {fileID: 11021, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: -1 + m_Bottom: -1 + m_Overflow: + m_Left: -2 + m_Right: -3 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 12 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 1 + m_verticalSliderThumb: + m_Name: verticalsliderthumb + m_Normal: + m_Background: {fileID: 11011, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 11012, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 11010, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 7 + m_Bottom: 7 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -1 + m_Bottom: -1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 12 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 1 + m_horizontalScrollbar: + m_Name: horizontalscrollbar + m_Normal: + m_Background: {fileID: 2800000, guid: a3476527001d2494a88fa4236e8dbf0b, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 9 + m_Right: 9 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 4 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 10 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalScrollbarThumb: + m_Name: horizontalscrollbarthumb + m_Normal: + m_Background: {fileID: 2800000, guid: 06f4c4a011cc740c08e92ac6806b7353, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 10 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalScrollbarLeftButton: + m_Name: horizontalscrollbarleftbutton + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalScrollbarRightButton: + m_Name: horizontalscrollbarrightbutton + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_verticalScrollbar: + m_Name: verticalscrollbar + m_Normal: + m_Background: {fileID: 2800000, guid: a3476527001d2494a88fa4236e8dbf0b, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 9 + m_Bottom: 9 + m_Margin: + m_Left: 0 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 10 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_verticalScrollbarThumb: + m_Name: verticalscrollbarthumb + m_Normal: + m_Background: {fileID: 2800000, guid: 06f4c4a011cc740c08e92ac6806b7353, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 6 + m_Bottom: 6 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 10 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 1 + m_verticalScrollbarUpButton: + m_Name: verticalscrollbarupbutton + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_verticalScrollbarDownButton: + m_Name: verticalscrollbardownbutton + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_ScrollView: + m_Name: scrollview + m_Normal: + m_Background: {fileID: 2800000, guid: a3476527001d2494a88fa4236e8dbf0b, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_CustomStyles: + - m_Name: Task + m_Normal: + m_Background: {fileID: 2800000, guid: c237f5e557ded47598c1e8e4c650aeda, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_Hover: + m_Background: {fileID: 2800000, guid: c237f5e557ded47598c1e8e4c650aeda, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_Active: + m_Background: {fileID: 2800000, guid: c237f5e557ded47598c1e8e4c650aeda, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_Focused: + m_Background: {fileID: 2800000, guid: c237f5e557ded47598c1e8e4c650aeda, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_OnNormal: + m_Background: {fileID: 2800000, guid: c237f5e557ded47598c1e8e4c650aeda, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_OnHover: + m_Background: {fileID: 2800000, guid: c237f5e557ded47598c1e8e4c650aeda, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_OnActive: + m_Background: {fileID: 2800000, guid: c237f5e557ded47598c1e8e4c650aeda, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_OnFocused: + m_Background: {fileID: 2800000, guid: c237f5e557ded47598c1e8e4c650aeda, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 11 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Thread + m_Normal: + m_Background: {fileID: 2800000, guid: 8b6df8323f27749f58cbd0563786435b, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_Hover: + m_Background: {fileID: 2800000, guid: 8b6df8323f27749f58cbd0563786435b, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_Active: + m_Background: {fileID: 2800000, guid: 8b6df8323f27749f58cbd0563786435b, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_Focused: + m_Background: {fileID: 2800000, guid: 8b6df8323f27749f58cbd0563786435b, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_OnNormal: + m_Background: {fileID: 2800000, guid: 8b6df8323f27749f58cbd0563786435b, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_OnHover: + m_Background: {fileID: 2800000, guid: 8b6df8323f27749f58cbd0563786435b, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_OnActive: + m_Background: {fileID: 2800000, guid: 8b6df8323f27749f58cbd0563786435b, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_OnFocused: + m_Background: {fileID: 2800000, guid: 8b6df8323f27749f58cbd0563786435b, type: 3} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 11 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_Settings: + m_DoubleClickSelectsWord: 1 + m_TripleClickSelectsLine: 1 + m_CursorColor: {r: 1, g: 1, b: 1, a: 1} + m_CursorFlashSpeed: -1 + m_SelectionColor: {r: 1, g: 0.38403907, b: 0, a: 0.7} diff --git a/Assets/Obi/Resources/GUI/ProfilerSkin.guiskin.meta b/Assets/Obi/Resources/GUI/ProfilerSkin.guiskin.meta new file mode 100644 index 000000000..d8811ce61 --- /dev/null +++ b/Assets/Obi/Resources/GUI/ProfilerSkin.guiskin.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b90d3c214c99743b0865fc0e0d1f1a15 +timeCreated: 1474532476 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/GUI/profiler_bck.png b/Assets/Obi/Resources/GUI/profiler_bck.png new file mode 100644 index 000000000..ac91069b7 Binary files /dev/null and b/Assets/Obi/Resources/GUI/profiler_bck.png differ diff --git a/Assets/Obi/Resources/GUI/profiler_bck.png.meta b/Assets/Obi/Resources/GUI/profiler_bck.png.meta new file mode 100644 index 000000000..b9bd3b48c --- /dev/null +++ b/Assets/Obi/Resources/GUI/profiler_bck.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: a3476527001d2494a88fa4236e8dbf0b +timeCreated: 1525627614 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/GUI/profiler_toolbar.png b/Assets/Obi/Resources/GUI/profiler_toolbar.png new file mode 100644 index 000000000..6c68d6a9b Binary files /dev/null and b/Assets/Obi/Resources/GUI/profiler_toolbar.png differ diff --git a/Assets/Obi/Resources/GUI/profiler_toolbar.png.meta b/Assets/Obi/Resources/GUI/profiler_toolbar.png.meta new file mode 100644 index 000000000..eb51c56c5 --- /dev/null +++ b/Assets/Obi/Resources/GUI/profiler_toolbar.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 98f1105e6aebd46a1878df08ab79b5d7 +timeCreated: 1482234525 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/GUI/scroll_peg.png b/Assets/Obi/Resources/GUI/scroll_peg.png new file mode 100644 index 000000000..2dcfb17ec Binary files /dev/null and b/Assets/Obi/Resources/GUI/scroll_peg.png differ diff --git a/Assets/Obi/Resources/GUI/scroll_peg.png.meta b/Assets/Obi/Resources/GUI/scroll_peg.png.meta new file mode 100644 index 000000000..2a15c9f9a --- /dev/null +++ b/Assets/Obi/Resources/GUI/scroll_peg.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 06f4c4a011cc740c08e92ac6806b7353 +timeCreated: 1482234676 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/GUI/task_bck.png b/Assets/Obi/Resources/GUI/task_bck.png new file mode 100644 index 000000000..2c57a8414 Binary files /dev/null and b/Assets/Obi/Resources/GUI/task_bck.png differ diff --git a/Assets/Obi/Resources/GUI/task_bck.png.meta b/Assets/Obi/Resources/GUI/task_bck.png.meta new file mode 100644 index 000000000..8800f14f8 --- /dev/null +++ b/Assets/Obi/Resources/GUI/task_bck.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: c237f5e557ded47598c1e8e4c650aeda +timeCreated: 1474532609 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/GUI/thread_bck.png b/Assets/Obi/Resources/GUI/thread_bck.png new file mode 100644 index 000000000..8aa68f9ae Binary files /dev/null and b/Assets/Obi/Resources/GUI/thread_bck.png differ diff --git a/Assets/Obi/Resources/GUI/thread_bck.png.meta b/Assets/Obi/Resources/GUI/thread_bck.png.meta new file mode 100644 index 000000000..839edd899 --- /dev/null +++ b/Assets/Obi/Resources/GUI/thread_bck.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 8b6df8323f27749f58cbd0563786435b +timeCreated: 1525630909 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials.meta b/Assets/Obi/Resources/ObiMaterials.meta new file mode 100644 index 000000000..9f7ccf092 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 40f10b6d47dcf4fe5a4851bad844fa57 +folderAsset: yes +timeCreated: 1445286974 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials/DistanceFieldRendering.mat b/Assets/Obi/Resources/ObiMaterials/DistanceFieldRendering.mat new file mode 100644 index 000000000..386f534e4 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/DistanceFieldRendering.mat @@ -0,0 +1,95 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DistanceFieldRendering + m_Shader: {fileID: 4800000, guid: 8447096d1e8064b37939be221dd9afb5, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Volume: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _Absorption: 1 + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _MaxSteps: 300 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _StepSize: 0.01 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _AABBMax: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _AABBMin: {r: -0.5, g: -0.5, b: -0.5, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _InsideColor: {r: 1, g: 1, b: 1, a: 1} + - _OutsideColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Resources/ObiMaterials/DistanceFieldRendering.mat.meta b/Assets/Obi/Resources/ObiMaterials/DistanceFieldRendering.mat.meta new file mode 100644 index 000000000..51f5da284 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/DistanceFieldRendering.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f6bf1245292ed43c78875db43ca1aad3 +timeCreated: 1515780549 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials/DistanceFieldSlice.shader b/Assets/Obi/Resources/ObiMaterials/DistanceFieldSlice.shader new file mode 100644 index 000000000..cbcc6f961 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/DistanceFieldSlice.shader @@ -0,0 +1,66 @@ +Shader "Obi/DistanceFieldSlice" +{ + Properties + { + _MainTex ("Texture", 2D) = "white" {} + } + SubShader + { + Tags { "RenderType"="Opaque" } + LOD 100 + + Cull Off + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + }; + + struct v2f + { + float2 uv : TEXCOORD0; + float4 vertex : SV_POSITION; + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + + v2f vert (appdata v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.uv = TRANSFORM_TEX(v.uv, _MainTex); + return o; + } + + half4 frag (v2f i) : SV_Target + { + half dist = tex2D(_MainTex, i.uv).x-0.5; // signed distance + half adist = abs(dist); // absolute distance + half isofunc = sin(adist*40); // isolines function + + // antialiased isolines: + half change = fwidth(isofunc); + half isolines = smoothstep(-change,change,isofunc); + + // antialiazed sign: + change = fwidth(dist); + half sign = smoothstep(-change,change,dist); + + half final = (1-adist) * (0.85+isolines*0.15); + + return half4(final,final*sign,final*sign,1); + } + ENDCG + } + } +} diff --git a/Assets/Obi/Resources/ObiMaterials/DistanceFieldSlice.shader.meta b/Assets/Obi/Resources/ObiMaterials/DistanceFieldSlice.shader.meta new file mode 100644 index 000000000..e48de3bb9 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/DistanceFieldSlice.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8447096d1e8064b37939be221dd9afb5 +timeCreated: 1515783007 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials/InstancedStandard.mat b/Assets/Obi/Resources/ObiMaterials/InstancedStandard.mat new file mode 100644 index 000000000..62f2fec4a --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/InstancedStandard.mat @@ -0,0 +1,84 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: InstancedStandard + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 8fbd9c5f957b8434883cdfce9d6a3c27, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Resources/ObiMaterials/InstancedStandard.mat.meta b/Assets/Obi/Resources/ObiMaterials/InstancedStandard.mat.meta new file mode 100644 index 000000000..4264b30d3 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/InstancedStandard.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2b7dfa8ebb76247318ce5b7df4b97484 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials/ObiEllipsoids.cginc b/Assets/Obi/Resources/ObiMaterials/ObiEllipsoids.cginc new file mode 100644 index 000000000..157d9d0b5 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/ObiEllipsoids.cginc @@ -0,0 +1,85 @@ +#ifndef OBIELLIPSOIDS_INCLUDED +#define OBIELLIPSOIDS_INCLUDED + +float _RadiusScale; + +// Eye ray origin in world space. +// Works both for orthographic and perspective cameras. +float3 WorldEye(float3 worldPos){ + if ((UNITY_MATRIX_P[3].x == 0.0) && (UNITY_MATRIX_P[3].y == 0.0) && (UNITY_MATRIX_P[3].z == 0.0)){ + return mul(UNITY_MATRIX_I_V,float4(mul(UNITY_MATRIX_V, float4(worldPos,1)).xy,0,1)).xyz; + }else + return UNITY_MATRIX_I_V._m03_m13_m23; +} + +// Returns visible ellipsoid radius and offset from center, given the eye position in parameter space. +// Works both for orthographic and perspective cameras. +float VisibleEllipsoidCircleRadius(float3 eye, out float3 m){ + if ((UNITY_MATRIX_P[3].x == 0.0) && (UNITY_MATRIX_P[3].y == 0.0) && (UNITY_MATRIX_P[3].z == 0.0)){ + m = float3(0,0,0); + return 1; + }else{ + float t = 1/dot(eye,eye); + m = t * eye; + return sqrt(1-t); + } +} + +// Performs accurate raycasting of a spherical impostor. +// Works both for orthographic and perspective cameras. +float IntersectEllipsoid(float3 v, float4 mapping, float3 a2, float3 a3, out float3 eyePos, out float3 eyeNormal) +{ + float r2 = dot(mapping.xy, mapping.xy); + float iq = 1 - r2/mapping.w; + clip(iq); // the ray does not intersect the sphere. + + float sqrtiq = sqrt(iq); + float lambda = 1/(1 + mapping.z * sqrtiq); + + eyePos = lambda * v; + eyeNormal = normalize(a2 + lambda * a3); + + // return gaussian-falloff thickness. + return 2 * sqrtiq * exp(-r2*2.0f); +} + +void BuildParameterSpaceMatrices(float4 t0, float4 t1, float4 t2, out float3x3 P, out float3x3 IP) +{ + // build 3x3 orientation matrix and its inverse; + float3x3 IO = float3x3(t0.xyz,t1.xyz,t2.xyz); + float3x3 O = transpose(IO); + + // build 3x3 scaling matrix and its inverse: + float3x3 S = float3x3(_RadiusScale*t0.w,0,0,0,_RadiusScale*t1.w,0,0,0,_RadiusScale*t2.w); + float3x3 IS = float3x3(1/(_RadiusScale*t0.w),0,0,0,1/(_RadiusScale*t1.w),0,0,0,1/(_RadiusScale*t2.w)); + + // build 3x3 transformation matrix and its inverse: + P = mul(mul(O,S),IO); + IP = mul(mul(O,IS),IO); +} + +float BuildEllipsoidBillboard(float3 center, float3 corner, float3x3 P, float3x3 IP, out float3 worldPos, out float3 view, out float3 eye) +{ + // eye position and quad vectors in parameter space: + eye = mul(IP,WorldEye(center) - center); + float3 u = normalize(cross(-eye,UNITY_MATRIX_V[1].xyz)); + float3 k = normalize(cross(-eye,u)); + + // visible circle radius and offset from center in the direction of the view ray: + float3 m; + float radius = VisibleEllipsoidCircleRadius(eye,m); + + // world position of the billboard corner, and view vector to it: + worldPos = center + mul(P, m) + radius * (mul(P,u)* corner.x + mul(P,k)* corner.y); + view = worldPos - WorldEye(worldPos); + + return radius; +} + +void BuildAuxiliaryNormalVectors(float3 center, float3 worldPos, float3 view, float3x3 P, float3x3 IP, out float3 a2, out float3 a3) +{ + a2 = mul((float3x3)UNITY_MATRIX_V,mul(IP,mul(IP,WorldEye(worldPos) - center))); //T^-2 * (eye - center) + a3 = mul((float3x3)UNITY_MATRIX_V,mul(IP,mul(IP,view))); //T^-2 * A[0] +} + +#endif diff --git a/Assets/Obi/Resources/ObiMaterials/ObiEllipsoids.cginc.meta b/Assets/Obi/Resources/ObiMaterials/ObiEllipsoids.cginc.meta new file mode 100644 index 000000000..f4ed8219d --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/ObiEllipsoids.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 083c49fc96643477889bfd68e70cf998 +timeCreated: 1445285630 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials/ObiLightingBuiltIn.cginc b/Assets/Obi/Resources/ObiMaterials/ObiLightingBuiltIn.cginc new file mode 100644 index 000000000..35ff81bb9 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/ObiLightingBuiltIn.cginc @@ -0,0 +1,19 @@ +#ifndef OBILIGHTINGBUILTIN_INCLUDED +#define OBILIGHTINGBUILTIN_INCLUDED + +#include "UnityCG.cginc" +#include "UnityStandardUtils.cginc" +#include "AutoLight.cginc" + +half3 SampleSphereAmbient(float3 eyeNormal, float3 eyePos) +{ + #if UNITY_SHOULD_SAMPLE_SH + half3 worldNormal = mul(transpose((float3x3)UNITY_MATRIX_V),eyeNormal); + half3 worldPos = mul(_Camera_to_World,half4(eyePos,1.0)); + return ShadeSHPerPixel(half4(worldNormal, 1.0),half3(0,0,0),worldPos); + #else + return UNITY_LIGHTMODEL_AMBIENT; + #endif +} + +#endif diff --git a/Assets/Obi/Resources/ObiMaterials/ObiLightingBuiltIn.cginc.meta b/Assets/Obi/Resources/ObiMaterials/ObiLightingBuiltIn.cginc.meta new file mode 100644 index 000000000..761c6bcb2 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/ObiLightingBuiltIn.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 135872c7cdf2b43bf89b8c57d067d4de +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials/ObiParticles.cginc b/Assets/Obi/Resources/ObiMaterials/ObiParticles.cginc new file mode 100644 index 000000000..b2e8f8f40 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/ObiParticles.cginc @@ -0,0 +1,24 @@ +#ifndef OBIPARTICLES_INCLUDED +#define OBIPARTICLES_INCLUDED + +float _RadiusScale; + +float3 BillboardSphereNormals(float2 texcoords) +{ + float3 n; + n.xy = texcoords*2.0-1.0; + float r2 = dot(n.xy, n.xy); + clip (1 - r2); // clip pixels outside circle + n.z = sqrt(1.0 - r2); + return n; +} + +float BillboardSphereThickness(float2 texcoords) +{ + float2 n = texcoords*2.0-1.0; + float r2 = dot(n.xy, n.xy); + clip (1 - r2); // clip pixels outside circle + return sqrt(1.0 - r2)*2.0f*exp(-r2*2.0f); +} + +#endif diff --git a/Assets/Obi/Resources/ObiMaterials/ObiParticles.cginc.meta b/Assets/Obi/Resources/ObiMaterials/ObiParticles.cginc.meta new file mode 100644 index 000000000..a08cdc8ea --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/ObiParticles.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e4575c757879646c793ff2b434b83e74 +timeCreated: 1445285630 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials/ObiUtils.cginc b/Assets/Obi/Resources/ObiMaterials/ObiUtils.cginc new file mode 100644 index 000000000..bd161f27c --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/ObiUtils.cginc @@ -0,0 +1,28 @@ +#ifndef OBIUTILS_INCLUDED +#define OBIUTILS_INCLUDED + +float4x4 _Camera_to_World; + +// abstract texture declaration/sampling over built-in and SRPs: +#ifndef TEXTURE2D +#define TEXTURE2D(name) sampler2D name +#endif + +#ifndef TEXTURE2D_HALF +#define TEXTURE2D_HALF(name) sampler2D_half name +#endif + +#ifndef TEXTURE2D_FLOAT +#define TEXTURE2D_FLOAT(name) sampler2D_float name +#endif + +#ifndef SAMPLE_TEXTURE2D +#define SAMPLE_TEXTURE2D(textureName, samplerName, coord2) tex2D(textureName,coord2) +#endif + +#ifndef SAMPLER +#define SAMPLER(samplerName) +#endif + + +#endif diff --git a/Assets/Obi/Resources/ObiMaterials/ObiUtils.cginc.meta b/Assets/Obi/Resources/ObiMaterials/ObiUtils.cginc.meta new file mode 100644 index 000000000..d7668afa6 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/ObiUtils.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fe1b10a99f88a45a09abf1a13d62b63f +timeCreated: 1445285630 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials/Particle.mat b/Assets/Obi/Resources/ObiMaterials/Particle.mat new file mode 100644 index 000000000..6cda4517e --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/Particle.mat @@ -0,0 +1,83 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Particle + m_Shader: {fileID: 4800000, guid: 87908c483837f4df49e97fa1aa0dacda, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 10300, guid: 0000000000000000f000000000000000, type: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Glossiness: 0.5 + - _InvFade: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _RadiusScale: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Resources/ObiMaterials/Particle.mat.meta b/Assets/Obi/Resources/ObiMaterials/Particle.mat.meta new file mode 100644 index 000000000..c37067413 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/Particle.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fb972beb020dd4ff5ab78835f4393522 +timeCreated: 1444705309 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials/ParticleShader.shader b/Assets/Obi/Resources/ObiMaterials/ParticleShader.shader new file mode 100644 index 000000000..941d682f9 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/ParticleShader.shader @@ -0,0 +1,215 @@ +Shader "Obi/Particles" { + +Properties { + _Color ("Particle color", Color) = (1,1,1,1) + _RadiusScale("Radius scale",float) = 1 +} + + SubShader { + + Pass { + + Name "ParticleFwdBase" + Tags {"Queue"="Geometry" "IgnoreProjector"="True" "RenderType"="Opaque" "LightMode" = "ForwardBase"} + Blend SrcAlpha OneMinusSrcAlpha + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + + #pragma multi_compile_fwdbase nolightmap + + #include "ObiEllipsoids.cginc" + #include "ObiUtils.cginc" + #include "ObiLightingBuiltIn.cginc" + + fixed4 _Color; + fixed4 _LightColor0; + + struct vin{ + float4 vertex : POSITION; + float3 corner : NORMAL; + fixed4 color : COLOR; + + float4 t0 : TEXCOORD0; // ellipsoid t1 vector + float4 t1 : TEXCOORD1; // ellipsoid t2 vector + float4 t2 : TEXCOORD2; // ellipsoid t3 vector + }; + + struct v2f + { + float4 pos : SV_POSITION; + fixed4 color : COLOR; + float4 mapping : TEXCOORD0; + float3 viewRay : TEXCOORD1; + float3 lightDir : TEXCOORD2; + float3 a2 : TEXCOORD3; + float3 a3 : TEXCOORD4; + LIGHTING_COORDS(5,6) + }; + + struct fout + { + half4 color : SV_Target; + float depth : SV_Depth; + }; + + v2f vert(vin v) + { + float3x3 P, IP; + BuildParameterSpaceMatrices(v.t0,v.t1,v.t2,P,IP); + + float3 worldPos; + float3 view; + float3 eye; + float radius = BuildEllipsoidBillboard(v.vertex,v.corner,P,IP,worldPos,view,eye); + + v2f o; + o.pos = mul(UNITY_MATRIX_VP, float4(worldPos,v.vertex.w)); + o.mapping = float4(v.corner.xy,1/length(eye),radius); // A[1] + o.viewRay = mul((float3x3)UNITY_MATRIX_V,view); // A[0] + o.color = v.color * _Color; + + BuildAuxiliaryNormalVectors(v.vertex,worldPos,view,P,IP,o.a2,o.a3); + + o.lightDir = mul((float3x3)UNITY_MATRIX_MV, ObjSpaceLightDir(v.vertex)); + TRANSFER_VERTEX_TO_FRAGMENT(o); + + return o; + } + + fout frag(v2f i) + { + fout fo; + + fo.color = half4(0,0,0,i.color.a); + + // generate sphere normals: + float3 p,n; + IntersectEllipsoid(i.viewRay,i.mapping, i.a2,i.a3,p, n); + + // clip space position: + float4 pos = mul(UNITY_MATRIX_P,float4(p,1.0)); + + // simple lighting: ambient + half3 amb = SampleSphereAmbient(n,p); + + // simple lighting: diffuse + float ndotl = saturate( dot( n, normalize(i.lightDir) ) ); + UNITY_LIGHT_ATTENUATION(atten,i,0); + + // final lit color: + fo.color.rgb = i.color * (_LightColor0 * ndotl * atten + amb); + + // normalized device coordinates: + fo.depth = pos.z/pos.w; + + // in openGL calculated depth range is <-1,1> map it to <0,1> + #if SHADER_API_OPENGL || SHADER_API_GLCORE || SHADER_API_GLES || SHADER_API_GLES3 + fo.depth = 0.5*fo.depth + 0.5; + #endif + + return fo; + } + + ENDCG + + } + + Pass { + Name "ShadowCaster" + Tags { "LightMode" = "ShadowCaster" } + Offset 1, 1 + + Fog {Mode Off} + ZWrite On ZTest LEqual + + CGPROGRAM + + #pragma vertex ellipsoidShadowVS + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + + #pragma multi_compile_shadowcaster nolightmap + + #include "ObiEllipsoids.cginc" + #include "ObiUtils.cginc" + #include "ObiLightingBuiltIn.cginc" + + sampler3D _DitherMaskLOD; + fixed4 _Color; + + struct vin{ + float4 vertex : POSITION; + float3 corner : NORMAL; + fixed4 color : COLOR; + + float4 t0 : TEXCOORD0; // ellipsoid t1 vector + float4 t1 : TEXCOORD1; // ellipsoid t2 vector + float4 t2 : TEXCOORD2; // ellipsoid t3 vector + }; + + struct v2f { + fixed4 color : COLOR; + float4 mapping : TEXCOORD0; + float3 viewRay : TEXCOORD1; + }; + + struct fout + { + half4 color : SV_Target; + float depth : SV_Depth; + }; + + v2f ellipsoidShadowVS( vin v , out float4 outpos : SV_POSITION )// clip space position output + { + float3x3 P, IP; + BuildParameterSpaceMatrices(v.t0,v.t1,v.t2,P,IP); + + float3 worldPos; + float3 view; + float3 eye; + float radius = BuildEllipsoidBillboard(v.vertex,v.corner,P,IP,worldPos,view,eye); + + v2f o; + outpos = mul(UNITY_MATRIX_VP, float4(worldPos,v.vertex.w)); + o.mapping = float4(v.corner.xy,1/length(eye),radius); // A[1] + o.viewRay = mul((float3x3)UNITY_MATRIX_V,view); // A[0] + o.color = v.color * _Color; + return o; + } + + fout frag( v2f i , UNITY_VPOS_TYPE vpos : VPOS) + { + fout fo; + + float3 p,n; + IntersectEllipsoid(i.viewRay,i.mapping, float3(0,0,0),float3(0,0,0),p, n); + + // project camera space position. + float4 pos = UnityApplyLinearShadowBias( mul(UNITY_MATRIX_P,float4(p,1.0)) ); + + fo.color = pos.z/pos.w; //similar to what SHADOW_CASTER_FRAGMENT does in case there's no depth buffer. + fo.depth = pos.z/pos.w; + + // in openGL calculated depth range is <-1,1> map it to <0,1> + #if SHADER_API_OPENGL || SHADER_API_GLCORE || SHADER_API_GLES || SHADER_API_GLES3 + fo.depth = fo.depth*0.5+0.5; + #endif + + // Use dither mask for alpha blended shadows, based on pixel position xy + // and alpha level. Our dither texture is 4x4x16. + half alphaRef = tex3D(_DitherMaskLOD, float3(vpos.xy*0.25,i.color.a*0.9375)).a; + clip (alphaRef - 0.01); + + return fo; + } + ENDCG + + } + + } +FallBack "Diffuse" +} + diff --git a/Assets/Obi/Resources/ObiMaterials/ParticleShader.shader.meta b/Assets/Obi/Resources/ObiMaterials/ParticleShader.shader.meta new file mode 100644 index 000000000..b7373631e --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/ParticleShader.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 801733041f66b49e1b3c2101471db877 +timeCreated: 1438934781 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials/SimpleParticleShader.shader b/Assets/Obi/Resources/ObiMaterials/SimpleParticleShader.shader new file mode 100644 index 000000000..b6b0f89aa --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/SimpleParticleShader.shader @@ -0,0 +1,131 @@ +Shader "Obi/Simple Particles" { + +Properties { + _Color ("Particle color", Color) = (1,1,1,1) +} + + SubShader { + + Pass { + + Name "ParticleFwdBase" + Tags {"Queue"="Geometry" "IgnoreProjector"="True" "RenderType"="Opaque" "LightMode" = "ForwardBase"} + Blend SrcAlpha OneMinusSrcAlpha + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + + #pragma multi_compile_fwdbase nolightmap + + #include "ObiParticles.cginc" + #include "ObiUtils.cginc" + #include "ObiLightingBuiltIn.cginc" + + fixed4 _Color; + fixed4 _LightColor0; + + struct vin{ + float4 vertex : POSITION; + float3 corner : NORMAL; + fixed4 color : COLOR; + float4 t0 : TEXCOORD0; // ellipsoid t1 vector + }; + + struct v2f + { + float4 pos : POSITION; + fixed4 color : COLOR; + float2 texcoord : TEXCOORD0; + float3 lightDir : TEXCOORD1; + LIGHTING_COORDS(3,4) + }; + + v2f vert(vin v) + { + v2f o; + + // particle positions are passed in world space, no need to use modelview matrix, just view. + float radius = v.t0.w * _RadiusScale; + float4 viewpos = mul(UNITY_MATRIX_V, v.vertex) + float4(v.corner.x, v.corner.y, 0, 0) * radius; // multiply by size. + o.pos = mul(UNITY_MATRIX_P, viewpos); + o.texcoord = float3(v.corner.x*0.5+0.5, v.corner.y*0.5+0.5, radius); + o.color = v.color * _Color; + + o.lightDir = mul ((float3x3)UNITY_MATRIX_MV, ObjSpaceLightDir(v.vertex)); + + TRANSFER_VERTEX_TO_FRAGMENT(o); + + return o; + } + + fixed4 frag(v2f i) : SV_Target + { + // generate sphere normals: + float3 n = BillboardSphereNormals(i.texcoord); + + // simple lighting: diffuse + float ndotl = saturate( dot( n, normalize(i.lightDir) ) ); + + // final lit color: + return fixed4(i.color.rgb * (_LightColor0 * ndotl + UNITY_LIGHTMODEL_AMBIENT),i.color.a); + } + + ENDCG + + } + + Pass { + Name "ShadowCaster" + Tags { "LightMode" = "ShadowCaster" } + Offset 1, 1 + + Fog {Mode Off} + ZWrite On ZTest LEqual + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + + #pragma multi_compile_shadowcaster nolightmap + + #include "ObiParticles.cginc" + + struct vin{ + float4 vertex : POSITION; + float3 corner : NORMAL; + float4 t0 : TEXCOORD0; // ellipsoid t1 vector + }; + + struct v2f { + float4 pos : POSITION; + float3 texcoord : TEXCOORD0; + }; + + v2f vert( vin v ) + { + v2f o; + + float radius = v.t0.w * _RadiusScale; + float4 viewpos = mul(UNITY_MATRIX_V, v.vertex) + float4(v.corner.x, v.corner.y, 0, 0) * radius; + o.pos = mul(UNITY_MATRIX_P, viewpos); + o.texcoord = float3(v.corner.x*0.5+0.5, v.corner.y*0.5+0.5, radius); + return o; + } + + fixed4 frag( v2f i ) : SV_Target + { + float3 n = BillboardSphereNormals(i.texcoord); + + return fixed4(0,0,0,0); + } + ENDCG + + } + + } +FallBack "Diffuse" +} + diff --git a/Assets/Obi/Resources/ObiMaterials/SimpleParticleShader.shader.meta b/Assets/Obi/Resources/ObiMaterials/SimpleParticleShader.shader.meta new file mode 100644 index 000000000..d7b7965c7 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/SimpleParticleShader.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 87908c483837f4df49e97fa1aa0dacda +timeCreated: 1489574725 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials/StandardVertexColors.shader b/Assets/Obi/Resources/ObiMaterials/StandardVertexColors.shader new file mode 100644 index 000000000..346c696cf --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/StandardVertexColors.shader @@ -0,0 +1,51 @@ +// Upgrade NOTE: upgraded instancing buffer 'Props' to new syntax. + +Shader "Standard (Vertex Colors)" { + Properties { + _Color ("Color", Color) = (1,1,1,1) + _MainTex ("Albedo (RGB)", 2D) = "white" {} + _Glossiness ("Smoothness", Range(0,1)) = 0.5 + _Metallic ("Metallic", Range(0,1)) = 0.0 + } + SubShader { + Tags { "RenderType"="Opaque" } + LOD 200 + + CGPROGRAM + // Physically based Standard lighting model, and enable shadows on all light types + #pragma surface surf Standard fullforwardshadows + + // Use shader model 3.0 target, to get nicer looking lighting + #pragma target 3.0 + + sampler2D _MainTex; + + struct Input { + float2 uv_MainTex; + float4 vcolor : COLOR; + }; + + half _Glossiness; + half _Metallic; + fixed4 _Color; + + // Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader. + // See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing. + // #pragma instancing_options assumeuniformscaling + UNITY_INSTANCING_BUFFER_START(Props) + // put more per-instance properties here + UNITY_INSTANCING_BUFFER_END(Props) + + void surf (Input IN, inout SurfaceOutputStandard o) { + // Albedo comes from a texture tinted by color + fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color * IN.vcolor; + o.Albedo = c.rgb; + // Metallic and smoothness come from slider variables + o.Metallic = _Metallic; + o.Smoothness = _Glossiness; + o.Alpha = c.a; + } + ENDCG + } + FallBack "Diffuse" +} diff --git a/Assets/Obi/Resources/ObiMaterials/StandardVertexColors.shader.meta b/Assets/Obi/Resources/ObiMaterials/StandardVertexColors.shader.meta new file mode 100644 index 000000000..c15af5724 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/StandardVertexColors.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 96c602bba0bc94471862812f91285c9a +timeCreated: 1505116095 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials/URP.meta b/Assets/Obi/Resources/ObiMaterials/URP.meta new file mode 100644 index 000000000..0507e4054 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/URP.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7377795ea5bbd404ba97de2909380e01 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials/URP/ObiLightingURP.cginc b/Assets/Obi/Resources/ObiMaterials/URP/ObiLightingURP.cginc new file mode 100644 index 000000000..aa1019617 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/URP/ObiLightingURP.cginc @@ -0,0 +1,36 @@ +#ifndef OBILIGHTINGBUILTURP_INCLUDED +#define OBILIGHTINGBUILTURP_INCLUDED + +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" +#include "Packages/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl" + +half3 SampleSphereAmbient(float3 eyeNormal) +{ + half3 worldNormal = mul(UNITY_MATRIX_I_V,half4(eyeNormal,0.0)); + return SampleSH(worldNormal); +} + +float3 ObjSpaceLightDir(in float4 modelPos) +{ + float3 lightPos = mul(unity_WorldToObject,_MainLightPosition).xyz; + float3 lightVector = lightPos.xyz - modelPos * _MainLightPosition.w; + return lightVector; +} + +float3 WorldSpaceLightDir(in float4 modelPos) +{ + float3 vertexPos = mul(unity_ObjectToWorld, modelPos).xyz; + float3 lightVector = _MainLightPosition.xyz - vertexPos * _MainLightPosition.w; + return lightVector; +} + +half Attenuation(float3 eyePos) +{ + half3 worldPos = mul(UNITY_MATRIX_I_V,half4(eyePos,1.0)); + float4 shadowCoord = TransformWorldToShadowCoord(worldPos); + Light mainLight = GetMainLight(shadowCoord); + return mainLight.shadowAttenuation * mainLight.distanceAttenuation; +} + +#endif diff --git a/Assets/Obi/Resources/ObiMaterials/URP/ObiLightingURP.cginc.meta b/Assets/Obi/Resources/ObiMaterials/URP/ObiLightingURP.cginc.meta new file mode 100644 index 000000000..7a766777a --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/URP/ObiLightingURP.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2231c15aefcd6484e9857cbb64ad8cd7 +timeCreated: 1445285630 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials/URP/ParticleShaderURP.shader b/Assets/Obi/Resources/ObiMaterials/URP/ParticleShaderURP.shader new file mode 100644 index 000000000..7d20e3601 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/URP/ParticleShaderURP.shader @@ -0,0 +1,236 @@ +Shader "Obi/URP/Particles" { + +Properties { + _Color ("Particle color", Color) = (1,1,1,1) + _RadiusScale("Radius scale",float) = 1 +} + + SubShader { + + Tags{"RenderPipeline" = "UniversalRenderPipeline"} + + Pass { + + Name "ParticleFwdBase" + Tags {"Queue"="Geometry" "IgnoreProjector"="True" "RenderType"="Opaque" "LightMode" = "UniversalForward"} + Blend SrcAlpha OneMinusSrcAlpha + + HLSLPROGRAM + + #pragma prefer_hlslcc gles + #pragma exclude_renderers d3d11_9x + #pragma target 2.0 + + #pragma vertex vert + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + + #pragma multi_compile _ _MAIN_LIGHT_SHADOWS + #pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE + #pragma multi_compile _ _SHADOWS_SOFT + + #include "../ObiUtils.cginc" + #include "ObiLightingURP.cginc" + #include "../ObiEllipsoids.cginc" + + float4 _Color; + float4 _LightColor0; + + struct vin{ + float4 vertex : POSITION; + float3 corner : NORMAL; + float4 color : COLOR; + float4 t0 : TEXCOORD0; // ellipsoid t1 vector + float4 t1 : TEXCOORD1; // ellipsoid t2 vector + float4 t2 : TEXCOORD2; // ellipsoid t3 vector + }; + + struct v2f + { + float4 pos : SV_POSITION; + float4 color : COLOR; + float4 mapping : TEXCOORD0; + float3 viewRay : TEXCOORD1; + float3 lightDir : TEXCOORD2; + float3 a2 : TEXCOORD3; + float3 a3 : TEXCOORD4; + }; + + struct fout + { + half4 color : SV_Target; + float depth : SV_Depth; + }; + + v2f vert(vin v) + { + float3x3 P, IP; + BuildParameterSpaceMatrices(v.t0,v.t1,v.t2,P,IP); + + float3 worldPos; + float3 view; + float3 eye; + float radius = BuildEllipsoidBillboard(v.vertex,v.corner,P,IP,worldPos,view,eye); + + v2f o; + o.pos = mul(UNITY_MATRIX_VP, float4(worldPos,v.vertex.w)); + o.mapping = float4(v.corner.xy,1/length(eye),radius); // A[1] + o.viewRay = mul((float3x3)UNITY_MATRIX_V,view); // A[0] + o.color = v.color * _Color; + + BuildAuxiliaryNormalVectors(v.vertex,worldPos,view,P,IP,o.a2,o.a3); + + o.lightDir = mul((float3x3)UNITY_MATRIX_MV, ObjSpaceLightDir(v.vertex)); + + return o; + } + + fout frag(v2f i) + { + fout fo; + + fo.color = half4(0,0,0,i.color.a); + + // generate sphere normals: + float3 p,n; + IntersectEllipsoid(i.viewRay,i.mapping, i.a2,i.a3, p, n); + + // clip space position: + float4 pos = mul(UNITY_MATRIX_P,float4(p,1.0)); + + // simple lighting: ambient + half3 amb = SampleSphereAmbient(n); + + // simple lighting: diffuse + float ndotl = saturate( dot( n, normalize(i.lightDir) ) ); + float atten = Attenuation(p); + + // final lit color: + fo.color.rgb = i.color * (_LightColor0 * ndotl * atten + amb); + + // normalized device coordinates: + fo.depth = pos.z/pos.w; + + // in openGL calculated depth range is <-1,1> map it to <0,1> + #if SHADER_API_OPENGL || SHADER_API_GLCORE || SHADER_API_GLES || SHADER_API_GLES3 + fo.depth = 0.5 * fo.depth + 0.5; + #endif + + return fo; + } + + ENDHLSL + + } + + Pass { + + Name "ShadowCaster" + Tags { "LightMode" = "ShadowCaster" } + Offset 1, 1 + + Fog {Mode Off} + ZWrite On ZTest LEqual + + HLSLPROGRAM + + #pragma prefer_hlslcc gles + #pragma exclude_renderers d3d11_9x + #pragma target 2.0 + + #pragma vertex ellipsoidShadowVS + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + + #pragma multi_compile_shadowcaster + + #include "../ObiUtils.cginc" + #include "ObiLightingURP.cginc" + #include "../ObiEllipsoids.cginc" + + sampler3D _DitherMaskLOD; + float4 _Color; + + struct vin{ + float4 vertex : POSITION; + float3 corner : NORMAL; + float4 color : COLOR; + float4 t0 : TEXCOORD0; // ellipsoid t1 vector + float4 t1 : TEXCOORD1; // ellipsoid t2 vector + float4 t2 : TEXCOORD2; // ellipsoid t3 vector + }; + + struct v2f { + float4 color : COLOR; + float4 mapping : TEXCOORD0; + float3 viewRay : TEXCOORD1; + float3 lightDir : TEXCOORD2; + float3 a2 : TEXCOORD3; + float3 a3 : TEXCOORD4; + }; + + struct fout + { + half4 color : SV_Target; + float depth : SV_Depth; + }; + + v2f ellipsoidShadowVS( vin v , out float4 outpos : SV_POSITION )// clip space position output + { + float3x3 P, IP; + BuildParameterSpaceMatrices(v.t0,v.t1,v.t2,P,IP); + + float3 worldPos; + float3 view; + float3 eye; + float radius = BuildEllipsoidBillboard(v.vertex,v.corner,P,IP,worldPos,view,eye); + + v2f o; + outpos = mul(UNITY_MATRIX_VP, float4(worldPos,v.vertex.w)); + o.mapping = float4(v.corner.xy,1/length(eye),radius); // A[1] + o.viewRay = mul((float3x3)UNITY_MATRIX_V,view); // A[0] + o.color = v.color * _Color; + + BuildAuxiliaryNormalVectors(v.vertex,worldPos,view,P,IP,o.a2,o.a3); + + o.lightDir = WorldSpaceLightDir(v.vertex); + return o; + } + + fout frag( v2f i ) + { + fout fo; + + float3 p,n; + IntersectEllipsoid(i.viewRay,i.mapping,i.a2,i.a3,p, n); + + // calculate world space position and normal: + float4 wnormal = mul(UNITY_MATRIX_I_V,float4(n,0)); + float4 wpos = mul(UNITY_MATRIX_I_V,float4(p,1)); + + // calculate clip space position. + float4 clipPos = TransformWorldToHClip(ApplyShadowBias(wpos, wnormal, normalize(i.lightDir))); + + #if UNITY_REVERSED_Z + clipPos.z = min(clipPos.z, clipPos.w * UNITY_NEAR_CLIP_VALUE); + #else + clipPos.z = max(clipPos.z, clipPos.w * UNITY_NEAR_CLIP_VALUE); + #endif + + fo.color = clipPos.z/clipPos.w; //similar to what SHADOW_CASTER_FRAGMENT does in case there's no depth buffer. + fo.depth = clipPos.z/clipPos.w; + + // in openGL calculated depth range is <-1,1> map it to <0,1> + #if SHADER_API_OPENGL || SHADER_API_GLCORE || SHADER_API_GLES || SHADER_API_GLES3 + fo.depth = fo.depth*0.5+0.5; + #endif + + return fo; + } + ENDHLSL + + } + + } +} + diff --git a/Assets/Obi/Resources/ObiMaterials/URP/ParticleShaderURP.shader.meta b/Assets/Obi/Resources/ObiMaterials/URP/ParticleShaderURP.shader.meta new file mode 100644 index 000000000..c201e984d --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/URP/ParticleShaderURP.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 28641a0edd6e047c6af7e3c6b342c81a +timeCreated: 1438934781 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials/URP/SimpleParticleShaderURP.shader b/Assets/Obi/Resources/ObiMaterials/URP/SimpleParticleShaderURP.shader new file mode 100644 index 000000000..95d2ee5d8 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/URP/SimpleParticleShaderURP.shader @@ -0,0 +1,145 @@ +Shader "Obi/URP/Simple Particles" { + +Properties { + _Color ("Particle color", Color) = (1,1,1,1) +} + + SubShader { + + Tags{"RenderPipeline" = "UniversalRenderPipeline"} + + Pass { + + Name "ParticleFwdBase" + Tags {"Queue"="Geometry" "IgnoreProjector"="True" "RenderType"="Opaque" "LightMode" = "UniversalForward"} + Blend SrcAlpha OneMinusSrcAlpha + + HLSLPROGRAM + + #pragma prefer_hlslcc gles + #pragma exclude_renderers d3d11_9x + #pragma target 2.0 + + #pragma vertex vert + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + + #pragma multi_compile _ _MAIN_LIGHT_SHADOWS + #pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE + #pragma multi_compile _ _SHADOWS_SOFT + + #include "../ObiUtils.cginc" + #include "ObiLightingURP.cginc" + #include "../ObiParticles.cginc" + + float4 _Color; + float4 _LightColor0; + + struct vin{ + float4 vertex : POSITION; + float3 corner : NORMAL; + float4 color : COLOR; + float4 t0 : TEXCOORD0; // ellipsoid t1 vector + }; + + struct v2f + { + float4 pos : POSITION; + float4 color : COLOR; + float2 texcoord : TEXCOORD0; + float3 lightDir : TEXCOORD1; + }; + + v2f vert(vin v) + { + v2f o; + + // particle positions are passed in world space, no need to use modelview matrix, just view. + float radius = v.t0.w * _RadiusScale; + float4 viewpos = mul(UNITY_MATRIX_V, v.vertex) + float4(v.corner.x, v.corner.y, 0, 0) * radius; // multiply by size. + o.pos = mul(UNITY_MATRIX_P, viewpos); + o.texcoord = float3(v.corner.x*0.5+0.5, v.corner.y*0.5+0.5, radius); + o.color = v.color * _Color; + + o.lightDir = mul ((float3x3)UNITY_MATRIX_MV, ObjSpaceLightDir(v.vertex)); + + return o; + } + + float4 frag(v2f i) : SV_Target + { + // generate sphere normals: + float3 n = BillboardSphereNormals(i.texcoord); + + // simple lighting: ambient + half3 amb = SampleSphereAmbient(n); + + // simple lighting: diffuse + float ndotl = saturate( dot( n, normalize(i.lightDir) ) ); + + // final lit color: + return float4(i.color.rgb * (_LightColor0 * ndotl + amb),i.color.a); + } + + ENDHLSL + + } + + Pass { + Name "ShadowCaster" + Tags { "LightMode" = "ShadowCaster" } + Offset 1, 1 + + Fog {Mode Off} + ZWrite On ZTest LEqual + + HLSLPROGRAM + #pragma prefer_hlslcc gles + #pragma exclude_renderers d3d11_9x + #pragma target 2.0 + + #pragma vertex vert + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + + #pragma multi_compile_shadowcaster + + #include "../ObiUtils.cginc" + #include "ObiLightingURP.cginc" + #include "../ObiParticles.cginc" + + struct vin{ + float4 vertex : POSITION; + float3 corner : NORMAL; + float4 t0 : TEXCOORD0; // ellipsoid t1 vector + }; + + struct v2f { + float4 pos : POSITION; + float3 texcoord : TEXCOORD0; + }; + + v2f vert( vin v ) + { + v2f o; + + float radius = v.t0.w * _RadiusScale; + float4 viewpos = mul(UNITY_MATRIX_V, v.vertex) + float4(v.corner.x, v.corner.y, 0, 0) * radius; + o.pos = mul(UNITY_MATRIX_P, viewpos); + o.texcoord = float3(v.corner.x*0.5+0.5, v.corner.y*0.5+0.5, radius); + return o; + } + + float4 frag( v2f i ) : SV_Target + { + float3 n = BillboardSphereNormals(i.texcoord); + + return float4(0,0,0,0); + } + ENDHLSL + + } + + } +} + diff --git a/Assets/Obi/Resources/ObiMaterials/URP/SimpleParticleShaderURP.shader.meta b/Assets/Obi/Resources/ObiMaterials/URP/SimpleParticleShaderURP.shader.meta new file mode 100644 index 000000000..72d99fd08 --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/URP/SimpleParticleShaderURP.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a8c46db5ccc10489cba075e7a9172ca6 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Resources/ObiMaterials/particle.png b/Assets/Obi/Resources/ObiMaterials/particle.png new file mode 100644 index 000000000..1eea413c7 Binary files /dev/null and b/Assets/Obi/Resources/ObiMaterials/particle.png differ diff --git a/Assets/Obi/Resources/ObiMaterials/particle.png.meta b/Assets/Obi/Resources/ObiMaterials/particle.png.meta new file mode 100644 index 000000000..7fc10cacb --- /dev/null +++ b/Assets/Obi/Resources/ObiMaterials/particle.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 568ceb11f52ec4d36abc82bcf61af795 +timeCreated: 1461823723 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples.meta b/Assets/Obi/Samples.meta new file mode 100644 index 000000000..086e2007c --- /dev/null +++ b/Assets/Obi/Samples.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3a2242974391642bcb80ee2090380780 +folderAsset: yes +timeCreated: 1435569439 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common.meta b/Assets/Obi/Samples/Common.meta new file mode 100644 index 000000000..7f1f79bf4 --- /dev/null +++ b/Assets/Obi/Samples/Common.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: db16dd818bde540c6a87fa0d2863c26a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources.meta b/Assets/Obi/Samples/Common/SampleResources.meta new file mode 100644 index 000000000..34abbc2c8 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dbcc2a84318854b0096382cb83b32e9f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations.meta b/Assets/Obi/Samples/Common/SampleResources/Animations.meta new file mode 100644 index 000000000..9ccfd3f01 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Animations.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 00e8d42e857fb4adcb53914d0948b16c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidCrouch.fbx b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidCrouch.fbx new file mode 100644 index 000000000..6bbd1c368 Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidCrouch.fbx differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidCrouch.fbx.meta b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidCrouch.fbx.meta new file mode 100644 index 000000000..a307593f6 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidCrouch.fbx.meta @@ -0,0 +1,1606 @@ +fileFormatVersion: 2 +guid: d89ea37480b6d75458aa38843e9688dc +labels: +- ObiCloth +- ObiRope +- ObiSoftbody +ModelImporter: + serializedVersion: 19301 + internalIDToNameTable: + - first: + 1: 100000 + second: Chest + - first: + 1: 100002 + second: //RootNode + - first: + 1: 100004 + second: Geo_grp + - first: + 1: 100006 + second: Head + - first: + 1: 100008 + second: Hips + - first: + 1: 100010 + second: Jaw + - first: + 1: 100012 + second: JawEND + - first: + 1: 100014 + second: Le_Eye_Mesh + - first: + 1: 100016 + second: LeftArm + - first: + 1: 100018 + second: LeftCheek + - first: + 1: 100020 + second: LeftEye + - first: + 1: 100022 + second: LeftEyelidLower + - first: + 1: 100024 + second: LeftEyelidUpper + - first: + 1: 100026 + second: LeftFoot + - first: + 1: 100028 + second: LeftForeArm + - first: + 1: 100030 + second: LeftHand + - first: + 1: 100032 + second: LeftHandIndex1 + - first: + 1: 100034 + second: LeftHandIndex2 + - first: + 1: 100036 + second: LeftHandIndex3 + - first: + 1: 100038 + second: LeftHandMiddle1 + - first: + 1: 100040 + second: LeftHandMiddle2 + - first: + 1: 100042 + second: LeftHandMiddle3 + - first: + 1: 100044 + second: LeftHandPinky1 + - first: + 1: 100046 + second: LeftHandPinky2 + - first: + 1: 100048 + second: LeftHandPinky3 + - first: + 1: 100050 + second: LeftHandRing1 + - first: + 1: 100052 + second: LeftHandRing2 + - first: + 1: 100054 + second: LeftHandRing3 + - first: + 1: 100056 + second: LeftHandThumb1 + - first: + 1: 100058 + second: LeftHandThumb2 + - first: + 1: 100060 + second: LeftHandThumb3 + - first: + 1: 100062 + second: LeftInnerBrow + - first: + 1: 100064 + second: LeftIOuterBrow + - first: + 1: 100066 + second: LeftLeg + - first: + 1: 100068 + second: LeftLipCorner + - first: + 1: 100070 + second: LeftLipLower + - first: + 1: 100072 + second: LeftLipUpper + - first: + 1: 100074 + second: LeftNostril + - first: + 1: 100076 + second: LeftShoulder + - first: + 1: 100078 + second: LeftToes + - first: + 1: 100080 + second: LeftUpLeg + - first: + 1: 100082 + second: Lw_Teeth_Mesh + - first: + 1: 100084 + second: Neck + - first: + 1: 100086 + second: Reference + - first: + 1: 100088 + second: Ri_Eye_Mesh + - first: + 1: 100090 + second: RightArm + - first: + 1: 100092 + second: RightCheek + - first: + 1: 100094 + second: RightEye + - first: + 1: 100096 + second: RightEyelidLower + - first: + 1: 100098 + second: RightEyelidUpper + - first: + 1: 100100 + second: RightFoot + - first: + 1: 100102 + second: RightForeArm + - first: + 1: 100104 + second: RightHand + - first: + 1: 100106 + second: RightHandIndex1 + - first: + 1: 100108 + second: RightHandIndex2 + - first: + 1: 100110 + second: RightHandIndex3 + - first: + 1: 100112 + second: RightHandMiddle1 + - first: + 1: 100114 + second: RightHandMiddle2 + - first: + 1: 100116 + second: RightHandMiddle3 + - first: + 1: 100118 + second: RightHandPinky1 + - first: + 1: 100120 + second: RightHandPinky2 + - first: + 1: 100122 + second: RightHandPinky3 + - first: + 1: 100124 + second: RightHandRing1 + - first: + 1: 100126 + second: RightHandRing2 + - first: + 1: 100128 + second: RightHandRing3 + - first: + 1: 100130 + second: RightHandThumb1 + - first: + 1: 100132 + second: RightHandThumb2 + - first: + 1: 100134 + second: RightHandThumb3 + - first: + 1: 100136 + second: RightInnerBrow + - first: + 1: 100138 + second: RightIOuterBrow + - first: + 1: 100140 + second: RightLeg + - first: + 1: 100142 + second: RightLipCorner + - first: + 1: 100144 + second: RightLipLower + - first: + 1: 100146 + second: RightLipUpper + - first: + 1: 100148 + second: RightNostril + - first: + 1: 100150 + second: RightShoulder + - first: + 1: 100152 + second: RightToes + - first: + 1: 100154 + second: RightUpLeg + - first: + 1: 100156 + second: Spine + - first: + 1: 100158 + second: TongueBack + - first: + 1: 100160 + second: TongueTip + - first: + 1: 100162 + second: Tounge_Mesh + - first: + 1: 100164 + second: Unity_Body_Mesh + - first: + 1: 100166 + second: Up_Teeth_Mesh + - first: + 4: 400000 + second: Chest + - first: + 4: 400002 + second: //RootNode + - first: + 4: 400004 + second: Geo_grp + - first: + 4: 400006 + second: Head + - first: + 4: 400008 + second: Hips + - first: + 4: 400010 + second: Jaw + - first: + 4: 400012 + second: JawEND + - first: + 4: 400014 + second: Le_Eye_Mesh + - first: + 4: 400016 + second: LeftArm + - first: + 4: 400018 + second: LeftCheek + - first: + 4: 400020 + second: LeftEye + - first: + 4: 400022 + second: LeftEyelidLower + - first: + 4: 400024 + second: LeftEyelidUpper + - first: + 4: 400026 + second: LeftFoot + - first: + 4: 400028 + second: LeftForeArm + - first: + 4: 400030 + second: LeftHand + - first: + 4: 400032 + second: LeftHandIndex1 + - first: + 4: 400034 + second: LeftHandIndex2 + - first: + 4: 400036 + second: LeftHandIndex3 + - first: + 4: 400038 + second: LeftHandMiddle1 + - first: + 4: 400040 + second: LeftHandMiddle2 + - first: + 4: 400042 + second: LeftHandMiddle3 + - first: + 4: 400044 + second: LeftHandPinky1 + - first: + 4: 400046 + second: LeftHandPinky2 + - first: + 4: 400048 + second: LeftHandPinky3 + - first: + 4: 400050 + second: LeftHandRing1 + - first: + 4: 400052 + second: LeftHandRing2 + - first: + 4: 400054 + second: LeftHandRing3 + - first: + 4: 400056 + second: LeftHandThumb1 + - first: + 4: 400058 + second: LeftHandThumb2 + - first: + 4: 400060 + second: LeftHandThumb3 + - first: + 4: 400062 + second: LeftInnerBrow + - first: + 4: 400064 + second: LeftIOuterBrow + - first: + 4: 400066 + second: LeftLeg + - first: + 4: 400068 + second: LeftLipCorner + - first: + 4: 400070 + second: LeftLipLower + - first: + 4: 400072 + second: LeftLipUpper + - first: + 4: 400074 + second: LeftNostril + - first: + 4: 400076 + second: LeftShoulder + - first: + 4: 400078 + second: LeftToes + - first: + 4: 400080 + second: LeftUpLeg + - first: + 4: 400082 + second: Lw_Teeth_Mesh + - first: + 4: 400084 + second: Neck + - first: + 4: 400086 + second: Reference + - first: + 4: 400088 + second: Ri_Eye_Mesh + - first: + 4: 400090 + second: RightArm + - first: + 4: 400092 + second: RightCheek + - first: + 4: 400094 + second: RightEye + - first: + 4: 400096 + second: RightEyelidLower + - first: + 4: 400098 + second: RightEyelidUpper + - first: + 4: 400100 + second: RightFoot + - first: + 4: 400102 + second: RightForeArm + - first: + 4: 400104 + second: RightHand + - first: + 4: 400106 + second: RightHandIndex1 + - first: + 4: 400108 + second: RightHandIndex2 + - first: + 4: 400110 + second: RightHandIndex3 + - first: + 4: 400112 + second: RightHandMiddle1 + - first: + 4: 400114 + second: RightHandMiddle2 + - first: + 4: 400116 + second: RightHandMiddle3 + - first: + 4: 400118 + second: RightHandPinky1 + - first: + 4: 400120 + second: RightHandPinky2 + - first: + 4: 400122 + second: RightHandPinky3 + - first: + 4: 400124 + second: RightHandRing1 + - first: + 4: 400126 + second: RightHandRing2 + - first: + 4: 400128 + second: RightHandRing3 + - first: + 4: 400130 + second: RightHandThumb1 + - first: + 4: 400132 + second: RightHandThumb2 + - first: + 4: 400134 + second: RightHandThumb3 + - first: + 4: 400136 + second: RightInnerBrow + - first: + 4: 400138 + second: RightIOuterBrow + - first: + 4: 400140 + second: RightLeg + - first: + 4: 400142 + second: RightLipCorner + - first: + 4: 400144 + second: RightLipLower + - first: + 4: 400146 + second: RightLipUpper + - first: + 4: 400148 + second: RightNostril + - first: + 4: 400150 + second: RightShoulder + - first: + 4: 400152 + second: RightToes + - first: + 4: 400154 + second: RightUpLeg + - first: + 4: 400156 + second: Spine + - first: + 4: 400158 + second: TongueBack + - first: + 4: 400160 + second: TongueTip + - first: + 4: 400162 + second: Tounge_Mesh + - first: + 4: 400164 + second: Unity_Body_Mesh + - first: + 4: 400166 + second: Up_Teeth_Mesh + - first: + 23: 2300000 + second: Le_Eye_Mesh + - first: + 23: 2300002 + second: Ri_Eye_Mesh + - first: + 33: 3300000 + second: Le_Eye_Mesh + - first: + 33: 3300002 + second: Ri_Eye_Mesh + - first: + 43: 4300000 + second: Unity_Body_Mesh + - first: + 43: 4300002 + second: Up_Teeth_Mesh + - first: + 43: 4300004 + second: Lw_Teeth_Mesh + - first: + 43: 4300006 + second: Tounge_Mesh + - first: + 43: 4300008 + second: Le_Eye_Mesh + - first: + 43: 4300010 + second: Ri_Eye_Mesh + - first: + 74: 7400000 + second: UNTY_Sneak_tk04 + - first: + 74: 7400002 + second: HumanoidCrouchIdle + - first: + 74: 7400004 + second: HumanoidCrouchWalk + - first: + 74: 7400006 + second: HumanoidCrouchWalkRight + - first: + 74: 7400008 + second: HumanoidCrouchWalkLeft + - first: + 74: 7400010 + second: HumanoidCrouchTurnRight + - first: + 74: 7400012 + second: HumanoidCrouchTurnLeft + - first: + 74: 7400014 + second: HumanoidCrouchWalkRightB + - first: + 95: 9500000 + second: //RootNode + - first: + 137: 13700000 + second: Lw_Teeth_Mesh + - first: + 137: 13700002 + second: Tounge_Mesh + - first: + 137: 13700004 + second: Unity_Body_Mesh + - first: + 137: 13700006 + second: Up_Teeth_Mesh + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 1 + materialSearch: 2 + materialLocation: 0 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: + - serializedVersion: 16 + name: HumanoidCrouchIdle + takeName: Take 001 + internalID: 0 + firstFrame: 264 + lastFrame: 319 + wrapMode: 0 + orientationOffsetY: -38 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 1 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidCrouchWalk + takeName: Take 001 + internalID: 0 + firstFrame: 105 + lastFrame: 159 + wrapMode: 0 + orientationOffsetY: -38 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 1 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidCrouchWalkRight + takeName: Take 001 + internalID: 0 + firstFrame: 2193 + lastFrame: 2245 + wrapMode: 0 + orientationOffsetY: -38 + level: 0 + cycleOffset: 0.3 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 1 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidCrouchWalkLeft + takeName: Take 001 + internalID: 0 + firstFrame: 1542 + lastFrame: 1610 + wrapMode: 0 + orientationOffsetY: -38 + level: 0 + cycleOffset: 0.71 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidCrouchTurnRight + takeName: Take 001 + internalID: 0 + firstFrame: 1932 + lastFrame: 1976 + wrapMode: 0 + orientationOffsetY: -38 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidCrouchTurnLeft + takeName: Take 001 + internalID: 0 + firstFrame: 1932 + lastFrame: 1976 + wrapMode: 0 + orientationOffsetY: 38 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 1 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidCrouchWalkRightB + takeName: Take 001 + internalID: 0 + firstFrame: 1542 + lastFrame: 1610 + wrapMode: 0 + orientationOffsetY: 38 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 1 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.01 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 0 + importBlendShapes: 0 + importCameras: 0 + importLights: 0 + fileIdsGeneration: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 4 + normalCalculationMode: 0 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: + - boneName: Hips + humanName: Hips + limit: + min: {x: -40, y: -40, z: -40} + max: {x: 40, y: 40, z: 40} + value: {x: 0.07488092, y: 0, z: 0.03744046} + length: 0.09360118 + modified: 1 + - boneName: LeftUpLeg + humanName: LeftUpperLeg + limit: + min: {x: -60.000004, y: -60.000004, z: -90} + max: {x: 60.000004, y: 60.000004, z: 50} + value: {x: 0.32776695, y: 0, z: 0.16388348} + length: 0.40970883 + modified: 1 + - boneName: RightUpLeg + humanName: RightUpperLeg + limit: + min: {x: -60.000004, y: -60.000004, z: -90} + max: {x: 60.000004, y: 60.000004, z: 50} + value: {x: 0.32776666, y: 0, z: 0.16388333} + length: 0.40970847 + modified: 1 + - boneName: LeftLeg + humanName: LeftLowerLeg + limit: + min: {x: -90, y: 0, z: -80} + max: {x: 90, y: 0, z: 80} + value: {x: 0.33868632, y: 0, z: 0.16934316} + length: 0.42335805 + modified: 1 + - boneName: RightLeg + humanName: RightLowerLeg + limit: + min: {x: -90, y: 0, z: -80} + max: {x: 90, y: 0, z: 80} + value: {x: 0.33868623, y: 0, z: 0.16934311} + length: 0.42335793 + modified: 1 + - boneName: LeftFoot + humanName: LeftFoot + limit: + min: {x: 0, y: -30.000002, z: -50} + max: {x: 0, y: 30.000002, z: 50} + value: {x: 0.068675205, y: 0, z: 0.034337603} + length: 0.08584404 + modified: 1 + - boneName: RightFoot + humanName: RightFoot + limit: + min: {x: 0, y: -30.000002, z: -50} + max: {x: 0, y: 30.000002, z: 50} + value: {x: 0.06867535, y: 0, z: 0.034337673} + length: 0.08584422 + modified: 1 + - boneName: Spine + humanName: Spine + limit: + min: {x: -40, y: -40, z: -40} + max: {x: 40, y: 40, z: 40} + value: {x: 0.13120191, y: 0, z: 0.065600954} + length: 0.16400246 + modified: 1 + - boneName: Chest + humanName: Chest + limit: + min: {x: -40, y: -40, z: -40} + max: {x: 40, y: 40, z: 40} + value: {x: 0.19035338, y: 0, z: 0.09517669} + length: 0.2379418 + modified: 1 + - boneName: Neck + humanName: Neck + limit: + min: {x: -40, y: -40, z: -40} + max: {x: 40, y: 40, z: 40} + value: {x: 0.08556566, y: 0, z: 0.04278283} + length: 0.10695711 + modified: 1 + - boneName: Head + humanName: Head + limit: + min: {x: -40, y: -40, z: -40} + max: {x: 40, y: 40, z: 40} + value: {x: 0.08556566, y: 0, z: 0.04278283} + length: 0.10695711 + modified: 1 + - boneName: LeftShoulder + humanName: LeftShoulder + limit: + min: {x: 0, y: -15.000001, z: -15.000001} + max: {x: 0, y: 15.000001, z: 30.000002} + value: {x: 0.07282954, y: 0, z: 0.03641477} + length: 0.09103696 + modified: 1 + - boneName: RightShoulder + humanName: RightShoulder + limit: + min: {x: 0, y: -15.000001, z: -15.000001} + max: {x: 0, y: 15.000001, z: 30.000002} + value: {x: 0.07282977, y: 0, z: 0.036414884} + length: 0.09103724 + modified: 1 + - boneName: LeftArm + humanName: LeftUpperArm + limit: + min: {x: -90, y: -100, z: -60.000004} + max: {x: 90, y: 100, z: 100} + value: {x: 0.20323958, y: 0, z: 0.10161979} + length: 0.25404954 + modified: 1 + - boneName: RightArm + humanName: RightUpperArm + limit: + min: {x: -90, y: -100, z: -60.000004} + max: {x: 90, y: 100, z: 100} + value: {x: 0.20323958, y: 0, z: 0.10161979} + length: 0.25404954 + modified: 1 + - boneName: LeftForeArm + humanName: LeftLowerArm + limit: + min: {x: -90, y: 0, z: -80} + max: {x: 90, y: 0, z: 80} + value: {x: 0.19711159, y: 0, z: 0.098555796} + length: 0.24638955 + modified: 1 + - boneName: RightForeArm + humanName: RightLowerArm + limit: + min: {x: -90, y: 0, z: -80} + max: {x: 90, y: 0, z: 80} + value: {x: 0.19711074, y: 0, z: 0.09855537} + length: 0.2463885 + modified: 1 + - boneName: LeftHand + humanName: LeftHand + limit: + min: {x: 0, y: -40, z: -80} + max: {x: 0, y: 40, z: 80} + value: {x: 0.098555796, y: 0, z: 0.049277898} + length: 0.12319478 + modified: 1 + - boneName: RightHand + humanName: RightHand + limit: + min: {x: 0, y: -40, z: -80} + max: {x: 0, y: 40, z: 80} + value: {x: 0.09855537, y: 0, z: 0.049277686} + length: 0.12319425 + modified: 1 + - boneName: LeftToes + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: -50} + max: {x: 0, y: 0, z: 50} + value: {x: 0.065187104, y: 0, z: 0.032593552} + length: 0.081483915 + modified: 1 + - boneName: RightToes + humanName: RightToes + limit: + min: {x: 0, y: 0, z: -50} + max: {x: 0, y: 0, z: 50} + value: {x: 0.065187216, y: 0, z: 0.032593608} + length: 0.08148406 + modified: 1 + - boneName: LeftCheek + humanName: LeftEye + limit: + min: {x: 0, y: -20, z: -10} + max: {x: 0, y: 20, z: 15.000001} + value: {x: 0.079999976, y: 0, z: 0.039999988} + length: 0.1 + modified: 1 + - boneName: RightCheek + humanName: RightEye + limit: + min: {x: 0, y: -20, z: -10} + max: {x: 0, y: 20, z: 15.000001} + value: {x: 0.079999976, y: 0, z: 0.039999988} + length: 0.1 + modified: 1 + - boneName: Jaw + humanName: Jaw + limit: + min: {x: 0, y: -10, z: -10} + max: {x: 0, y: 10, z: 10} + value: {x: 0.079999976, y: 0, z: 0.039999988} + length: 0.1 + modified: 1 + - boneName: LeftHandThumb1 + humanName: Left Thumb Proximal + limit: + min: {x: 0, y: -25, z: -20} + max: {x: 0, y: 25, z: 20} + value: {x: 0.023295432, y: 0, z: 0.011647716} + length: 0.0291193 + modified: 1 + - boneName: LeftHandThumb2 + humanName: Left Thumb Intermediate + limit: + min: {x: 0, y: 0, z: -40} + max: {x: 0, y: 0, z: 35} + value: {x: 0.027018217, y: 0, z: 0.013509109} + length: 0.03377278 + modified: 1 + - boneName: LeftHandThumb3 + humanName: Left Thumb Distal + limit: + min: {x: 0, y: 0, z: -40} + max: {x: 0, y: 0, z: 35} + value: {x: 0.020263663, y: 0, z: 0.010131831} + length: 0.025329586 + modified: 1 + - boneName: LeftHandIndex1 + humanName: Left Index Proximal + limit: + min: {x: 0, y: -20, z: -50} + max: {x: 0, y: 20, z: 50} + value: {x: 0.03185179, y: 0, z: 0.015925895} + length: 0.039814755 + modified: 1 + - boneName: LeftHandIndex2 + humanName: Left Index Intermediate + limit: + min: {x: 0, y: 0, z: -45} + max: {x: 0, y: 0, z: 45} + value: {x: 0.022374613, y: 0, z: 0.011187307} + length: 0.027968276 + modified: 1 + - boneName: LeftHandIndex3 + humanName: Left Index Distal + limit: + min: {x: 0, y: 0, z: -45} + max: {x: 0, y: 0, z: 45} + value: {x: 0.01678096, y: 0, z: 0.00839048} + length: 0.020976208 + modified: 1 + - boneName: LeftHandMiddle1 + humanName: Left Middle Proximal + limit: + min: {x: 0, y: -7.5000005, z: -50} + max: {x: 0, y: 7.5000005, z: 50} + value: {x: 0.03542536, y: 0, z: 0.01771268} + length: 0.044281717 + modified: 1 + - boneName: LeftHandMiddle2 + humanName: Left Middle Intermediate + limit: + min: {x: 0, y: 0, z: -45} + max: {x: 0, y: 0, z: 45} + value: {x: 0.027171798, y: 0, z: 0.013585899} + length: 0.033964757 + modified: 1 + - boneName: LeftHandMiddle3 + humanName: Left Middle Distal + limit: + min: {x: 0, y: 0, z: -45} + max: {x: 0, y: 0, z: 45} + value: {x: 0.020378849, y: 0, z: 0.010189424} + length: 0.025473569 + modified: 1 + - boneName: LeftHandRing1 + humanName: Left Ring Proximal + limit: + min: {x: 0, y: -7.5000005, z: -50} + max: {x: 0, y: 7.5000005, z: 50} + value: {x: 0.034554895, y: 0, z: 0.017277448} + length: 0.043193635 + modified: 1 + - boneName: LeftHandRing2 + humanName: Left Ring Intermediate + limit: + min: {x: 0, y: 0, z: -45} + max: {x: 0, y: 0, z: 45} + value: {x: 0.024668528, y: 0, z: 0.012334264} + length: 0.030835668 + modified: 1 + - boneName: LeftHandRing3 + humanName: Left Ring Distal + limit: + min: {x: 0, y: 0, z: -45} + max: {x: 0, y: 0, z: 45} + value: {x: 0.018501393, y: 0, z: 0.009250697} + length: 0.023126751 + modified: 1 + - boneName: LeftHandPinky1 + humanName: Left Little Proximal + limit: + min: {x: 0, y: -20, z: -50} + max: {x: 0, y: 20, z: 50} + value: {x: 0.024671454, y: 0, z: 0.012335727} + length: 0.030839326 + modified: 1 + - boneName: LeftHandPinky2 + humanName: Left Little Intermediate + limit: + min: {x: 0, y: 0, z: -45} + max: {x: 0, y: 0, z: 45} + value: {x: 0.018451294, y: 0, z: 0.009225647} + length: 0.023064125 + modified: 1 + - boneName: LeftHandPinky3 + humanName: Left Little Distal + limit: + min: {x: 0, y: 0, z: -45} + max: {x: 0, y: 0, z: 45} + value: {x: 0.013838473, y: 0, z: 0.0069192364} + length: 0.017298095 + modified: 1 + - boneName: RightHandThumb1 + humanName: Right Thumb Proximal + limit: + min: {x: 0, y: -25, z: -20} + max: {x: 0, y: 25, z: 20} + value: {x: 0.023295509, y: 0, z: 0.011647754} + length: 0.029119395 + modified: 1 + - boneName: RightHandThumb2 + humanName: Right Thumb Intermediate + limit: + min: {x: 0, y: 0, z: -40} + max: {x: 0, y: 0, z: 35} + value: {x: 0.027018152, y: 0, z: 0.013509076} + length: 0.0337727 + modified: 1 + - boneName: RightHandThumb3 + humanName: Right Thumb Distal + limit: + min: {x: 0, y: 0, z: -40} + max: {x: 0, y: 0, z: 35} + value: {x: 0.020263612, y: 0, z: 0.010131806} + length: 0.025329525 + modified: 1 + - boneName: RightHandIndex1 + humanName: Right Index Proximal + limit: + min: {x: 0, y: -20, z: -50} + max: {x: 0, y: 20, z: 50} + value: {x: 0.03185103, y: 0, z: 0.015925515} + length: 0.039813805 + modified: 1 + - boneName: RightHandIndex2 + humanName: Right Index Intermediate + limit: + min: {x: 0, y: 0, z: -45} + max: {x: 0, y: 0, z: 45} + value: {x: 0.022374721, y: 0, z: 0.011187361} + length: 0.02796841 + modified: 1 + - boneName: RightHandIndex3 + humanName: Right Index Distal + limit: + min: {x: 0, y: 0, z: -45} + max: {x: 0, y: 0, z: 45} + value: {x: 0.01678104, y: 0, z: 0.00839052} + length: 0.020976309 + modified: 1 + - boneName: RightHandMiddle1 + humanName: Right Middle Proximal + limit: + min: {x: 0, y: -7.5000005, z: -50} + max: {x: 0, y: 7.5000005, z: 50} + value: {x: 0.03542583, y: 0, z: 0.017712915} + length: 0.044282306 + modified: 1 + - boneName: RightHandMiddle2 + humanName: Right Middle Intermediate + limit: + min: {x: 0, y: 0, z: -45} + max: {x: 0, y: 0, z: 45} + value: {x: 0.027171882, y: 0, z: 0.013585941} + length: 0.03396486 + modified: 1 + - boneName: RightHandMiddle3 + humanName: Right Middle Distal + limit: + min: {x: 0, y: 0, z: -45} + max: {x: 0, y: 0, z: 45} + value: {x: 0.02037891, y: 0, z: 0.010189455} + length: 0.025473647 + modified: 1 + - boneName: RightHandRing1 + humanName: Right Ring Proximal + limit: + min: {x: 0, y: -7.5000005, z: -50} + max: {x: 0, y: 7.5000005, z: 50} + value: {x: 0.034554813, y: 0, z: 0.017277407} + length: 0.043193534 + modified: 1 + - boneName: RightHandRing2 + humanName: Right Ring Intermediate + limit: + min: {x: 0, y: 0, z: -45} + max: {x: 0, y: 0, z: 45} + value: {x: 0.024668118, y: 0, z: 0.012334059} + length: 0.030835157 + modified: 1 + - boneName: RightHandRing3 + humanName: Right Ring Distal + limit: + min: {x: 0, y: 0, z: -45} + max: {x: 0, y: 0, z: 45} + value: {x: 0.018501086, y: 0, z: 0.009250543} + length: 0.023126367 + modified: 1 + - boneName: RightHandPinky1 + humanName: Right Little Proximal + limit: + min: {x: 0, y: -20, z: -50} + max: {x: 0, y: 20, z: 50} + value: {x: 0.024671743, y: 0, z: 0.012335871} + length: 0.030839687 + modified: 1 + - boneName: RightHandPinky2 + humanName: Right Little Intermediate + limit: + min: {x: 0, y: 0, z: -45} + max: {x: 0, y: 0, z: 45} + value: {x: 0.01845131, y: 0, z: 0.009225655} + length: 0.023064148 + modified: 1 + - boneName: RightHandPinky3 + humanName: Right Little Distal + limit: + min: {x: 0, y: 0, z: -45} + max: {x: 0, y: 0, z: 45} + value: {x: 0.013838484, y: 0, z: 0.006919242} + length: 0.01729811 + modified: 1 + skeleton: + - name: + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 0.99999994} + scale: {x: 1, y: 1, z: 1} + - name: Reference + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: -0, z: 0, w: 0.99999994} + scale: {x: 1, y: 1, z: 1} + - name: Hips + parentName: + position: {x: 0.000000003420778, y: 0.9637937, z: -0.023506781} + rotation: {x: 0.0000000058207665, y: 0.000000046566125, z: -0.000000002910383, + w: 0.99999994} + scale: {x: 0.99999946, y: 0.99999946, z: 0.9999996} + - name: LeftUpLeg + parentName: + position: {x: -0.07544946, y: -0.045663476, z: 0.000000004680685} + rotation: {x: -0.000000040745363, y: -0.000000034924593, z: -0.000000043655735, + w: 0.99999994} + scale: {x: 1, y: 1.0000004, z: 1.0000004} + - name: LeftLeg + parentName: + position: {x: -0.020550437, y: -0.40913045, z: 0.007171332} + rotation: {x: 0.000000023283068, y: -0.000000046566125, z: 0.000000034924586, + w: 0.99999994} + scale: {x: 1.0000002, y: 1.0000002, z: 0.99999976} + - name: LeftFoot + parentName: + position: {x: -0.005153036, y: -0.42315567, z: -0.012032095} + rotation: {x: 0.000000011641531, y: 0.000000069849186, z: 0.0000000116529, w: 0.99999994} + scale: {x: 1.0000001, y: 1.0000001, z: 1.0000001} + - name: LeftToes + parentName: + position: {x: -0.007486987, y: -0.073167294, z: 0.14542708} + rotation: {x: 4.547473e-11, y: -0.000000011641531, z: 7.2082504e-19, w: 0.99999994} + scale: {x: 1, y: 1.0000001, z: 0.99999994} + - name: RightUpLeg + parentName: + position: {x: 0.07544952, y: -0.045663774, z: 0.00000006530038} + rotation: {x: -0.000000012369126, y: -0.000000048021317, z: -0.00000003201421, + w: 0.99999994} + scale: {x: 1, y: 1.0000002, z: 0.9999998} + - name: RightLeg + parentName: + position: {x: 0.02055048, y: -0.40913016, z: 0.0071712695} + rotation: {x: 0.000000012369127, y: 0.0000000014551914, z: 0.000000034924593, + w: 0.99999994} + scale: {x: 1.0000001, y: 1, z: 1.0000002} + - name: RightFoot + parentName: + position: {x: 0.005152988, y: -0.42315567, z: -0.012032033} + rotation: {x: -0.0000000069121593, y: 0.000000011641533, z: -2.2809578e-16, + w: 0.99999994} + scale: {x: 1.0000001, y: 1.0000001, z: 1} + - name: RightToes + parentName: + position: {x: 0.007487003, y: -0.07316727, z: 0.14542744} + rotation: {x: 0.0000000011368682, y: -1.7763567e-15, z: -4.5204124e-24, w: 0.99999994} + scale: {x: 1, y: 1.0000001, z: 0.9999999} + - name: Spine + parentName: + position: {x: -0.000000030014874, y: 0.09226292, z: 0.015771328} + rotation: {x: -0.000000017462298, y: -0.000000046566125, z: 0.000000014551914, + w: 0.99999994} + scale: {x: 0.99999994, y: 1.0000002, z: 1} + - name: Chest + parentName: + position: {x: 0.00000011777962, y: 0.16254044, z: 0.02185077} + rotation: {x: -0.0000000029103828, y: 3.0493183e-16, z: -0.000000011641531, + w: 0.99999994} + scale: {x: 1, y: 1, z: 1.0000001} + - name: LeftShoulder + parentName: + position: {x: -0.03824366, y: 0.19217837, z: -0.017063193} + rotation: {x: -0.01400665, y: -0.059506647, z: 0.22868995, w: 0.9715779} + scale: {x: 1.0000002, y: 1.0000001, z: 1.0000004} + - name: LeftArm + parentName: + position: {x: -0.08357463, y: 0.03609732, z: 0.000000020265247} + rotation: {x: 0.009464342, y: 0.04369152, z: -0.22304243, w: 0.9737831} + scale: {x: 1.0000002, y: 0.9999999, z: 0.9999996} + - name: LeftForeArm + parentName: + position: {x: -0.2540495, y: 0.0000012203175, z: 0.000000031997644} + rotation: {x: -0.000616517, y: 0.022078605, z: -0.016070267, w: 0.9996268} + scale: {x: 1, y: 1.0000001, z: 1.0000001} + - name: LeftHand + parentName: + position: {x: -0.24638961, y: -0.0000004356809, z: -0.000000097588526} + rotation: {x: -0.0000000040215444, y: -0.0000000014466176, z: -0.021413522, + w: 0.99977064} + scale: {x: 1.0000001, y: 0.99999994, z: 1.0000001} + - name: LeftHandIndex1 + parentName: + position: {x: -0.07512589, y: -0.007840601, z: 0.032652866} + rotation: {x: -0.002118898, y: 0.080257535, z: 0.017538164, w: 0.99661756} + scale: {x: 0.9999995, y: 1, z: 0.99999976} + - name: LeftHandIndex2 + parentName: + position: {x: -0.03979707, y: 0.000049156493, z: 0.0011855599} + rotation: {x: 0.0005019677, y: 0.015470429, z: 0.040418617, w: 0.9990629} + scale: {x: 0.9999998, y: 1, z: 1} + - name: LeftHandIndex3 + parentName: + position: {x: -0.027968287, y: -0.0000001673816, z: -0.000000006327597} + rotation: {x: 0.00000003693085, y: 0.0000000060584737, z: 0.0000000074492807, + w: 0.99999994} + scale: {x: 1.0000001, y: 0.99999994, z: 1.0000002} + - name: LeftHandMiddle1 + parentName: + position: {x: -0.07602385, y: -0.0018848398, z: 0.010141197} + rotation: {x: -0.00076882704, y: 0.03332109, z: 0.02090747, w: 0.9992256} + scale: {x: 0.9999997, y: 1.0000001, z: 1.0000001} + - name: LeftHandMiddle2 + parentName: + position: {x: -0.044279672, y: 0.0000032586229, z: -0.0004252049} + rotation: {x: -0.0013623764, y: -0.019156396, z: 0.037906256, w: 0.9990967} + scale: {x: 0.9999998, y: 0.99999946, z: 1.0000001} + - name: LeftHandMiddle3 + parentName: + position: {x: -0.03396477, y: 0.00000028624947, z: -0.00000008297176} + rotation: {x: 0.000000023254684, y: 0.0000000026477707, z: 2.9340314e-10, w: 0.99999994} + scale: {x: 0.99999905, y: 0.99999976, z: 0.99999917} + - name: LeftHandPinky1 + parentName: + position: {x: -0.06565957, y: -0.007825206, z: -0.032251015} + rotation: {x: -0.0009145346, y: 0.012165429, z: 0.021213954, w: 0.9997005} + scale: {x: 0.9999995, y: 0.9999998, z: 0.9999997} + - name: LeftHandPinky2 + parentName: + position: {x: -0.030805344, y: -0.000032008138, z: -0.0014482754} + rotation: {x: -0.0001706246, y: -0.009661511, z: -0.0053624306, w: 0.9999389} + scale: {x: 1.0000002, y: 1.0000001, z: 1.0000002} + - name: LeftHandPinky3 + parentName: + position: {x: -0.023064144, y: -0.000006313961, z: 0.00000014968992} + rotation: {x: 0.000000020285533, y: 5.3250866e-11, z: 0.0000000018177555, w: 0.99999994} + scale: {x: 0.99999994, y: 0.9999998, z: 1.0000001} + - name: LeftHandRing1 + parentName: + position: {x: -0.070301965, y: -0.0037463123, z: -0.011411641} + rotation: {x: -0.00032336084, y: 0.011597181, z: 0.024741888, w: 0.9996265} + scale: {x: 0.9999996, y: 0.9999999, z: 0.9999995} + - name: LeftHandRing2 + parentName: + position: {x: -0.043135807, y: -0.000019465462, z: -0.0022352997} + rotation: {x: -0.001202973, y: -0.023114625, z: 0.040969316, w: 0.99889225} + scale: {x: 1, y: 1.0000002, z: 1} + - name: LeftHandRing3 + parentName: + position: {x: -0.030835683, y: 0.00000023953257, z: -0.0000000071947692} + rotation: {x: -6.0883787e-10, y: 0.000000011234937, z: -0.0000000073494038, + w: 0.99999994} + scale: {x: 1.0000004, y: 1.0000006, z: 1.0000005} + - name: LeftHandThumb1 + parentName: + position: {x: -0.01423043, y: -0.012378788, z: 0.025531763} + rotation: {x: -0.012324756, y: -0.008528229, z: 0.012576243, w: 0.9998085} + scale: {x: 0.9999996, y: 0.9999999, z: 0.9999994} + - name: LeftHandThumb2 + parentName: + position: {x: -0.016373867, y: -0.0052906317, z: 0.02349131} + rotation: {x: -0.026051307, y: 0.09669113, z: 0.0036181216, w: 0.9949668} + scale: {x: 1.0000005, y: 1, z: 1.0000004} + - name: LeftHandThumb3 + parentName: + position: {x: -0.025460243, y: -0.007639219, z: 0.020833112} + rotation: {x: 0.000000024680102, y: 6.8904875e-11, z: -0.000000021420592, w: 0.99999994} + scale: {x: 0.9999998, y: 1, z: 1} + - name: Neck + parentName: + position: {x: -0.000000051968883, y: 0.23572385, z: -0.032413278} + rotation: {x: -0.000000008731148, y: -0.000000023283063, z: 0.000000023283063, + w: 0.99999994} + scale: {x: 1.0000001, y: 1, z: 1.0000001} + - name: Head + parentName: + position: {x: 0.00000005993163, y: 0.10635579, z: 0.011326779} + rotation: {x: 0.000000011641531, y: 0.000000011641531, z: -0.000000017462296, + w: 0.99999994} + scale: {x: 1.0000001, y: 1, z: 0.99999994} + - name: Jaw + parentName: + position: {x: -0.000000107955245, y: 0.011126757, z: 0.010327594} + rotation: {x: -1.7085941e-15, y: 0.000000011641531, z: 1.3552528e-16, w: 0.99999994} + scale: {x: 1, y: 1, z: 1} + - name: LeftCheek + parentName: + position: {x: -0.054244056, y: 0.033701897, z: 0.05943042} + rotation: {x: -1.7085941e-15, y: 0.000000011641531, z: 1.3552528e-16, w: 0.99999994} + scale: {x: 1, y: 1, z: 1} + - name: RightCheek + parentName: + position: {x: 0.054239996, y: 0.033702735, z: 0.059427407} + rotation: {x: -8.2041573e-16, y: 0.000000011641531, z: -3.0856389e-16, w: 0.99999994} + scale: {x: 0.9999999, y: 1, z: 0.9999999} + - name: RightShoulder + parentName: + position: {x: 0.03832833, y: 0.19217694, z: -0.017063143} + rotation: {x: 0.22867185, y: 0.9715821, z: -0.014005656, w: -0.059507396} + scale: {x: 1.0000006, y: 1.0000002, z: 1.0000005} + - name: RightArm + parentName: + position: {x: -0.08357558, y: 0.03609574, z: -0.000000029716258} + rotation: {x: -0.21105197, y: -0.9743941, z: 0.017311687, w: -0.07558777} + scale: {x: 0.9999997, y: 0.9999998, z: 0.99999946} + - name: RightForeArm + parentName: + position: {x: 0.2534285, y: 0.006011792, z: -0.016704384} + rotation: {x: -0.00061650056, y: 0.022078631, z: -0.0160702, w: 0.9996268} + scale: {x: 0.9999998, y: 0.9999999, z: 1.0000001} + - name: RightHand + parentName: + position: {x: 0.2453735, y: 0.021642858, z: 0.005550441} + rotation: {x: -0.000000008053431, y: -0.0000000034378973, z: 0.021413656, w: 0.99977064} + scale: {x: 1.0000001, y: 1.0000001, z: 0.99999994} + - name: RightHandIndex1 + parentName: + position: {x: 0.07476965, y: -0.0012431623, z: 0.03434429} + rotation: {x: -0.0021189342, y: 0.08025755, z: 0.01753817, w: 0.99661756} + scale: {x: 0.9999998, y: 0.9999998, z: 0.9999998} + - name: RightHandIndex2 + parentName: + position: {x: 0.037057333, y: 0.00072398706, z: 0.014538536} + rotation: {x: -0.003317825, y: 0.015930962, z: 0.060612474, w: 0.9980287} + scale: {x: 1.0000001, y: 1, z: 0.9999999} + - name: RightHandIndex3 + parentName: + position: {x: 0.025224932, y: -0.004966664, z: 0.011012176} + rotation: {x: -0.0000000072606965, y: -0.000000014510702, z: 0.000000021814063, + w: 0.99999994} + scale: {x: 0.9999996, y: 1.0000001, z: 0.9999998} + - name: RightHandMiddle1 + parentName: + position: {x: 0.075647466, y: 0.0047889254, z: 0.011852965} + rotation: {x: -0.00076884025, y: 0.033321116, z: 0.020907495, w: 0.9992256} + scale: {x: 0.9999994, y: 0.9999994, z: 0.99999964} + - name: RightHandMiddle2 + parentName: + position: {x: 0.043808915, y: 0.00019497107, z: 0.006455048} + rotation: {x: -0.004132333, y: -0.033515185, z: 0.076134786, w: 0.99652547} + scale: {x: 1.0000004, y: 1, z: 1.0000002} + - name: RightHandMiddle3 + parentName: + position: {x: 0.033072464, y: -0.0075478614, z: 0.001689939} + rotation: {x: 0.000000007694444, y: 0.000000012538279, z: 0.00000001496488, + w: 0.99999994} + scale: {x: 0.9999999, y: 1.0000004, z: 1} + - name: RightHandPinky1 + parentName: + position: {x: 0.06680355, y: -0.0019955318, z: -0.030756485} + rotation: {x: 0.003173737, y: -0.19200227, z: 0.04509884, w: 0.9803525} + scale: {x: 0.9999999, y: 0.9999996, z: 0.99999964} + - name: RightHandPinky2 + parentName: + position: {x: 0.028531067, y: -0.0013964743, z: -0.011623872} + rotation: {x: -0.0001706358, y: -0.009661335, z: -0.005362384, w: 0.9999389} + scale: {x: 1.0000001, y: 1, z: 1.0000001} + - name: RightHandPinky3 + parentName: + position: {x: 0.02142699, y: -0.00055320613, z: -0.008516695} + rotation: {x: 0.00000003903606, y: -6.273581e-10, z: -0.000000018667484, w: 0.99999994} + scale: {x: 1.0000001, y: 1, z: 0.9999999} + - name: RightHandRing1 + parentName: + position: {x: 0.07059858, y: 0.0024570879, z: -0.0098215975} + rotation: {x: 0.0007096797, y: -0.054340865, z: 0.034945406, w: 0.9979105} + scale: {x: 1.0000001, y: 0.9999998, z: 0.9999999} + - name: RightHandRing2 + parentName: + position: {x: 0.042887382, y: -0.0013771269, z: -0.0049458374} + rotation: {x: 0.00048145253, y: -0.021291228, z: 0.069840446, w: 0.9973308} + scale: {x: 0.9999994, y: 0.9999997, z: 0.9999997} + - name: RightHandRing3 + parentName: + position: {x: 0.029500201, y: -0.0076928795, z: -0.004622282} + rotation: {x: -0.000000033512727, y: 0.0000000024590014, z: -0.000000013602535, + w: 0.99999994} + scale: {x: 1.0000002, y: 0.9999999, z: 0.9999999} + - name: RightHandThumb1 + parentName: + position: {x: 0.014684568, y: -0.011106988, z: 0.025857938} + rotation: {x: -0.012812216, y: -0.0032559405, z: 0.03145679, w: 0.9994176} + scale: {x: 0.9999997, y: 0.9999998, z: 0.9999996} + - name: RightHandThumb2 + parentName: + position: {x: 0.016373863, y: -0.005290227, z: 0.023491487} + rotation: {x: -0.026058614, y: -0.0966914, z: -0.003611872, w: 0.9949666} + scale: {x: 0.9999999, y: 1, z: 1} + - name: RightHandThumb3 + parentName: + position: {x: 0.025460098, y: -0.0076398263, z: 0.020832997} + rotation: {x: 0.000000022915208, y: 0.000000046580055, z: -0.000000004598952, + w: 0.99999994} + scale: {x: 1.0000002, y: 0.9999998, z: 1} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 0.01 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidIdle.fbx b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidIdle.fbx new file mode 100644 index 000000000..4ae25cb2e Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidIdle.fbx differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidIdle.fbx.meta b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidIdle.fbx.meta new file mode 100644 index 000000000..64095f575 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidIdle.fbx.meta @@ -0,0 +1,2376 @@ +fileFormatVersion: 2 +guid: dffa50cfe77e0434bbfa71245b3dd529 +labels: +- ObiCloth +- ObiRope +- ObiSoftbody +ModelImporter: + serializedVersion: 19301 + internalIDToNameTable: + - first: + 1: 100000 + second: Chest + - first: + 1: 100002 + second: chestProxy_geo + - first: + 1: 100004 + second: //RootNode + - first: + 1: 100006 + second: Head + - first: + 1: 100008 + second: headProxy_geo + - first: + 1: 100010 + second: HeadTop_End + - first: + 1: 100012 + second: Hips + - first: + 1: 100014 + second: Jaw + - first: + 1: 100016 + second: JawEND + - first: + 1: 100018 + second: jawProxy_geo + - first: + 1: 100020 + second: l_ankleProxy_geo + - first: + 1: 100022 + second: l_ballProxy_geo + - first: + 1: 100024 + second: l_clavicleProxy_geo + - first: + 1: 100026 + second: l_erbowProxy_geo + - first: + 1: 100028 + second: l_hipProxy_geo + - first: + 1: 100030 + second: l_indexProxy_01_geo + - first: + 1: 100032 + second: l_indexProxy_02_geo + - first: + 1: 100034 + second: l_indexProxy_03_geo + - first: + 1: 100036 + second: l_kneeProxy_geo + - first: + 1: 100038 + second: l_middleProxy_01_geo + - first: + 1: 100040 + second: l_middleProxy_02_geo + - first: + 1: 100042 + second: l_middleProxy_03_geo + - first: + 1: 100044 + second: l_pinkyProxy_01_geo + - first: + 1: 100046 + second: l_pinkyProxy_02_geo + - first: + 1: 100048 + second: l_pinkyProxy_03_geo + - first: + 1: 100050 + second: l_ringProxy_01_geo + - first: + 1: 100052 + second: l_ringProxy_02_geo + - first: + 1: 100054 + second: l_ringProxy_03_geo + - first: + 1: 100056 + second: l_shourderProxy_geo + - first: + 1: 100058 + second: l_thumbProxy_01_geo + - first: + 1: 100060 + second: l_thumbProxy_02_geo + - first: + 1: 100062 + second: l_thumbProxy_03_geo + - first: + 1: 100064 + second: l_UNI_eye + - first: + 1: 100066 + second: l_wristProxy_geo + - first: + 1: 100068 + second: LeftArm + - first: + 1: 100070 + second: LeftCheek + - first: + 1: 100072 + second: LeftEye + - first: + 1: 100074 + second: LeftEyelidLower + - first: + 1: 100076 + second: LeftEyelidUpper + - first: + 1: 100078 + second: LeftFoot + - first: + 1: 100080 + second: LeftForeArm + - first: + 1: 100082 + second: LeftHand + - first: + 1: 100084 + second: LeftHandIndex1 + - first: + 1: 100086 + second: LeftHandIndex13 + - first: + 1: 100088 + second: LeftHandIndex17 + - first: + 1: 100090 + second: LeftHandIndex2 + - first: + 1: 100092 + second: LeftHandIndex3 + - first: + 1: 100094 + second: LeftHandMiddle1 + - first: + 1: 100096 + second: LeftHandMiddle13 + - first: + 1: 100098 + second: LeftHandMiddle17 + - first: + 1: 100100 + second: LeftHandMiddle2 + - first: + 1: 100102 + second: LeftHandMiddle3 + - first: + 1: 100104 + second: LeftHandPinky1 + - first: + 1: 100106 + second: LeftHandPinky13 + - first: + 1: 100108 + second: LeftHandPinky17 + - first: + 1: 100110 + second: LeftHandPinky2 + - first: + 1: 100112 + second: LeftHandPinky3 + - first: + 1: 100114 + second: LeftHandRing1 + - first: + 1: 100116 + second: LeftHandRing13 + - first: + 1: 100118 + second: LeftHandRing17 + - first: + 1: 100120 + second: LeftHandRing2 + - first: + 1: 100122 + second: LeftHandRing3 + - first: + 1: 100124 + second: LeftHandThumb1 + - first: + 1: 100126 + second: LeftHandThumb13 + - first: + 1: 100128 + second: LeftHandThumb17 + - first: + 1: 100130 + second: LeftHandThumb2 + - first: + 1: 100132 + second: LeftHandThumb3 + - first: + 1: 100134 + second: LeftInnerBrow + - first: + 1: 100136 + second: LeftIOuterBrow + - first: + 1: 100138 + second: LeftLeg + - first: + 1: 100140 + second: LeftLipCorner + - first: + 1: 100142 + second: LeftLipLower + - first: + 1: 100144 + second: LeftLipUpper + - first: + 1: 100146 + second: LeftNostril + - first: + 1: 100148 + second: LeftShoulder + - first: + 1: 100150 + second: LeftToes + - first: + 1: 100152 + second: LeftUpLeg + - first: + 1: 100154 + second: LToeBase_End2 + - first: + 1: 100156 + second: LToeBase_End3 + - first: + 1: 100158 + second: Neck + - first: + 1: 100160 + second: neckProxy_geo + - first: + 1: 100162 + second: pelvisProxy_geo + - first: + 1: 100164 + second: Pivot + - first: + 1: 100166 + second: r_ankleProxy_geo + - first: + 1: 100168 + second: r_ballProxy_geo + - first: + 1: 100170 + second: r_clavicleProxy_geo + - first: + 1: 100172 + second: r_erbowProxy_geo + - first: + 1: 100174 + second: r_hipProxy_geo + - first: + 1: 100176 + second: r_indexProxy_01_geo + - first: + 1: 100178 + second: r_indexProxy_02_geo + - first: + 1: 100180 + second: r_indexProxy_03_geo + - first: + 1: 100182 + second: r_kneeProxy_geo + - first: + 1: 100184 + second: r_middleProxy_01_geo + - first: + 1: 100186 + second: r_middleProxy_02_geo + - first: + 1: 100188 + second: r_middleProxy_03_geo + - first: + 1: 100190 + second: r_pinkyProxy_01_geo + - first: + 1: 100192 + second: r_pinkyProxy_02_geo + - first: + 1: 100194 + second: r_pinkyProxy_03_geo + - first: + 1: 100196 + second: r_ringProxy_01_geo + - first: + 1: 100198 + second: r_ringProxy_02_geo + - first: + 1: 100200 + second: r_ringProxy_03_geo + - first: + 1: 100202 + second: r_shourderProxy_geo + - first: + 1: 100204 + second: r_thumbProxy_01_geo + - first: + 1: 100206 + second: r_thumbProxy_02_geo + - first: + 1: 100208 + second: r_thumbProxy_03_geo + - first: + 1: 100210 + second: r_UNI_eye + - first: + 1: 100212 + second: r_wristProxy_geo + - first: + 1: 100214 + second: Reference + - first: + 1: 100216 + second: RightArm + - first: + 1: 100218 + second: RightCheek + - first: + 1: 100220 + second: RightEye + - first: + 1: 100222 + second: RightEyelidLower + - first: + 1: 100224 + second: RightEyelidUpper + - first: + 1: 100226 + second: RightFoot + - first: + 1: 100228 + second: RightForeArm + - first: + 1: 100230 + second: RightHand + - first: + 1: 100232 + second: RightHandIndex1 + - first: + 1: 100234 + second: RightHandIndex2 + - first: + 1: 100236 + second: RightHandIndex3 + - first: + 1: 100238 + second: RightHandMiddle1 + - first: + 1: 100240 + second: RightHandMiddle2 + - first: + 1: 100242 + second: RightHandMiddle3 + - first: + 1: 100244 + second: RightHandPinky1 + - first: + 1: 100246 + second: RightHandPinky2 + - first: + 1: 100248 + second: RightHandPinky3 + - first: + 1: 100250 + second: RightHandRing1 + - first: + 1: 100252 + second: RightHandRing2 + - first: + 1: 100254 + second: RightHandRing3 + - first: + 1: 100256 + second: RightHandThumb1 + - first: + 1: 100258 + second: RightHandThumb2 + - first: + 1: 100260 + second: RightHandThumb3 + - first: + 1: 100262 + second: RightInnerBrow + - first: + 1: 100264 + second: RightIOuterBrow + - first: + 1: 100266 + second: RightLeg + - first: + 1: 100268 + second: RightLipCorner + - first: + 1: 100270 + second: RightLipLower + - first: + 1: 100272 + second: RightLipUpper + - first: + 1: 100274 + second: RightNostril + - first: + 1: 100276 + second: RightShoulder + - first: + 1: 100278 + second: RightToes + - first: + 1: 100280 + second: RightUpLeg + - first: + 1: 100282 + second: Root + - first: + 1: 100284 + second: Spine + - first: + 1: 100286 + second: spineProxy_geo + - first: + 1: 100288 + second: TongueBack + - first: + 1: 100290 + second: TongueTip + - first: + 1: 100292 + second: UNI_01_Lower_teethProxy + - first: + 1: 100294 + second: UNI_01_TongueBaseProxy + - first: + 1: 100296 + second: UNI_01_TongueTipProxy + - first: + 1: 100298 + second: UNI_01_Upper_teethProxy + - first: + 4: 400000 + second: Chest + - first: + 4: 400002 + second: chestProxy_geo + - first: + 4: 400004 + second: //RootNode + - first: + 4: 400006 + second: Head + - first: + 4: 400008 + second: headProxy_geo + - first: + 4: 400010 + second: HeadTop_End + - first: + 4: 400012 + second: Hips + - first: + 4: 400014 + second: Jaw + - first: + 4: 400016 + second: JawEND + - first: + 4: 400018 + second: jawProxy_geo + - first: + 4: 400020 + second: l_ankleProxy_geo + - first: + 4: 400022 + second: l_ballProxy_geo + - first: + 4: 400024 + second: l_clavicleProxy_geo + - first: + 4: 400026 + second: l_erbowProxy_geo + - first: + 4: 400028 + second: l_hipProxy_geo + - first: + 4: 400030 + second: l_indexProxy_01_geo + - first: + 4: 400032 + second: l_indexProxy_02_geo + - first: + 4: 400034 + second: l_indexProxy_03_geo + - first: + 4: 400036 + second: l_kneeProxy_geo + - first: + 4: 400038 + second: l_middleProxy_01_geo + - first: + 4: 400040 + second: l_middleProxy_02_geo + - first: + 4: 400042 + second: l_middleProxy_03_geo + - first: + 4: 400044 + second: l_pinkyProxy_01_geo + - first: + 4: 400046 + second: l_pinkyProxy_02_geo + - first: + 4: 400048 + second: l_pinkyProxy_03_geo + - first: + 4: 400050 + second: l_ringProxy_01_geo + - first: + 4: 400052 + second: l_ringProxy_02_geo + - first: + 4: 400054 + second: l_ringProxy_03_geo + - first: + 4: 400056 + second: l_shourderProxy_geo + - first: + 4: 400058 + second: l_thumbProxy_01_geo + - first: + 4: 400060 + second: l_thumbProxy_02_geo + - first: + 4: 400062 + second: l_thumbProxy_03_geo + - first: + 4: 400064 + second: l_UNI_eye + - first: + 4: 400066 + second: l_wristProxy_geo + - first: + 4: 400068 + second: LeftArm + - first: + 4: 400070 + second: LeftCheek + - first: + 4: 400072 + second: LeftEye + - first: + 4: 400074 + second: LeftEyelidLower + - first: + 4: 400076 + second: LeftEyelidUpper + - first: + 4: 400078 + second: LeftFoot + - first: + 4: 400080 + second: LeftForeArm + - first: + 4: 400082 + second: LeftHand + - first: + 4: 400084 + second: LeftHandIndex1 + - first: + 4: 400086 + second: LeftHandIndex13 + - first: + 4: 400088 + second: LeftHandIndex17 + - first: + 4: 400090 + second: LeftHandIndex2 + - first: + 4: 400092 + second: LeftHandIndex3 + - first: + 4: 400094 + second: LeftHandMiddle1 + - first: + 4: 400096 + second: LeftHandMiddle13 + - first: + 4: 400098 + second: LeftHandMiddle17 + - first: + 4: 400100 + second: LeftHandMiddle2 + - first: + 4: 400102 + second: LeftHandMiddle3 + - first: + 4: 400104 + second: LeftHandPinky1 + - first: + 4: 400106 + second: LeftHandPinky13 + - first: + 4: 400108 + second: LeftHandPinky17 + - first: + 4: 400110 + second: LeftHandPinky2 + - first: + 4: 400112 + second: LeftHandPinky3 + - first: + 4: 400114 + second: LeftHandRing1 + - first: + 4: 400116 + second: LeftHandRing13 + - first: + 4: 400118 + second: LeftHandRing17 + - first: + 4: 400120 + second: LeftHandRing2 + - first: + 4: 400122 + second: LeftHandRing3 + - first: + 4: 400124 + second: LeftHandThumb1 + - first: + 4: 400126 + second: LeftHandThumb13 + - first: + 4: 400128 + second: LeftHandThumb17 + - first: + 4: 400130 + second: LeftHandThumb2 + - first: + 4: 400132 + second: LeftHandThumb3 + - first: + 4: 400134 + second: LeftInnerBrow + - first: + 4: 400136 + second: LeftIOuterBrow + - first: + 4: 400138 + second: LeftLeg + - first: + 4: 400140 + second: LeftLipCorner + - first: + 4: 400142 + second: LeftLipLower + - first: + 4: 400144 + second: LeftLipUpper + - first: + 4: 400146 + second: LeftNostril + - first: + 4: 400148 + second: LeftShoulder + - first: + 4: 400150 + second: LeftToes + - first: + 4: 400152 + second: LeftUpLeg + - first: + 4: 400154 + second: LToeBase_End2 + - first: + 4: 400156 + second: LToeBase_End3 + - first: + 4: 400158 + second: Neck + - first: + 4: 400160 + second: neckProxy_geo + - first: + 4: 400162 + second: pelvisProxy_geo + - first: + 4: 400164 + second: Pivot + - first: + 4: 400166 + second: r_ankleProxy_geo + - first: + 4: 400168 + second: r_ballProxy_geo + - first: + 4: 400170 + second: r_clavicleProxy_geo + - first: + 4: 400172 + second: r_erbowProxy_geo + - first: + 4: 400174 + second: r_hipProxy_geo + - first: + 4: 400176 + second: r_indexProxy_01_geo + - first: + 4: 400178 + second: r_indexProxy_02_geo + - first: + 4: 400180 + second: r_indexProxy_03_geo + - first: + 4: 400182 + second: r_kneeProxy_geo + - first: + 4: 400184 + second: r_middleProxy_01_geo + - first: + 4: 400186 + second: r_middleProxy_02_geo + - first: + 4: 400188 + second: r_middleProxy_03_geo + - first: + 4: 400190 + second: r_pinkyProxy_01_geo + - first: + 4: 400192 + second: r_pinkyProxy_02_geo + - first: + 4: 400194 + second: r_pinkyProxy_03_geo + - first: + 4: 400196 + second: r_ringProxy_01_geo + - first: + 4: 400198 + second: r_ringProxy_02_geo + - first: + 4: 400200 + second: r_ringProxy_03_geo + - first: + 4: 400202 + second: r_shourderProxy_geo + - first: + 4: 400204 + second: r_thumbProxy_01_geo + - first: + 4: 400206 + second: r_thumbProxy_02_geo + - first: + 4: 400208 + second: r_thumbProxy_03_geo + - first: + 4: 400210 + second: r_UNI_eye + - first: + 4: 400212 + second: r_wristProxy_geo + - first: + 4: 400214 + second: Reference + - first: + 4: 400216 + second: RightArm + - first: + 4: 400218 + second: RightCheek + - first: + 4: 400220 + second: RightEye + - first: + 4: 400222 + second: RightEyelidLower + - first: + 4: 400224 + second: RightEyelidUpper + - first: + 4: 400226 + second: RightFoot + - first: + 4: 400228 + second: RightForeArm + - first: + 4: 400230 + second: RightHand + - first: + 4: 400232 + second: RightHandIndex1 + - first: + 4: 400234 + second: RightHandIndex2 + - first: + 4: 400236 + second: RightHandIndex3 + - first: + 4: 400238 + second: RightHandMiddle1 + - first: + 4: 400240 + second: RightHandMiddle2 + - first: + 4: 400242 + second: RightHandMiddle3 + - first: + 4: 400244 + second: RightHandPinky1 + - first: + 4: 400246 + second: RightHandPinky2 + - first: + 4: 400248 + second: RightHandPinky3 + - first: + 4: 400250 + second: RightHandRing1 + - first: + 4: 400252 + second: RightHandRing2 + - first: + 4: 400254 + second: RightHandRing3 + - first: + 4: 400256 + second: RightHandThumb1 + - first: + 4: 400258 + second: RightHandThumb2 + - first: + 4: 400260 + second: RightHandThumb3 + - first: + 4: 400262 + second: RightInnerBrow + - first: + 4: 400264 + second: RightIOuterBrow + - first: + 4: 400266 + second: RightLeg + - first: + 4: 400268 + second: RightLipCorner + - first: + 4: 400270 + second: RightLipLower + - first: + 4: 400272 + second: RightLipUpper + - first: + 4: 400274 + second: RightNostril + - first: + 4: 400276 + second: RightShoulder + - first: + 4: 400278 + second: RightToes + - first: + 4: 400280 + second: RightUpLeg + - first: + 4: 400282 + second: Root + - first: + 4: 400284 + second: Spine + - first: + 4: 400286 + second: spineProxy_geo + - first: + 4: 400288 + second: TongueBack + - first: + 4: 400290 + second: TongueTip + - first: + 4: 400292 + second: UNI_01_Lower_teethProxy + - first: + 4: 400294 + second: UNI_01_TongueBaseProxy + - first: + 4: 400296 + second: UNI_01_TongueTipProxy + - first: + 4: 400298 + second: UNI_01_Upper_teethProxy + - first: + 23: 2300000 + second: chestProxy_geo + - first: + 23: 2300002 + second: headProxy_geo + - first: + 23: 2300004 + second: jawProxy_geo + - first: + 23: 2300006 + second: l_ankleProxy_geo + - first: + 23: 2300008 + second: l_ballProxy_geo + - first: + 23: 2300010 + second: l_clavicleProxy_geo + - first: + 23: 2300012 + second: l_erbowProxy_geo + - first: + 23: 2300014 + second: l_hipProxy_geo + - first: + 23: 2300016 + second: l_indexProxy_01_geo + - first: + 23: 2300018 + second: l_indexProxy_02_geo + - first: + 23: 2300020 + second: l_indexProxy_03_geo + - first: + 23: 2300022 + second: l_kneeProxy_geo + - first: + 23: 2300024 + second: l_middleProxy_01_geo + - first: + 23: 2300026 + second: l_middleProxy_02_geo + - first: + 23: 2300028 + second: l_middleProxy_03_geo + - first: + 23: 2300030 + second: l_pinkyProxy_01_geo + - first: + 23: 2300032 + second: l_pinkyProxy_02_geo + - first: + 23: 2300034 + second: l_pinkyProxy_03_geo + - first: + 23: 2300036 + second: l_ringProxy_01_geo + - first: + 23: 2300038 + second: l_ringProxy_02_geo + - first: + 23: 2300040 + second: l_ringProxy_03_geo + - first: + 23: 2300042 + second: l_shourderProxy_geo + - first: + 23: 2300044 + second: l_thumbProxy_01_geo + - first: + 23: 2300046 + second: l_thumbProxy_02_geo + - first: + 23: 2300048 + second: l_thumbProxy_03_geo + - first: + 23: 2300050 + second: l_UNI_eye + - first: + 23: 2300052 + second: l_wristProxy_geo + - first: + 23: 2300054 + second: neckProxy_geo + - first: + 23: 2300056 + second: pelvisProxy_geo + - first: + 23: 2300058 + second: r_ankleProxy_geo + - first: + 23: 2300060 + second: r_ballProxy_geo + - first: + 23: 2300062 + second: r_clavicleProxy_geo + - first: + 23: 2300064 + second: r_erbowProxy_geo + - first: + 23: 2300066 + second: r_hipProxy_geo + - first: + 23: 2300068 + second: r_indexProxy_01_geo + - first: + 23: 2300070 + second: r_indexProxy_02_geo + - first: + 23: 2300072 + second: r_indexProxy_03_geo + - first: + 23: 2300074 + second: r_kneeProxy_geo + - first: + 23: 2300076 + second: r_middleProxy_01_geo + - first: + 23: 2300078 + second: r_middleProxy_02_geo + - first: + 23: 2300080 + second: r_middleProxy_03_geo + - first: + 23: 2300082 + second: r_pinkyProxy_01_geo + - first: + 23: 2300084 + second: r_pinkyProxy_02_geo + - first: + 23: 2300086 + second: r_pinkyProxy_03_geo + - first: + 23: 2300088 + second: r_ringProxy_01_geo + - first: + 23: 2300090 + second: r_ringProxy_02_geo + - first: + 23: 2300092 + second: r_ringProxy_03_geo + - first: + 23: 2300094 + second: r_shourderProxy_geo + - first: + 23: 2300096 + second: r_thumbProxy_01_geo + - first: + 23: 2300098 + second: r_thumbProxy_02_geo + - first: + 23: 2300100 + second: r_thumbProxy_03_geo + - first: + 23: 2300102 + second: r_UNI_eye + - first: + 23: 2300104 + second: r_wristProxy_geo + - first: + 23: 2300106 + second: spineProxy_geo + - first: + 23: 2300108 + second: UNI_01_Lower_teethProxy + - first: + 23: 2300110 + second: UNI_01_TongueBaseProxy + - first: + 23: 2300112 + second: UNI_01_TongueTipProxy + - first: + 23: 2300114 + second: UNI_01_Upper_teethProxy + - first: + 33: 3300000 + second: chestProxy_geo + - first: + 33: 3300002 + second: headProxy_geo + - first: + 33: 3300004 + second: jawProxy_geo + - first: + 33: 3300006 + second: l_ankleProxy_geo + - first: + 33: 3300008 + second: l_ballProxy_geo + - first: + 33: 3300010 + second: l_clavicleProxy_geo + - first: + 33: 3300012 + second: l_erbowProxy_geo + - first: + 33: 3300014 + second: l_hipProxy_geo + - first: + 33: 3300016 + second: l_indexProxy_01_geo + - first: + 33: 3300018 + second: l_indexProxy_02_geo + - first: + 33: 3300020 + second: l_indexProxy_03_geo + - first: + 33: 3300022 + second: l_kneeProxy_geo + - first: + 33: 3300024 + second: l_middleProxy_01_geo + - first: + 33: 3300026 + second: l_middleProxy_02_geo + - first: + 33: 3300028 + second: l_middleProxy_03_geo + - first: + 33: 3300030 + second: l_pinkyProxy_01_geo + - first: + 33: 3300032 + second: l_pinkyProxy_02_geo + - first: + 33: 3300034 + second: l_pinkyProxy_03_geo + - first: + 33: 3300036 + second: l_ringProxy_01_geo + - first: + 33: 3300038 + second: l_ringProxy_02_geo + - first: + 33: 3300040 + second: l_ringProxy_03_geo + - first: + 33: 3300042 + second: l_shourderProxy_geo + - first: + 33: 3300044 + second: l_thumbProxy_01_geo + - first: + 33: 3300046 + second: l_thumbProxy_02_geo + - first: + 33: 3300048 + second: l_thumbProxy_03_geo + - first: + 33: 3300050 + second: l_UNI_eye + - first: + 33: 3300052 + second: l_wristProxy_geo + - first: + 33: 3300054 + second: neckProxy_geo + - first: + 33: 3300056 + second: pelvisProxy_geo + - first: + 33: 3300058 + second: r_ankleProxy_geo + - first: + 33: 3300060 + second: r_ballProxy_geo + - first: + 33: 3300062 + second: r_clavicleProxy_geo + - first: + 33: 3300064 + second: r_erbowProxy_geo + - first: + 33: 3300066 + second: r_hipProxy_geo + - first: + 33: 3300068 + second: r_indexProxy_01_geo + - first: + 33: 3300070 + second: r_indexProxy_02_geo + - first: + 33: 3300072 + second: r_indexProxy_03_geo + - first: + 33: 3300074 + second: r_kneeProxy_geo + - first: + 33: 3300076 + second: r_middleProxy_01_geo + - first: + 33: 3300078 + second: r_middleProxy_02_geo + - first: + 33: 3300080 + second: r_middleProxy_03_geo + - first: + 33: 3300082 + second: r_pinkyProxy_01_geo + - first: + 33: 3300084 + second: r_pinkyProxy_02_geo + - first: + 33: 3300086 + second: r_pinkyProxy_03_geo + - first: + 33: 3300088 + second: r_ringProxy_01_geo + - first: + 33: 3300090 + second: r_ringProxy_02_geo + - first: + 33: 3300092 + second: r_ringProxy_03_geo + - first: + 33: 3300094 + second: r_shourderProxy_geo + - first: + 33: 3300096 + second: r_thumbProxy_01_geo + - first: + 33: 3300098 + second: r_thumbProxy_02_geo + - first: + 33: 3300100 + second: r_thumbProxy_03_geo + - first: + 33: 3300102 + second: r_UNI_eye + - first: + 33: 3300104 + second: r_wristProxy_geo + - first: + 33: 3300106 + second: spineProxy_geo + - first: + 33: 3300108 + second: UNI_01_Lower_teethProxy + - first: + 33: 3300110 + second: UNI_01_TongueBaseProxy + - first: + 33: 3300112 + second: UNI_01_TongueTipProxy + - first: + 33: 3300114 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300000 + second: l_UNI_eye + - first: + 43: 4300002 + second: r_UNI_eye + - first: + 43: 4300004 + second: UNI_01_TongueBaseProxy + - first: + 43: 4300006 + second: UNI_01_TongueTipProxy + - first: + 43: 4300008 + second: UNI_01_Lower_teethProxy + - first: + 43: 4300010 + second: jawProxy_geo + - first: + 43: 4300012 + second: headProxy_geo + - first: + 43: 4300014 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300016 + second: neckProxy_geo + - first: + 43: 4300018 + second: r_pinkyProxy_03_geo + - first: + 43: 4300020 + second: r_pinkyProxy_02_geo + - first: + 43: 4300022 + second: r_pinkyProxy_01_geo + - first: + 43: 4300024 + second: r_ringProxy_03_geo + - first: + 43: 4300026 + second: r_ringProxy_02_geo + - first: + 43: 4300028 + second: r_ringProxy_01_geo + - first: + 43: 4300030 + second: r_middleProxy_03_geo + - first: + 43: 4300032 + second: r_middleProxy_02_geo + - first: + 43: 4300034 + second: r_middleProxy_01_geo + - first: + 43: 4300036 + second: r_indexProxy_03_geo + - first: + 43: 4300038 + second: r_indexProxy_02_geo + - first: + 43: 4300040 + second: r_indexProxy_01_geo + - first: + 43: 4300042 + second: r_thumbProxy_03_geo + - first: + 43: 4300044 + second: r_thumbProxy_02_geo + - first: + 43: 4300046 + second: r_thumbProxy_01_geo + - first: + 43: 4300048 + second: r_wristProxy_geo + - first: + 43: 4300050 + second: r_erbowProxy_geo + - first: + 43: 4300052 + second: r_shourderProxy_geo + - first: + 43: 4300054 + second: r_clavicleProxy_geo + - first: + 43: 4300056 + second: chestProxy_geo + - first: + 43: 4300058 + second: l_pinkyProxy_03_geo + - first: + 43: 4300060 + second: l_pinkyProxy_02_geo + - first: + 43: 4300062 + second: l_pinkyProxy_01_geo + - first: + 43: 4300064 + second: l_ringProxy_03_geo + - first: + 43: 4300066 + second: l_ringProxy_02_geo + - first: + 43: 4300068 + second: l_ringProxy_01_geo + - first: + 43: 4300070 + second: l_middleProxy_03_geo + - first: + 43: 4300072 + second: l_middleProxy_02_geo + - first: + 43: 4300074 + second: l_middleProxy_01_geo + - first: + 43: 4300076 + second: l_indexProxy_03_geo + - first: + 43: 4300078 + second: l_indexProxy_02_geo + - first: + 43: 4300080 + second: l_indexProxy_01_geo + - first: + 43: 4300082 + second: l_thumbProxy_03_geo + - first: + 43: 4300084 + second: l_thumbProxy_02_geo + - first: + 43: 4300086 + second: l_thumbProxy_01_geo + - first: + 43: 4300088 + second: l_wristProxy_geo + - first: + 43: 4300090 + second: l_erbowProxy_geo + - first: + 43: 4300092 + second: l_shourderProxy_geo + - first: + 43: 4300094 + second: l_clavicleProxy_geo + - first: + 43: 4300096 + second: spineProxy_geo + - first: + 43: 4300098 + second: r_ballProxy_geo + - first: + 43: 4300100 + second: r_ankleProxy_geo + - first: + 43: 4300102 + second: r_kneeProxy_geo + - first: + 43: 4300104 + second: r_hipProxy_geo + - first: + 43: 4300106 + second: pelvisProxy_geo + - first: + 43: 4300108 + second: l_ballProxy_geo + - first: + 43: 4300110 + second: l_ankleProxy_geo + - first: + 43: 4300112 + second: l_kneeProxy_geo + - first: + 43: 4300114 + second: l_hipProxy_geo + - first: + 74: 7400000 + second: HumanoidIdle + - first: + 74: 7400002 + second: Idle_Glance + - first: + 95: 9500000 + second: //RootNode + - first: + 111: 11100000 + second: //RootNode + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 1 + materialSearch: 2 + materialLocation: 0 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: + - serializedVersion: 16 + name: HumanoidIdle + takeName: _87_a_U1_M_P_idle_Neutral__Fb_p0_No_1 + internalID: 0 + firstFrame: 445 + lastFrame: 517 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 1 + loopBlendPositionY: 1 + loopBlendPositionXZ: 1 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.01 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 0 + importBlendShapes: 0 + importCameras: 0 + importLights: 0 + fileIdsGeneration: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 4 + normalCalculationMode: 0 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: + - boneName: Hips + humanName: Hips + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftUpLeg + humanName: LeftUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightUpLeg + humanName: RightUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftLeg + humanName: LeftLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightLeg + humanName: RightLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftFoot + humanName: LeftFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightFoot + humanName: RightFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Spine + humanName: Spine + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Chest + humanName: Chest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Neck + humanName: Neck + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Head + humanName: Head + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftShoulder + humanName: LeftShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightShoulder + humanName: RightShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftArm + humanName: LeftUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightArm + humanName: RightUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftForeArm + humanName: LeftLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightForeArm + humanName: RightLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHand + humanName: LeftHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHand + humanName: RightHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftToes + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightToes + humanName: RightToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftEye + humanName: LeftEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightEye + humanName: RightEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Jaw + humanName: Jaw + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb1 + humanName: Left Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb2 + humanName: Left Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb3 + humanName: Left Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex1 + humanName: Left Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex2 + humanName: Left Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex3 + humanName: Left Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle1 + humanName: Left Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle2 + humanName: Left Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle3 + humanName: Left Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing1 + humanName: Left Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing2 + humanName: Left Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing3 + humanName: Left Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky1 + humanName: Left Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky2 + humanName: Left Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky3 + humanName: Left Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb1 + humanName: Right Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb2 + humanName: Right Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb3 + humanName: Right Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex1 + humanName: Right Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex2 + humanName: Right Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex3 + humanName: Right Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle1 + humanName: Right Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle2 + humanName: Right Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle3 + humanName: Right Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing1 + humanName: Right Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing2 + humanName: Right Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing3 + humanName: Right Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky1 + humanName: Right Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky2 + humanName: Right Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky3 + humanName: Right Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + skeleton: + - name: Idle(Clone) + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Hips + parentName: + position: {x: 0, y: 0.96055585, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftUpLeg + parentName: + position: {x: -0.0754495, y: -0.04566402, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLeg + parentName: + position: {x: -0.020550499, y: -0.40912998, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftFoot + parentName: + position: {x: -0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftToes + parentName: + position: {x: -0.007487, y: -0.0731673, z: 0.14542712} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightUpLeg + parentName: + position: {x: 0.075449534, y: -0.04566399, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLeg + parentName: + position: {x: 0.020550467, y: -0.40913, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightFoot + parentName: + position: {x: 0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightToes + parentName: + position: {x: 0.007487, y: -0.0731673, z: 0.1454275} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Spine + parentName: + position: {x: 2.646978e-25, y: 0.092263184, z: 0.015771331} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Chest + parentName: + position: {x: -0, y: 0.16254029, z: -0.0016560555} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftShoulder + parentName: + position: {x: -0.038285997, y: 0.2216225, z: -0.017063085} + rotation: {x: -0.023181627, y: -0.041239724, z: 0.15546249, w: 0.98670834} + scale: {x: 1, y: 1, z: 1} + - name: LeftArm + parentName: + position: {x: -0.10050205, y: 5.684342e-16, z: -3.330669e-18} + rotation: {x: 0.08861803, y: 0.027650451, z: -0.1429306, w: 0.9853696} + scale: {x: 1, y: 1, z: 1} + - name: LeftForeArm + parentName: + position: {x: -0.2540493, y: 5.684342e-16, z: 1.11022296e-17} + rotation: {x: 0.12483406, y: 0.031358555, z: 0.0028125686, w: 0.99167794} + scale: {x: 1, y: 1, z: 1} + - name: LeftHand + parentName: + position: {x: -0.24638927, y: 0, z: -1.9984014e-16} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex1 + parentName: + position: {x: -0.0751258, y: -0.0078414045, z: 0.032652643} + rotation: {x: 0.006085051, y: -0.016760712, z: 0.056863174, w: 0.99822277} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex2 + parentName: + position: {x: -0.03979728, y: 0.000049808405, z: 0.0011857504} + rotation: {x: -0.06748806, y: 0.015227233, z: 0.032719355, w: 0.99706715} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex3 + parentName: + position: {x: -0.027968477, y: -0.000000006281225, z: -0.00000005171866} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle1 + parentName: + position: {x: -0.076023825, y: -0.0018851344, z: 0.010141229} + rotation: {x: -0.0038087575, y: 0.044787224, z: 0.088190004, w: 0.995089} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle2 + parentName: + position: {x: -0.044280436, y: 0.000004798874, z: -0.00042540013} + rotation: {x: -0.012546086, y: -0.007552809, z: 0.031476427, w: 0.9993972} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle3 + parentName: + position: {x: -0.033964828, y: -0.000000012197929, z: 0.0000000037564827} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky1 + parentName: + position: {x: -0.06565995, y: -0.007825106, z: -0.032251246} + rotation: {x: -0.066156454, y: 0.08168898, z: 0.093131244, w: 0.99008936} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky2 + parentName: + position: {x: -0.030805448, y: -0.000030874573, z: -0.0014480775} + rotation: {x: 0.047022004, y: -0.021162415, z: 0.037688732, w: 0.9979583} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky3 + parentName: + position: {x: -0.023064027, y: -0.0000064025808, z: 0.000000018332095} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing1 + parentName: + position: {x: -0.07030211, y: -0.0037453093, z: -0.011411792} + rotation: {x: -0.020259487, y: 0.07229447, z: 0.09005987, w: 0.99310243} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing2 + parentName: + position: {x: -0.043135457, y: -0.000020882308, z: -0.0022351784} + rotation: {x: 0.018373603, y: -0.025618568, z: 0.03397124, w: 0.9989255} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing3 + parentName: + position: {x: -0.030835565, y: 7.710326e-11, z: -0.00000001649327} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb1 + parentName: + position: {x: -0.014231241, y: -0.012377825, z: 0.025531668} + rotation: {x: -0.10206083, y: -0.050946534, z: -0.10271986, w: 0.98814815} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb2 + parentName: + position: {x: -0.016374, y: -0.00529, z: 0.023491409} + rotation: {x: -0.026062544, y: 0.096688956, z: 0.0036070156, w: 0.9949668} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb3 + parentName: + position: {x: -0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Neck + parentName: + position: {x: -0, y: 0.2590093, z: -0.032413255} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Head + parentName: + position: {x: -2.646978e-25, y: 0.08307038, z: 0.0113267815} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Jaw + parentName: + position: {x: 1.7347234e-20, y: 0.0111267585, z: 0.010327543} + rotation: {x: 0.21924005, y: -0, z: -0, w: 0.975671} + scale: {x: 1, y: 1, z: 1} + - name: JawEND + parentName: + position: {x: -1.7347234e-20, y: -0.04828876, z: 0.07185171} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipCorner + parentName: + position: {x: -0.032843262, y: -0.01657876, z: 0.066121764} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipLower + parentName: + position: {x: -0.014250817, y: -0.02168876, z: 0.08224063} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipCorner + parentName: + position: {x: 0.03284, y: -0.01657876, z: 0.066118784} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipLower + parentName: + position: {x: 0.014250817, y: -0.02168876, z: 0.082238786} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueBack + parentName: + position: {x: -1.7347234e-20, y: -0.022869369, z: 0.010095409} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueTip + parentName: + position: {x: -1.7347234e-20, y: -0.023278812, z: 0.03832271} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftCheek + parentName: + position: {x: -0.054244027, y: 0.03370195, z: 0.0594304} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEye + parentName: + position: {x: -0.020848233, y: 0.0825027, z: 0.055427432} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidLower + parentName: + position: {x: -0.035618957, y: 0.06507366, z: 0.07623474} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidUpper + parentName: + position: {x: -0.034406897, y: 0.10060814, z: 0.08020531} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftInnerBrow + parentName: + position: {x: -0.012062691, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftIOuterBrow + parentName: + position: {x: -0.05503987, y: 0.11482529, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipUpper + parentName: + position: {x: -0.014501322, y: -0.005111811, z: 0.09461884} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftNostril + parentName: + position: {x: -0.0179, y: 0.026312828, z: 0.0908674} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightCheek + parentName: + position: {x: 0.054239996, y: 0.033702828, z: 0.0594274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEye + parentName: + position: {x: 0.020849999, y: 0.08250283, z: 0.0554274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidLower + parentName: + position: {x: 0.03562, y: 0.06507283, z: 0.0762374} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidUpper + parentName: + position: {x: 0.03441, y: 0.10061283, z: 0.08020739} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightInnerBrow + parentName: + position: {x: 0.012062687, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightIOuterBrow + parentName: + position: {x: 0.055040002, y: 0.11482283, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipUpper + parentName: + position: {x: 0.014501322, y: -0.0051071714, z: 0.094617404} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightNostril + parentName: + position: {x: 0.0179, y: 0.026308905, z: 0.09087062} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightShoulder + parentName: + position: {x: 0.038286015, y: 0.22162114, z: -0.017063085} + rotation: {x: 0.15661521, y: 0.9872962, z: -0.014143146, w: -0.022756452} + scale: {x: 1, y: 1, z: 1} + - name: RightArm + parentName: + position: {x: -0.100501455, y: -0.0000024995522, z: -0.000000051557407} + rotation: {x: 0.12895873, y: 0.98859113, z: -0.059131637, w: 0.050602593} + scale: {x: 1, y: 1, z: 1} + - name: RightForeArm + parentName: + position: {x: 0.25342825, y: 0.006011353, z: -0.016704524} + rotation: {x: 0.17300203, y: 0.018497527, z: -0.026411133, w: 0.98439354} + scale: {x: 1, y: 1, z: 1} + - name: RightHand + parentName: + position: {x: 0.2453737, y: 0.021641772, z: 0.005550465} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex1 + parentName: + position: {x: 0.0747695, y: -0.0012430536, z: 0.034344498} + rotation: {x: -0.0042503644, y: 0.16212161, z: -0.04068394, w: 0.9859226} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex2 + parentName: + position: {x: 0.0370584, y: 0.00072612107, z: 0.014538894} + rotation: {x: -0.07759981, y: 0.022348529, z: 0.040914893, w: 0.99589396} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex3 + parentName: + position: {x: 0.025225038, y: -0.0049664653, z: 0.011012146} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle1 + parentName: + position: {x: 0.075647645, y: 0.0047914027, z: 0.011853182} + rotation: {x: -0.0018308128, y: 0.014353133, z: -0.04781439, w: 0.99875146} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle2 + parentName: + position: {x: 0.043809064, y: 0.00019418815, z: 0.006454936} + rotation: {x: -0.01889815, y: -0.04411176, z: 0.082945906, w: 0.995398} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle3 + parentName: + position: {x: 0.03307247, y: -0.007547537, z: 0.0016898462} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky1 + parentName: + position: {x: 0.06680334, y: -0.0019941088, z: -0.030756146} + rotation: {x: -0.061964788, y: -0.25861457, z: -0.016712682, w: 0.96384627} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky2 + parentName: + position: {x: 0.028530842, y: -0.001397143, z: -0.011623796} + rotation: {x: 0.029886473, y: 0.0008011088, z: -0.061678488, w: 0.99764824} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky3 + parentName: + position: {x: 0.02142686, y: -0.00055350893, z: -0.008516608} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing1 + parentName: + position: {x: 0.070598476, y: 0.0024570965, z: -0.009821458} + rotation: {x: -0.014813002, y: -0.11599262, z: -0.029717524, w: 0.9926949} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing2 + parentName: + position: {x: 0.042887185, y: -0.0013753821, z: -0.004945858} + rotation: {x: 0.020819342, y: -0.021557119, z: 0.07558001, w: 0.99668926} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing3 + parentName: + position: {x: 0.029500604, y: -0.0076929354, z: -0.004622256} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb1 + parentName: + position: {x: 0.014684916, y: -0.011104942, z: 0.025858095} + rotation: {x: -0.12000564, y: 0.03367835, z: 0.1488049, w: 0.9809799} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb2 + parentName: + position: {x: 0.016374, y: -0.00529, z: 0.02349136} + rotation: {x: -0.02606257, y: -0.096691996, z: -0.003608328, w: 0.99496657} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb3 + parentName: + position: {x: 0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 0.01 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidIdleJumpUp.fbx b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidIdleJumpUp.fbx new file mode 100644 index 000000000..46919337f Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidIdleJumpUp.fbx differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidIdleJumpUp.fbx.meta b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidIdleJumpUp.fbx.meta new file mode 100644 index 000000000..77ccf6a46 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidIdleJumpUp.fbx.meta @@ -0,0 +1,3389 @@ +fileFormatVersion: 2 +guid: 0d9d26e2162aa4d11ab075b34c029673 +labels: +- ObiCloth +- ObiRope +- ObiSoftbody +ModelImporter: + serializedVersion: 19301 + internalIDToNameTable: + - first: + 1: 100000 + second: //RootNode + - first: + 1: 100002 + second: l_hipProxy_geo + - first: + 1: 100004 + second: l_kneeProxy_geo + - first: + 1: 100006 + second: l_ankleProxy_geo + - first: + 1: 100008 + second: l_ballProxy_geo + - first: + 1: 100010 + second: LToeBase_End2 + - first: + 1: 100012 + second: LeftToes + - first: + 1: 100014 + second: LeftFoot + - first: + 1: 100016 + second: LeftLeg + - first: + 1: 100018 + second: LeftUpLeg + - first: + 1: 100020 + second: pelvisProxy_geo + - first: + 1: 100022 + second: r_hipProxy_geo + - first: + 1: 100024 + second: r_kneeProxy_geo + - first: + 1: 100026 + second: r_ankleProxy_geo + - first: + 1: 100028 + second: r_ballProxy_geo + - first: + 1: 100030 + second: LToeBase_End3 + - first: + 1: 100032 + second: RightToes + - first: + 1: 100034 + second: RightFoot + - first: + 1: 100036 + second: RightLeg + - first: + 1: 100038 + second: RightUpLeg + - first: + 1: 100040 + second: spineProxy_geo + - first: + 1: 100042 + second: l_clavicleProxy_geo + - first: + 1: 100044 + second: l_shourderProxy_geo + - first: + 1: 100046 + second: l_erbowProxy_geo + - first: + 1: 100048 + second: l_wristProxy_geo + - first: + 1: 100050 + second: l_thumbProxy_01_geo + - first: + 1: 100052 + second: l_thumbProxy_02_geo + - first: + 1: 100054 + second: l_thumbProxy_03_geo + - first: + 1: 100056 + second: LeftHandThumb13 + - first: + 1: 100058 + second: LeftHandThumb3 + - first: + 1: 100060 + second: LeftHandThumb2 + - first: + 1: 100062 + second: LeftHandThumb1 + - first: + 1: 100064 + second: l_indexProxy_01_geo + - first: + 1: 100066 + second: l_indexProxy_02_geo + - first: + 1: 100068 + second: l_indexProxy_03_geo + - first: + 1: 100070 + second: LeftHandIndex13 + - first: + 1: 100072 + second: LeftHandIndex3 + - first: + 1: 100074 + second: LeftHandIndex2 + - first: + 1: 100076 + second: LeftHandIndex1 + - first: + 1: 100078 + second: l_middleProxy_01_geo + - first: + 1: 100080 + second: l_middleProxy_02_geo + - first: + 1: 100082 + second: l_middleProxy_03_geo + - first: + 1: 100084 + second: LeftHandMiddle13 + - first: + 1: 100086 + second: LeftHandMiddle3 + - first: + 1: 100088 + second: LeftHandMiddle2 + - first: + 1: 100090 + second: LeftHandMiddle1 + - first: + 1: 100092 + second: l_ringProxy_01_geo + - first: + 1: 100094 + second: l_ringProxy_02_geo + - first: + 1: 100096 + second: l_ringProxy_03_geo + - first: + 1: 100098 + second: LeftHandRing13 + - first: + 1: 100100 + second: LeftHandRing3 + - first: + 1: 100102 + second: LeftHandRing2 + - first: + 1: 100104 + second: LeftHandRing1 + - first: + 1: 100106 + second: l_pinkyProxy_01_geo + - first: + 1: 100108 + second: l_pinkyProxy_02_geo + - first: + 1: 100110 + second: l_pinkyProxy_03_geo + - first: + 1: 100112 + second: LeftHandPinky13 + - first: + 1: 100114 + second: LeftHandPinky3 + - first: + 1: 100116 + second: LeftHandPinky2 + - first: + 1: 100118 + second: LeftHandPinky1 + - first: + 1: 100120 + second: LeftHand + - first: + 1: 100122 + second: LeftForeArm + - first: + 1: 100124 + second: LeftArm + - first: + 1: 100126 + second: LeftShoulder + - first: + 1: 100128 + second: chestProxy_geo + - first: + 1: 100130 + second: r_clavicleProxy_geo + - first: + 1: 100132 + second: r_shourderProxy_geo + - first: + 1: 100134 + second: r_erbowProxy_geo + - first: + 1: 100136 + second: r_wristProxy_geo + - first: + 1: 100138 + second: r_thumbProxy_01_geo + - first: + 1: 100140 + second: r_thumbProxy_02_geo + - first: + 1: 100142 + second: r_thumbProxy_03_geo + - first: + 1: 100144 + second: LeftHandThumb17 + - first: + 1: 100146 + second: RightHandThumb3 + - first: + 1: 100148 + second: RightHandThumb2 + - first: + 1: 100150 + second: RightHandThumb1 + - first: + 1: 100152 + second: r_indexProxy_01_geo + - first: + 1: 100154 + second: r_indexProxy_02_geo + - first: + 1: 100156 + second: r_indexProxy_03_geo + - first: + 1: 100158 + second: LeftHandIndex17 + - first: + 1: 100160 + second: RightHandIndex3 + - first: + 1: 100162 + second: RightHandIndex2 + - first: + 1: 100164 + second: RightHandIndex1 + - first: + 1: 100166 + second: r_middleProxy_01_geo + - first: + 1: 100168 + second: r_middleProxy_02_geo + - first: + 1: 100170 + second: r_middleProxy_03_geo + - first: + 1: 100172 + second: LeftHandMiddle17 + - first: + 1: 100174 + second: RightHandMiddle3 + - first: + 1: 100176 + second: RightHandMiddle2 + - first: + 1: 100178 + second: RightHandMiddle1 + - first: + 1: 100180 + second: r_ringProxy_01_geo + - first: + 1: 100182 + second: r_ringProxy_02_geo + - first: + 1: 100184 + second: r_ringProxy_03_geo + - first: + 1: 100186 + second: LeftHandRing17 + - first: + 1: 100188 + second: RightHandRing3 + - first: + 1: 100190 + second: RightHandRing2 + - first: + 1: 100192 + second: RightHandRing1 + - first: + 1: 100194 + second: r_pinkyProxy_01_geo + - first: + 1: 100196 + second: r_pinkyProxy_02_geo + - first: + 1: 100198 + second: r_pinkyProxy_03_geo + - first: + 1: 100200 + second: LeftHandPinky17 + - first: + 1: 100202 + second: RightHandPinky3 + - first: + 1: 100204 + second: RightHandPinky2 + - first: + 1: 100206 + second: RightHandPinky1 + - first: + 1: 100208 + second: RightHand + - first: + 1: 100210 + second: RightForeArm + - first: + 1: 100212 + second: RightArm + - first: + 1: 100214 + second: RightShoulder + - first: + 1: 100216 + second: neckProxy_geo + - first: + 1: 100218 + second: UNI_01_Upper_teethProxy + - first: + 1: 100220 + second: headProxy_geo + - first: + 1: 100222 + second: RightLipUpper + - first: + 1: 100224 + second: RightNostril + - first: + 1: 100226 + second: RightCheek + - first: + 1: 100228 + second: RightEyelidLower + - first: + 1: 100230 + second: RightEyelidUpper + - first: + 1: 100232 + second: RightIOuterBrow + - first: + 1: 100234 + second: RightInnerBrow + - first: + 1: 100236 + second: LeftIOuterBrow + - first: + 1: 100238 + second: LeftInnerBrow + - first: + 1: 100240 + second: LeftEyelidUpper + - first: + 1: 100242 + second: LeftEyelidLower + - first: + 1: 100244 + second: LeftCheek + - first: + 1: 100246 + second: LeftNostril + - first: + 1: 100248 + second: LeftLipUpper + - first: + 1: 100250 + second: jawProxy_geo + - first: + 1: 100252 + second: UNI_01_Lower_teethProxy + - first: + 1: 100254 + second: LeftLipCorner + - first: + 1: 100256 + second: RightLipCorner + - first: + 1: 100258 + second: RightLipLower + - first: + 1: 100260 + second: JawEND + - first: + 1: 100262 + second: LeftLipLower + - first: + 1: 100264 + second: UNI_01_TongueTipProxy + - first: + 1: 100266 + second: TongueTip + - first: + 1: 100268 + second: UNI_01_TongueBaseProxy + - first: + 1: 100270 + second: TongueBack + - first: + 1: 100272 + second: Jaw + - first: + 1: 100274 + second: r_UNI_eye + - first: + 1: 100276 + second: RightEye + - first: + 1: 100278 + second: l_UNI_eye + - first: + 1: 100280 + second: LeftEye + - first: + 1: 100282 + second: HeadTop_End + - first: + 1: 100284 + second: Head + - first: + 1: 100286 + second: Neck + - first: + 1: 100288 + second: Chest + - first: + 1: 100290 + second: Spine + - first: + 1: 100292 + second: Hips + - first: + 1: 100294 + second: Reference + - first: + 4: 400000 + second: //RootNode + - first: + 4: 400002 + second: l_hipProxy_geo + - first: + 4: 400004 + second: l_kneeProxy_geo + - first: + 4: 400006 + second: l_ankleProxy_geo + - first: + 4: 400008 + second: l_ballProxy_geo + - first: + 4: 400010 + second: LToeBase_End2 + - first: + 4: 400012 + second: LeftToes + - first: + 4: 400014 + second: LeftFoot + - first: + 4: 400016 + second: LeftLeg + - first: + 4: 400018 + second: LeftUpLeg + - first: + 4: 400020 + second: pelvisProxy_geo + - first: + 4: 400022 + second: r_hipProxy_geo + - first: + 4: 400024 + second: r_kneeProxy_geo + - first: + 4: 400026 + second: r_ankleProxy_geo + - first: + 4: 400028 + second: r_ballProxy_geo + - first: + 4: 400030 + second: LToeBase_End3 + - first: + 4: 400032 + second: RightToes + - first: + 4: 400034 + second: RightFoot + - first: + 4: 400036 + second: RightLeg + - first: + 4: 400038 + second: RightUpLeg + - first: + 4: 400040 + second: spineProxy_geo + - first: + 4: 400042 + second: l_clavicleProxy_geo + - first: + 4: 400044 + second: l_shourderProxy_geo + - first: + 4: 400046 + second: l_erbowProxy_geo + - first: + 4: 400048 + second: l_wristProxy_geo + - first: + 4: 400050 + second: l_thumbProxy_01_geo + - first: + 4: 400052 + second: l_thumbProxy_02_geo + - first: + 4: 400054 + second: l_thumbProxy_03_geo + - first: + 4: 400056 + second: LeftHandThumb13 + - first: + 4: 400058 + second: LeftHandThumb3 + - first: + 4: 400060 + second: LeftHandThumb2 + - first: + 4: 400062 + second: LeftHandThumb1 + - first: + 4: 400064 + second: l_indexProxy_01_geo + - first: + 4: 400066 + second: l_indexProxy_02_geo + - first: + 4: 400068 + second: l_indexProxy_03_geo + - first: + 4: 400070 + second: LeftHandIndex13 + - first: + 4: 400072 + second: LeftHandIndex3 + - first: + 4: 400074 + second: LeftHandIndex2 + - first: + 4: 400076 + second: LeftHandIndex1 + - first: + 4: 400078 + second: l_middleProxy_01_geo + - first: + 4: 400080 + second: l_middleProxy_02_geo + - first: + 4: 400082 + second: l_middleProxy_03_geo + - first: + 4: 400084 + second: LeftHandMiddle13 + - first: + 4: 400086 + second: LeftHandMiddle3 + - first: + 4: 400088 + second: LeftHandMiddle2 + - first: + 4: 400090 + second: LeftHandMiddle1 + - first: + 4: 400092 + second: l_ringProxy_01_geo + - first: + 4: 400094 + second: l_ringProxy_02_geo + - first: + 4: 400096 + second: l_ringProxy_03_geo + - first: + 4: 400098 + second: LeftHandRing13 + - first: + 4: 400100 + second: LeftHandRing3 + - first: + 4: 400102 + second: LeftHandRing2 + - first: + 4: 400104 + second: LeftHandRing1 + - first: + 4: 400106 + second: l_pinkyProxy_01_geo + - first: + 4: 400108 + second: l_pinkyProxy_02_geo + - first: + 4: 400110 + second: l_pinkyProxy_03_geo + - first: + 4: 400112 + second: LeftHandPinky13 + - first: + 4: 400114 + second: LeftHandPinky3 + - first: + 4: 400116 + second: LeftHandPinky2 + - first: + 4: 400118 + second: LeftHandPinky1 + - first: + 4: 400120 + second: LeftHand + - first: + 4: 400122 + second: LeftForeArm + - first: + 4: 400124 + second: LeftArm + - first: + 4: 400126 + second: LeftShoulder + - first: + 4: 400128 + second: chestProxy_geo + - first: + 4: 400130 + second: r_clavicleProxy_geo + - first: + 4: 400132 + second: r_shourderProxy_geo + - first: + 4: 400134 + second: r_erbowProxy_geo + - first: + 4: 400136 + second: r_wristProxy_geo + - first: + 4: 400138 + second: r_thumbProxy_01_geo + - first: + 4: 400140 + second: r_thumbProxy_02_geo + - first: + 4: 400142 + second: r_thumbProxy_03_geo + - first: + 4: 400144 + second: LeftHandThumb17 + - first: + 4: 400146 + second: RightHandThumb3 + - first: + 4: 400148 + second: RightHandThumb2 + - first: + 4: 400150 + second: RightHandThumb1 + - first: + 4: 400152 + second: r_indexProxy_01_geo + - first: + 4: 400154 + second: r_indexProxy_02_geo + - first: + 4: 400156 + second: r_indexProxy_03_geo + - first: + 4: 400158 + second: LeftHandIndex17 + - first: + 4: 400160 + second: RightHandIndex3 + - first: + 4: 400162 + second: RightHandIndex2 + - first: + 4: 400164 + second: RightHandIndex1 + - first: + 4: 400166 + second: r_middleProxy_01_geo + - first: + 4: 400168 + second: r_middleProxy_02_geo + - first: + 4: 400170 + second: r_middleProxy_03_geo + - first: + 4: 400172 + second: LeftHandMiddle17 + - first: + 4: 400174 + second: RightHandMiddle3 + - first: + 4: 400176 + second: RightHandMiddle2 + - first: + 4: 400178 + second: RightHandMiddle1 + - first: + 4: 400180 + second: r_ringProxy_01_geo + - first: + 4: 400182 + second: r_ringProxy_02_geo + - first: + 4: 400184 + second: r_ringProxy_03_geo + - first: + 4: 400186 + second: LeftHandRing17 + - first: + 4: 400188 + second: RightHandRing3 + - first: + 4: 400190 + second: RightHandRing2 + - first: + 4: 400192 + second: RightHandRing1 + - first: + 4: 400194 + second: r_pinkyProxy_01_geo + - first: + 4: 400196 + second: r_pinkyProxy_02_geo + - first: + 4: 400198 + second: r_pinkyProxy_03_geo + - first: + 4: 400200 + second: LeftHandPinky17 + - first: + 4: 400202 + second: RightHandPinky3 + - first: + 4: 400204 + second: RightHandPinky2 + - first: + 4: 400206 + second: RightHandPinky1 + - first: + 4: 400208 + second: RightHand + - first: + 4: 400210 + second: RightForeArm + - first: + 4: 400212 + second: RightArm + - first: + 4: 400214 + second: RightShoulder + - first: + 4: 400216 + second: neckProxy_geo + - first: + 4: 400218 + second: UNI_01_Upper_teethProxy + - first: + 4: 400220 + second: headProxy_geo + - first: + 4: 400222 + second: RightLipUpper + - first: + 4: 400224 + second: RightNostril + - first: + 4: 400226 + second: RightCheek + - first: + 4: 400228 + second: RightEyelidLower + - first: + 4: 400230 + second: RightEyelidUpper + - first: + 4: 400232 + second: RightIOuterBrow + - first: + 4: 400234 + second: RightInnerBrow + - first: + 4: 400236 + second: LeftIOuterBrow + - first: + 4: 400238 + second: LeftInnerBrow + - first: + 4: 400240 + second: LeftEyelidUpper + - first: + 4: 400242 + second: LeftEyelidLower + - first: + 4: 400244 + second: LeftCheek + - first: + 4: 400246 + second: LeftNostril + - first: + 4: 400248 + second: LeftLipUpper + - first: + 4: 400250 + second: jawProxy_geo + - first: + 4: 400252 + second: UNI_01_Lower_teethProxy + - first: + 4: 400254 + second: LeftLipCorner + - first: + 4: 400256 + second: RightLipCorner + - first: + 4: 400258 + second: RightLipLower + - first: + 4: 400260 + second: JawEND + - first: + 4: 400262 + second: LeftLipLower + - first: + 4: 400264 + second: UNI_01_TongueTipProxy + - first: + 4: 400266 + second: TongueTip + - first: + 4: 400268 + second: UNI_01_TongueBaseProxy + - first: + 4: 400270 + second: TongueBack + - first: + 4: 400272 + second: Jaw + - first: + 4: 400274 + second: r_UNI_eye + - first: + 4: 400276 + second: RightEye + - first: + 4: 400278 + second: l_UNI_eye + - first: + 4: 400280 + second: LeftEye + - first: + 4: 400282 + second: HeadTop_End + - first: + 4: 400284 + second: Head + - first: + 4: 400286 + second: Neck + - first: + 4: 400288 + second: Chest + - first: + 4: 400290 + second: Spine + - first: + 4: 400292 + second: Hips + - first: + 4: 400294 + second: Reference + - first: + 23: 2300000 + second: l_hipProxy_geo + - first: + 23: 2300002 + second: l_kneeProxy_geo + - first: + 23: 2300004 + second: l_ankleProxy_geo + - first: + 23: 2300006 + second: l_ballProxy_geo + - first: + 23: 2300008 + second: pelvisProxy_geo + - first: + 23: 2300010 + second: r_hipProxy_geo + - first: + 23: 2300012 + second: r_kneeProxy_geo + - first: + 23: 2300014 + second: r_ankleProxy_geo + - first: + 23: 2300016 + second: r_ballProxy_geo + - first: + 23: 2300018 + second: spineProxy_geo + - first: + 23: 2300020 + second: l_clavicleProxy_geo + - first: + 23: 2300022 + second: l_shourderProxy_geo + - first: + 23: 2300024 + second: l_erbowProxy_geo + - first: + 23: 2300026 + second: l_wristProxy_geo + - first: + 23: 2300028 + second: l_thumbProxy_01_geo + - first: + 23: 2300030 + second: l_thumbProxy_02_geo + - first: + 23: 2300032 + second: l_thumbProxy_03_geo + - first: + 23: 2300034 + second: l_indexProxy_01_geo + - first: + 23: 2300036 + second: l_indexProxy_02_geo + - first: + 23: 2300038 + second: l_indexProxy_03_geo + - first: + 23: 2300040 + second: l_middleProxy_01_geo + - first: + 23: 2300042 + second: l_middleProxy_02_geo + - first: + 23: 2300044 + second: l_middleProxy_03_geo + - first: + 23: 2300046 + second: l_ringProxy_01_geo + - first: + 23: 2300048 + second: l_ringProxy_02_geo + - first: + 23: 2300050 + second: l_ringProxy_03_geo + - first: + 23: 2300052 + second: l_pinkyProxy_01_geo + - first: + 23: 2300054 + second: l_pinkyProxy_02_geo + - first: + 23: 2300056 + second: l_pinkyProxy_03_geo + - first: + 23: 2300058 + second: chestProxy_geo + - first: + 23: 2300060 + second: r_clavicleProxy_geo + - first: + 23: 2300062 + second: r_shourderProxy_geo + - first: + 23: 2300064 + second: r_erbowProxy_geo + - first: + 23: 2300066 + second: r_wristProxy_geo + - first: + 23: 2300068 + second: r_thumbProxy_01_geo + - first: + 23: 2300070 + second: r_thumbProxy_02_geo + - first: + 23: 2300072 + second: r_thumbProxy_03_geo + - first: + 23: 2300074 + second: r_indexProxy_01_geo + - first: + 23: 2300076 + second: r_indexProxy_02_geo + - first: + 23: 2300078 + second: r_indexProxy_03_geo + - first: + 23: 2300080 + second: r_middleProxy_01_geo + - first: + 23: 2300082 + second: r_middleProxy_02_geo + - first: + 23: 2300084 + second: r_middleProxy_03_geo + - first: + 23: 2300086 + second: r_ringProxy_01_geo + - first: + 23: 2300088 + second: r_ringProxy_02_geo + - first: + 23: 2300090 + second: r_ringProxy_03_geo + - first: + 23: 2300092 + second: r_pinkyProxy_01_geo + - first: + 23: 2300094 + second: r_pinkyProxy_02_geo + - first: + 23: 2300096 + second: r_pinkyProxy_03_geo + - first: + 23: 2300098 + second: neckProxy_geo + - first: + 23: 2300100 + second: UNI_01_Upper_teethProxy + - first: + 23: 2300102 + second: headProxy_geo + - first: + 23: 2300104 + second: jawProxy_geo + - first: + 23: 2300106 + second: UNI_01_Lower_teethProxy + - first: + 23: 2300108 + second: UNI_01_TongueTipProxy + - first: + 23: 2300110 + second: UNI_01_TongueBaseProxy + - first: + 23: 2300112 + second: r_UNI_eye + - first: + 23: 2300114 + second: l_UNI_eye + - first: + 33: 3300000 + second: l_hipProxy_geo + - first: + 33: 3300002 + second: l_kneeProxy_geo + - first: + 33: 3300004 + second: l_ankleProxy_geo + - first: + 33: 3300006 + second: l_ballProxy_geo + - first: + 33: 3300008 + second: pelvisProxy_geo + - first: + 33: 3300010 + second: r_hipProxy_geo + - first: + 33: 3300012 + second: r_kneeProxy_geo + - first: + 33: 3300014 + second: r_ankleProxy_geo + - first: + 33: 3300016 + second: r_ballProxy_geo + - first: + 33: 3300018 + second: spineProxy_geo + - first: + 33: 3300020 + second: l_clavicleProxy_geo + - first: + 33: 3300022 + second: l_shourderProxy_geo + - first: + 33: 3300024 + second: l_erbowProxy_geo + - first: + 33: 3300026 + second: l_wristProxy_geo + - first: + 33: 3300028 + second: l_thumbProxy_01_geo + - first: + 33: 3300030 + second: l_thumbProxy_02_geo + - first: + 33: 3300032 + second: l_thumbProxy_03_geo + - first: + 33: 3300034 + second: l_indexProxy_01_geo + - first: + 33: 3300036 + second: l_indexProxy_02_geo + - first: + 33: 3300038 + second: l_indexProxy_03_geo + - first: + 33: 3300040 + second: l_middleProxy_01_geo + - first: + 33: 3300042 + second: l_middleProxy_02_geo + - first: + 33: 3300044 + second: l_middleProxy_03_geo + - first: + 33: 3300046 + second: l_ringProxy_01_geo + - first: + 33: 3300048 + second: l_ringProxy_02_geo + - first: + 33: 3300050 + second: l_ringProxy_03_geo + - first: + 33: 3300052 + second: l_pinkyProxy_01_geo + - first: + 33: 3300054 + second: l_pinkyProxy_02_geo + - first: + 33: 3300056 + second: l_pinkyProxy_03_geo + - first: + 33: 3300058 + second: chestProxy_geo + - first: + 33: 3300060 + second: r_clavicleProxy_geo + - first: + 33: 3300062 + second: r_shourderProxy_geo + - first: + 33: 3300064 + second: r_erbowProxy_geo + - first: + 33: 3300066 + second: r_wristProxy_geo + - first: + 33: 3300068 + second: r_thumbProxy_01_geo + - first: + 33: 3300070 + second: r_thumbProxy_02_geo + - first: + 33: 3300072 + second: r_thumbProxy_03_geo + - first: + 33: 3300074 + second: r_indexProxy_01_geo + - first: + 33: 3300076 + second: r_indexProxy_02_geo + - first: + 33: 3300078 + second: r_indexProxy_03_geo + - first: + 33: 3300080 + second: r_middleProxy_01_geo + - first: + 33: 3300082 + second: r_middleProxy_02_geo + - first: + 33: 3300084 + second: r_middleProxy_03_geo + - first: + 33: 3300086 + second: r_ringProxy_01_geo + - first: + 33: 3300088 + second: r_ringProxy_02_geo + - first: + 33: 3300090 + second: r_ringProxy_03_geo + - first: + 33: 3300092 + second: r_pinkyProxy_01_geo + - first: + 33: 3300094 + second: r_pinkyProxy_02_geo + - first: + 33: 3300096 + second: r_pinkyProxy_03_geo + - first: + 33: 3300098 + second: neckProxy_geo + - first: + 33: 3300100 + second: UNI_01_Upper_teethProxy + - first: + 33: 3300102 + second: headProxy_geo + - first: + 33: 3300104 + second: jawProxy_geo + - first: + 33: 3300106 + second: UNI_01_Lower_teethProxy + - first: + 33: 3300108 + second: UNI_01_TongueTipProxy + - first: + 33: 3300110 + second: UNI_01_TongueBaseProxy + - first: + 33: 3300112 + second: r_UNI_eye + - first: + 33: 3300114 + second: l_UNI_eye + - first: + 43: 4300000 + second: l_UNI_eye + - first: + 43: 4300002 + second: r_UNI_eye + - first: + 43: 4300004 + second: UNI_01_TongueBaseProxy + - first: + 43: 4300006 + second: UNI_01_TongueTipProxy + - first: + 43: 4300008 + second: UNI_01_Lower_teethProxy + - first: + 43: 4300010 + second: jawProxy_geo + - first: + 43: 4300012 + second: headProxy_geo + - first: + 43: 4300014 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300016 + second: neckProxy_geo + - first: + 43: 4300018 + second: r_pinkyProxy_03_geo + - first: + 43: 4300020 + second: r_pinkyProxy_02_geo + - first: + 43: 4300022 + second: r_pinkyProxy_01_geo + - first: + 43: 4300024 + second: r_ringProxy_03_geo + - first: + 43: 4300026 + second: r_ringProxy_02_geo + - first: + 43: 4300028 + second: r_ringProxy_01_geo + - first: + 43: 4300030 + second: r_middleProxy_03_geo + - first: + 43: 4300032 + second: r_middleProxy_02_geo + - first: + 43: 4300034 + second: r_middleProxy_01_geo + - first: + 43: 4300036 + second: r_indexProxy_03_geo + - first: + 43: 4300038 + second: r_indexProxy_02_geo + - first: + 43: 4300040 + second: r_indexProxy_01_geo + - first: + 43: 4300042 + second: r_thumbProxy_03_geo + - first: + 43: 4300044 + second: r_thumbProxy_02_geo + - first: + 43: 4300046 + second: r_thumbProxy_01_geo + - first: + 43: 4300048 + second: r_wristProxy_geo + - first: + 43: 4300050 + second: r_erbowProxy_geo + - first: + 43: 4300052 + second: r_shourderProxy_geo + - first: + 43: 4300054 + second: r_clavicleProxy_geo + - first: + 43: 4300056 + second: chestProxy_geo + - first: + 43: 4300058 + second: l_pinkyProxy_03_geo + - first: + 43: 4300060 + second: l_pinkyProxy_02_geo + - first: + 43: 4300062 + second: l_pinkyProxy_01_geo + - first: + 43: 4300064 + second: l_ringProxy_03_geo + - first: + 43: 4300066 + second: l_ringProxy_02_geo + - first: + 43: 4300068 + second: l_ringProxy_01_geo + - first: + 43: 4300070 + second: l_middleProxy_03_geo + - first: + 43: 4300072 + second: l_middleProxy_02_geo + - first: + 43: 4300074 + second: l_middleProxy_01_geo + - first: + 43: 4300076 + second: l_indexProxy_03_geo + - first: + 43: 4300078 + second: l_indexProxy_02_geo + - first: + 43: 4300080 + second: l_indexProxy_01_geo + - first: + 43: 4300082 + second: l_thumbProxy_03_geo + - first: + 43: 4300084 + second: l_thumbProxy_02_geo + - first: + 43: 4300086 + second: l_thumbProxy_01_geo + - first: + 43: 4300088 + second: l_wristProxy_geo + - first: + 43: 4300090 + second: l_erbowProxy_geo + - first: + 43: 4300092 + second: l_shourderProxy_geo + - first: + 43: 4300094 + second: l_clavicleProxy_geo + - first: + 43: 4300096 + second: spineProxy_geo + - first: + 43: 4300098 + second: r_ballProxy_geo + - first: + 43: 4300100 + second: r_ankleProxy_geo + - first: + 43: 4300102 + second: r_kneeProxy_geo + - first: + 43: 4300104 + second: r_hipProxy_geo + - first: + 43: 4300106 + second: pelvisProxy_geo + - first: + 43: 4300108 + second: l_ballProxy_geo + - first: + 43: 4300110 + second: l_ankleProxy_geo + - first: + 43: 4300112 + second: l_kneeProxy_geo + - first: + 43: 4300114 + second: l_hipProxy_geo + - first: + 74: 7400000 + second: __preview___207_Idle_JumpUpMedium_NoHands1Step_Idle + - first: + 74: 7400002 + second: HumanoidIdleJumpUp + - first: + 74: 7400004 + second: HumanoidFall + - first: + 74: 7400006 + second: HumanoidJumpUp + - first: + 74: 7400008 + second: HumanoidMidAir + - first: + 95: 9500000 + second: //RootNode + - first: + 111: 11100000 + second: //RootNode + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 1 + materialSearch: 2 + materialLocation: 0 + animations: + legacyGenerateAnimations: 3 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: + - serializedVersion: 16 + name: HumanoidIdleJumpUp + takeName: _207_Idle_JumpUpMedium_NoHands1Step_Idle + internalID: 0 + firstFrame: 56 + lastFrame: 233 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 0 + loopBlend: 0 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: + - path: + weight: 0 + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidFall + takeName: _207_Idle_JumpUpMedium_NoHands1Step_Idle + internalID: 0 + firstFrame: 127 + lastFrame: 129 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: + - path: + weight: 1 + - path: Reference + weight: 1 + - path: Reference/Hips + weight: 1 + - path: Reference/Hips/LeftUpLeg + weight: 1 + - path: Reference/Hips/LeftUpLeg/l_hipProxy_geo + weight: 0 + - path: Reference/Hips/LeftUpLeg/LeftLeg + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/l_kneeProxy_geo + weight: 0 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot/l_ankleProxy_geo + weight: 0 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot/LeftToes + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot/LeftToes/l_ballProxy_geo + weight: 0 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot/LeftToes/LToeBase_End2 + weight: 0 + - path: Reference/Hips/pelvisProxy_geo + weight: 0 + - path: Reference/Hips/RightUpLeg + weight: 1 + - path: Reference/Hips/RightUpLeg/r_hipProxy_geo + weight: 0 + - path: Reference/Hips/RightUpLeg/RightLeg + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/r_kneeProxy_geo + weight: 0 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot/r_ankleProxy_geo + weight: 0 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot/RightToes + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot/RightToes/LToeBase_End3 + weight: 0 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot/RightToes/r_ballProxy_geo + weight: 0 + - path: Reference/Hips/Spine + weight: 1 + - path: Reference/Hips/Spine/Chest + weight: 1 + - path: Reference/Hips/Spine/Chest/chestProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/l_clavicleProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/l_shourderProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/l_erbowProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/l_wristProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/l_indexProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/l_indexProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/LeftHandIndex3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/LeftHandIndex3/l_indexProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/LeftHandIndex3/LeftHandIndex13 + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/l_middleProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/l_middleProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/LeftHandMiddle3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/LeftHandMiddle3/l_middleProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/LeftHandMiddle3/LeftHandMiddle13 + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/l_pinkyProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/l_pinkyProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/LeftHandPinky3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/LeftHandPinky3/l_pinkyProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/LeftHandPinky3/LeftHandPinky13 + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/l_ringProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/l_ringProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/LeftHandRing3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/LeftHandRing3/l_ringProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/LeftHandRing3/LeftHandRing13 + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/l_thumbProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/l_thumbProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/LeftHandThumb3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/LeftHandThumb3/l_thumbProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/LeftHandThumb3/LeftHandThumb13 + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/headProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/HeadTop_End + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/JawEND + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/jawProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/LeftLipCorner + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/LeftLipLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/RightLipCorner + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/RightLipLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueBack + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueBack/UNI_01_TongueBaseProxy + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueTip + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueTip/UNI_01_TongueTipProxy + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/UNI_01_Lower_teethProxy + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftCheek + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEye + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEye/l_UNI_eye + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEyelidLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEyelidUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftInnerBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftIOuterBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftLipUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftNostril + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightCheek + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEye + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEye/r_UNI_eye + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEyelidLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEyelidUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightInnerBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightIOuterBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightLipUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightNostril + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/UNI_01_Upper_teethProxy + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/neckProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/r_clavicleProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/r_shourderProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/r_erbowProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/r_wristProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/r_indexProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/r_indexProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/RightHandIndex3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/RightHandIndex3/LeftHandIndex17 + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/RightHandIndex3/r_indexProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/r_middleProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/r_middleProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/RightHandMiddle3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/RightHandMiddle3/LeftHandMiddle17 + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/RightHandMiddle3/r_middleProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/r_pinkyProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/r_pinkyProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/RightHandPinky3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/RightHandPinky3/LeftHandPinky17 + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/RightHandPinky3/r_pinkyProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/r_ringProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/r_ringProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/RightHandRing3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/RightHandRing3/LeftHandRing17 + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/RightHandRing3/r_ringProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/r_thumbProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/r_thumbProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/RightHandThumb3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/RightHandThumb3/LeftHandThumb17 + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/RightHandThumb3/r_thumbProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/spineProxy_geo + weight: 0 + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidJumpUp + takeName: _207_Idle_JumpUpMedium_NoHands1Step_Idle + internalID: 0 + firstFrame: 125 + lastFrame: 127 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: + - path: + weight: 1 + - path: Reference + weight: 1 + - path: Reference/Hips + weight: 1 + - path: Reference/Hips/LeftUpLeg + weight: 1 + - path: Reference/Hips/LeftUpLeg/l_hipProxy_geo + weight: 0 + - path: Reference/Hips/LeftUpLeg/LeftLeg + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/l_kneeProxy_geo + weight: 0 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot/l_ankleProxy_geo + weight: 0 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot/LeftToes + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot/LeftToes/l_ballProxy_geo + weight: 0 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot/LeftToes/LToeBase_End2 + weight: 0 + - path: Reference/Hips/pelvisProxy_geo + weight: 0 + - path: Reference/Hips/RightUpLeg + weight: 1 + - path: Reference/Hips/RightUpLeg/r_hipProxy_geo + weight: 0 + - path: Reference/Hips/RightUpLeg/RightLeg + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/r_kneeProxy_geo + weight: 0 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot/r_ankleProxy_geo + weight: 0 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot/RightToes + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot/RightToes/LToeBase_End3 + weight: 0 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot/RightToes/r_ballProxy_geo + weight: 0 + - path: Reference/Hips/Spine + weight: 1 + - path: Reference/Hips/Spine/Chest + weight: 1 + - path: Reference/Hips/Spine/Chest/chestProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/l_clavicleProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/l_shourderProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/l_erbowProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/l_wristProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/l_indexProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/l_indexProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/LeftHandIndex3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/LeftHandIndex3/l_indexProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/LeftHandIndex3/LeftHandIndex13 + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/l_middleProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/l_middleProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/LeftHandMiddle3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/LeftHandMiddle3/l_middleProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/LeftHandMiddle3/LeftHandMiddle13 + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/l_pinkyProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/l_pinkyProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/LeftHandPinky3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/LeftHandPinky3/l_pinkyProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/LeftHandPinky3/LeftHandPinky13 + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/l_ringProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/l_ringProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/LeftHandRing3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/LeftHandRing3/l_ringProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/LeftHandRing3/LeftHandRing13 + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/l_thumbProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/l_thumbProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/LeftHandThumb3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/LeftHandThumb3/l_thumbProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/LeftHandThumb3/LeftHandThumb13 + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/headProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/HeadTop_End + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/JawEND + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/jawProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/LeftLipCorner + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/LeftLipLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/RightLipCorner + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/RightLipLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueBack + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueBack/UNI_01_TongueBaseProxy + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueTip + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueTip/UNI_01_TongueTipProxy + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/UNI_01_Lower_teethProxy + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftCheek + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEye + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEye/l_UNI_eye + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEyelidLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEyelidUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftInnerBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftIOuterBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftLipUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftNostril + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightCheek + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEye + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEye/r_UNI_eye + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEyelidLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEyelidUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightInnerBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightIOuterBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightLipUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightNostril + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/UNI_01_Upper_teethProxy + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/neckProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/r_clavicleProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/r_shourderProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/r_erbowProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/r_wristProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/r_indexProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/r_indexProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/RightHandIndex3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/RightHandIndex3/LeftHandIndex17 + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/RightHandIndex3/r_indexProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/r_middleProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/r_middleProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/RightHandMiddle3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/RightHandMiddle3/LeftHandMiddle17 + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/RightHandMiddle3/r_middleProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/r_pinkyProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/r_pinkyProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/RightHandPinky3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/RightHandPinky3/LeftHandPinky17 + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/RightHandPinky3/r_pinkyProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/r_ringProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/r_ringProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/RightHandRing3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/RightHandRing3/LeftHandRing17 + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/RightHandRing3/r_ringProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/r_thumbProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/r_thumbProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/RightHandThumb3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/RightHandThumb3/LeftHandThumb17 + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/RightHandThumb3/r_thumbProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/spineProxy_geo + weight: 0 + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidMidAir + takeName: _207_Idle_JumpUpMedium_NoHands1Step_Idle + internalID: 0 + firstFrame: 131 + lastFrame: 133 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: + - path: + weight: 1 + - path: Reference + weight: 1 + - path: Reference/Hips + weight: 1 + - path: Reference/Hips/LeftUpLeg + weight: 1 + - path: Reference/Hips/LeftUpLeg/l_hipProxy_geo + weight: 0 + - path: Reference/Hips/LeftUpLeg/LeftLeg + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/l_kneeProxy_geo + weight: 0 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot/l_ankleProxy_geo + weight: 0 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot/LeftToes + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot/LeftToes/l_ballProxy_geo + weight: 0 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot/LeftToes/LToeBase_End2 + weight: 0 + - path: Reference/Hips/pelvisProxy_geo + weight: 0 + - path: Reference/Hips/RightUpLeg + weight: 1 + - path: Reference/Hips/RightUpLeg/r_hipProxy_geo + weight: 0 + - path: Reference/Hips/RightUpLeg/RightLeg + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/r_kneeProxy_geo + weight: 0 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot/r_ankleProxy_geo + weight: 0 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot/RightToes + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot/RightToes/LToeBase_End3 + weight: 0 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot/RightToes/r_ballProxy_geo + weight: 0 + - path: Reference/Hips/Spine + weight: 1 + - path: Reference/Hips/Spine/Chest + weight: 1 + - path: Reference/Hips/Spine/Chest/chestProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/l_clavicleProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/l_shourderProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/l_erbowProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/l_wristProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/l_indexProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/l_indexProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/LeftHandIndex3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/LeftHandIndex3/l_indexProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/LeftHandIndex3/LeftHandIndex13 + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/l_middleProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/l_middleProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/LeftHandMiddle3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/LeftHandMiddle3/l_middleProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/LeftHandMiddle3/LeftHandMiddle13 + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/l_pinkyProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/l_pinkyProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/LeftHandPinky3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/LeftHandPinky3/l_pinkyProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/LeftHandPinky3/LeftHandPinky13 + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/l_ringProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/l_ringProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/LeftHandRing3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/LeftHandRing3/l_ringProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/LeftHandRing3/LeftHandRing13 + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/l_thumbProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/l_thumbProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/LeftHandThumb3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/LeftHandThumb3/l_thumbProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/LeftHandThumb3/LeftHandThumb13 + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/headProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/HeadTop_End + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/JawEND + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/jawProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/LeftLipCorner + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/LeftLipLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/RightLipCorner + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/RightLipLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueBack + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueBack/UNI_01_TongueBaseProxy + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueTip + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueTip/UNI_01_TongueTipProxy + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/UNI_01_Lower_teethProxy + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftCheek + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEye + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEye/l_UNI_eye + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEyelidLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEyelidUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftInnerBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftIOuterBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftLipUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftNostril + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightCheek + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEye + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEye/r_UNI_eye + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEyelidLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEyelidUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightInnerBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightIOuterBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightLipUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightNostril + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/UNI_01_Upper_teethProxy + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/neckProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/r_clavicleProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/r_shourderProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/r_erbowProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/r_wristProxy_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/r_indexProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/r_indexProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/RightHandIndex3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/RightHandIndex3/LeftHandIndex17 + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/RightHandIndex3/r_indexProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/r_middleProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/r_middleProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/RightHandMiddle3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/RightHandMiddle3/LeftHandMiddle17 + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/RightHandMiddle3/r_middleProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/r_pinkyProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/r_pinkyProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/RightHandPinky3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/RightHandPinky3/LeftHandPinky17 + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/RightHandPinky3/r_pinkyProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/r_ringProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/r_ringProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/RightHandRing3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/RightHandRing3/LeftHandRing17 + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/RightHandRing3/r_ringProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/r_thumbProxy_01_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/r_thumbProxy_02_geo + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/RightHandThumb3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/RightHandThumb3/LeftHandThumb17 + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/RightHandThumb3/r_thumbProxy_03_geo + weight: 0 + - path: Reference/Hips/Spine/spineProxy_geo + weight: 0 + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.01 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 0 + importBlendShapes: 0 + importCameras: 0 + importLights: 0 + fileIdsGeneration: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 4 + normalCalculationMode: 0 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: + - boneName: Hips + humanName: Hips + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftUpLeg + humanName: LeftUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightUpLeg + humanName: RightUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftLeg + humanName: LeftLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightLeg + humanName: RightLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftFoot + humanName: LeftFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightFoot + humanName: RightFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Spine + humanName: Spine + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Chest + humanName: Chest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Neck + humanName: Neck + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Head + humanName: Head + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftShoulder + humanName: LeftShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightShoulder + humanName: RightShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftArm + humanName: LeftUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightArm + humanName: RightUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftForeArm + humanName: LeftLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightForeArm + humanName: RightLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHand + humanName: LeftHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHand + humanName: RightHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftToes + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightToes + humanName: RightToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Jaw + humanName: Jaw + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb1 + humanName: Left Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb2 + humanName: Left Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb3 + humanName: Left Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex1 + humanName: Left Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex2 + humanName: Left Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex3 + humanName: Left Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle1 + humanName: Left Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle2 + humanName: Left Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle3 + humanName: Left Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing1 + humanName: Left Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing2 + humanName: Left Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing3 + humanName: Left Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky1 + humanName: Left Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky2 + humanName: Left Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky3 + humanName: Left Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb1 + humanName: Right Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb2 + humanName: Right Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb3 + humanName: Right Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex1 + humanName: Right Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex2 + humanName: Right Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex3 + humanName: Right Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle1 + humanName: Right Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle2 + humanName: Right Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle3 + humanName: Right Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing1 + humanName: Right Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing2 + humanName: Right Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing3 + humanName: Right Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky1 + humanName: Right Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky2 + humanName: Right Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky3 + humanName: Right Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + skeleton: + - name: IdleJumpAndFall(Clone) + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Hips + parentName: + position: {x: 0, y: 0.968898, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftUpLeg + parentName: + position: {x: -0.0754495, y: -0.04566402, z: 3.5527136e-17} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLeg + parentName: + position: {x: -0.020550499, y: -0.40912998, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftFoot + parentName: + position: {x: -0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftToes + parentName: + position: {x: -0.007487, y: -0.0731673, z: 0.14542712} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LToeBase_End2 + parentName: + position: {x: 0.01264, y: -0.013135779, z: 0.03589337} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightUpLeg + parentName: + position: {x: 0.075449534, y: -0.04566399, z: -7.105427e-17} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLeg + parentName: + position: {x: 0.020550467, y: -0.40913, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightFoot + parentName: + position: {x: 0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightToes + parentName: + position: {x: 0.007487, y: -0.0731673, z: 0.1454275} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LToeBase_End3 + parentName: + position: {x: -0.01264, y: -0.013135779, z: 0.035892997} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Spine + parentName: + position: {x: -3.5527135e-16, y: 0.092263184, z: 0.015771331} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Chest + parentName: + position: {x: -0, y: 0.16254029, z: -0.0016560555} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftShoulder + parentName: + position: {x: -0.038285997, y: 0.2216225, z: -0.017063085} + rotation: {x: 0.013628214, y: -0.0033451605, z: 0.16034958, w: 0.98696053} + scale: {x: 1, y: 1, z: 1} + - name: LeftArm + parentName: + position: {x: -0.10050205, y: 8.5265126e-16, z: -1.9184653e-15} + rotation: {x: 0.37591177, y: -0.054592364, z: -0.13171308, w: 0.915621} + scale: {x: 1, y: 1, z: 1} + - name: LeftForeArm + parentName: + position: {x: -0.2540493, y: -5.6772363e-14, z: -7.7463367e-13} + rotation: {x: -0.03333591, y: 0.020644123, z: -0.01734835, w: 0.99908036} + scale: {x: 1, y: 1, z: 1} + - name: LeftHand + parentName: + position: {x: -0.24638927, y: -1.3451995e-12, z: -1.4850022e-11} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex1 + parentName: + position: {x: -0.0751258, y: -0.0078414045, z: 0.032652643} + rotation: {x: -0.030835044, y: 0.017968778, z: 0.08719326, w: 0.99555194} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex2 + parentName: + position: {x: -0.03979728, y: 0.000049808405, z: 0.0011857504} + rotation: {x: -0.06893383, y: 0.014713662, z: 0.027949251, w: 0.9971211} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex3 + parentName: + position: {x: -0.027968477, y: -0.000000006283088, z: -0.00000005172172} + rotation: {x: -0.00000019837171, y: 0.07579723, z: 0.08633665, w: 0.9933785} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex13 + parentName: + position: {x: -0.018661967, y: 0.0043738526, z: -0.003840025} + rotation: {x: -0.0047212443, y: -0.101354174, z: -0.046291053, w: 0.99376166} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle1 + parentName: + position: {x: -0.076023825, y: -0.0018851344, z: 0.010141229} + rotation: {x: -0.01571757, y: 0.053721238, z: 0.08647313, w: 0.9946805} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle2 + parentName: + position: {x: -0.044280436, y: 0.0000047988738, z: -0.00042540013} + rotation: {x: -0.008446485, y: -0.006292184, z: 0.026998896, w: 0.99957997} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle3 + parentName: + position: {x: -0.033964828, y: -0.000000012198452, z: 0.000000003751609} + rotation: {x: 0, y: 0.008562216, z: 0.060155462, w: 0.9981523} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle13 + parentName: + position: {x: -0.019671572, y: 0.0039255726, z: -0.0005588144} + rotation: {x: -0.00070156495, y: -0.0125020025, z: -0.056023665, w: 0.9983509} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky1 + parentName: + position: {x: -0.06565995, y: -0.007825106, z: -0.032251246} + rotation: {x: -0.046427853, y: 0.07573964, z: 0.086157486, w: 0.99231297} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky2 + parentName: + position: {x: -0.030805448, y: -0.000030874573, z: -0.0014480775} + rotation: {x: 0.049293827, y: -0.021720815, z: 0.03294899, w: 0.9980044} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky3 + parentName: + position: {x: -0.023064027, y: -0.0000064025826, z: 0.000000018330093} + rotation: {x: 0.000016131904, y: -0.058952924, z: 0.03817136, w: 0.9975307} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky13 + parentName: + position: {x: -0.016971992, y: 0.0020288266, z: 0.0031403229} + rotation: {x: 0.00058051164, y: 0.09441839, z: -0.006120706, w: 0.9955136} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing1 + parentName: + position: {x: -0.07030211, y: -0.0037453093, z: -0.011411792} + rotation: {x: -0.013746345, y: 0.07464847, z: 0.08505904, w: 0.99348056} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing2 + parentName: + position: {x: -0.043135457, y: -0.000020882308, z: -0.0022351784} + rotation: {x: 0.019321503, y: -0.025657631, z: 0.029047232, w: 0.99906194} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing3 + parentName: + position: {x: -0.030835565, y: 7.6733495e-11, z: -0.000000016497417} + rotation: {x: 0.000000024680048, y: -0.017875768, z: 0.042180043, w: 0.9989502} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing13 + parentName: + position: {x: -0.020541638, y: 0.0032542208, z: 0.0013791834} + rotation: {x: 0.0024024886, y: 0.037838276, z: -0.06332044, w: 0.9972728} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb1 + parentName: + position: {x: -0.014231241, y: -0.012377825, z: 0.025531668} + rotation: {x: -0.18747139, y: -0.09526798, z: -0.18643619, w: 0.9596979} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb2 + parentName: + position: {x: -0.016374, y: -0.00529, z: 0.023491409} + rotation: {x: -0.026062373, y: 0.09668853, z: 0.0036070915, w: 0.9949669} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb3 + parentName: + position: {x: -0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0.005452732, y: 0.00044311385, z: 0.00682628, w: 0.99996173} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb13 + parentName: + position: {x: -0.031868957, y: -0.005299945, z: 0.0258005} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Neck + parentName: + position: {x: 4.2632563e-16, y: 0.2590093, z: -0.032413255} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Head + parentName: + position: {x: 1.2789769e-15, y: 0.08307038, z: 0.0113267815} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: HeadTop_End + parentName: + position: {x: -5.1704583e-18, y: 0.18817878, z: 0.012108689} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Jaw + parentName: + position: {x: 1.7347234e-20, y: 0.0111267585, z: 0.010327543} + rotation: {x: 0.21924005, y: -0, z: -0, w: 0.975671} + scale: {x: 1, y: 1, z: 1} + - name: JawEND + parentName: + position: {x: -1.7347234e-20, y: -0.04828876, z: 0.07185171} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipCorner + parentName: + position: {x: -0.032843262, y: -0.01657876, z: 0.066121764} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipLower + parentName: + position: {x: -0.014250817, y: -0.02168876, z: 0.08224063} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipCorner + parentName: + position: {x: 0.03284, y: -0.01657876, z: 0.066118784} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipLower + parentName: + position: {x: 0.014250817, y: -0.02168876, z: 0.082238786} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftCheek + parentName: + position: {x: -0.054244027, y: 0.03370195, z: 0.0594304} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEye + parentName: + position: {x: -0.020848233, y: 0.0825027, z: 0.055427432} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidLower + parentName: + position: {x: -0.035618957, y: 0.06507366, z: 0.07623474} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidUpper + parentName: + position: {x: -0.034406897, y: 0.10060814, z: 0.08020531} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftInnerBrow + parentName: + position: {x: -0.012062691, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftIOuterBrow + parentName: + position: {x: -0.05503987, y: 0.11482529, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipUpper + parentName: + position: {x: -0.014501322, y: -0.005111811, z: 0.09461884} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftNostril + parentName: + position: {x: -0.0179, y: 0.026312828, z: 0.0908674} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightCheek + parentName: + position: {x: 0.054239996, y: 0.033702828, z: 0.0594274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEye + parentName: + position: {x: 0.020849999, y: 0.08250283, z: 0.0554274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidLower + parentName: + position: {x: 0.03562, y: 0.06507283, z: 0.0762374} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidUpper + parentName: + position: {x: 0.03441, y: 0.10061283, z: 0.08020739} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightInnerBrow + parentName: + position: {x: 0.012062687, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightIOuterBrow + parentName: + position: {x: 0.055040002, y: 0.11482283, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipUpper + parentName: + position: {x: 0.014501322, y: -0.0051071714, z: 0.094617404} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightNostril + parentName: + position: {x: 0.0179, y: 0.026308905, z: 0.09087062} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightShoulder + parentName: + position: {x: 0.038286015, y: 0.22162114, z: -0.017063085} + rotation: {x: 0.15645637, y: 0.98711497, z: 0.02892334, w: 0.016999954} + scale: {x: 1, y: 1, z: 1} + - name: RightArm + parentName: + position: {x: -0.100501455, y: -0.0000024995522, z: -0.000000051557407} + rotation: {x: 0.10577453, y: 0.95214, z: -0.2857039, w: -0.024788901} + scale: {x: 1, y: 1, z: 1} + - name: RightForeArm + parentName: + position: {x: 0.25342825, y: 0.006011353, z: -0.016704524} + rotation: {x: 0.0055303723, y: 0.025294788, z: -0.014007926, w: 0.9995666} + scale: {x: 1, y: 1, z: 1} + - name: RightHand + parentName: + position: {x: 0.2453737, y: 0.021641772, z: 0.005550465} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex1 + parentName: + position: {x: 0.0747695, y: -0.0012430536, z: 0.034344498} + rotation: {x: -0.02700006, y: 0.13470407, z: -0.06016864, w: 0.9886889} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex2 + parentName: + position: {x: 0.0370584, y: 0.00072612107, z: 0.014538894} + rotation: {x: -0.08035798, y: 0.02302343, z: 0.043748345, w: 0.9955394} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex3 + parentName: + position: {x: 0.025225038, y: -0.0049664653, z: 0.011012146} + rotation: {x: 0.020533867, y: -0.07771567, z: -0.08208516, w: 0.99337846} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex17 + parentName: + position: {x: 0.019119978, y: 0.00084630825, z: 0.0039816475} + rotation: {x: -0.0047212443, y: -0.101354174, z: -0.046291053, w: 0.99376166} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle1 + parentName: + position: {x: 0.075647645, y: 0.0047914027, z: 0.011853182} + rotation: {x: -0.013923804, y: 0.009042385, z: -0.046430167, w: 0.9987836} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle2 + parentName: + position: {x: 0.043809064, y: 0.00019418815, z: 0.006454936} + rotation: {x: -0.02143885, y: -0.044562466, z: 0.08641908, w: 0.9950308} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle3 + parentName: + position: {x: 0.03307247, y: -0.007547537, z: 0.0016898462} + rotation: {x: 0.0010897098, y: -0.008687793, z: -0.06012576, w: 0.99815243} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle17 + parentName: + position: {x: 0.020054895, y: -0.0005471089, z: 0.00044259045} + rotation: {x: -0.00070156495, y: -0.0125020025, z: -0.056023665, w: 0.9983509} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky1 + parentName: + position: {x: 0.06680334, y: -0.0019941088, z: -0.030756146} + rotation: {x: -0.05336935, y: -0.25500086, z: -0.01257467, w: 0.965385} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky2 + parentName: + position: {x: 0.028530842, y: -0.001397143, z: -0.011623796} + rotation: {x: 0.033343237, y: 0.0010585558, z: -0.058674466, w: 0.99771965} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky3 + parentName: + position: {x: 0.02142686, y: -0.00055350893, z: -0.008516608} + rotation: {x: -0.012683659, y: 0.059112564, z: -0.03575224, w: 0.9975303} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky17 + parentName: + position: {x: 0.016975116, y: 0.0016113776, z: -0.0033579709} + rotation: {x: 0.00058051164, y: 0.09441839, z: -0.006120706, w: 0.9955136} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing1 + parentName: + position: {x: 0.070598476, y: 0.0024570965, z: -0.009821458} + rotation: {x: -0.014535781, y: -0.11799609, z: -0.02574484, w: 0.99257386} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing2 + parentName: + position: {x: 0.042887185, y: -0.0013753821, z: -0.004945858} + rotation: {x: 0.022079678, y: -0.021696135, z: 0.079611, w: 0.9963452} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing3 + parentName: + position: {x: 0.029500604, y: -0.0076929354, z: -0.004622256} + rotation: {x: -0.0018628112, y: 0.01811421, z: -0.042036954, w: 0.9989501} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing17 + parentName: + position: {x: 0.020670934, y: -0.002000433, z: -0.0017780337} + rotation: {x: 0.0024024886, y: 0.037838276, z: -0.06332044, w: 0.9972728} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb1 + parentName: + position: {x: 0.014684916, y: -0.011104942, z: 0.025858095} + rotation: {x: -0.18467675, y: 0.052388243, z: 0.19327354, w: 0.96218264} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb2 + parentName: + position: {x: 0.016374, y: -0.00529, z: 0.02349136} + rotation: {x: -0.026062947, y: -0.09668788, z: -0.0036065034, w: 0.994967} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb3 + parentName: + position: {x: 0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0.0054543326, y: -0.00044313804, z: -0.006828248, w: 0.9999618} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb17 + parentName: + position: {x: 0.03186904, y: -0.005299946, z: 0.0258005} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 0.01 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidJumpAndFall.fbx b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidJumpAndFall.fbx new file mode 100644 index 000000000..419e2d788 Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidJumpAndFall.fbx differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidJumpAndFall.fbx.meta b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidJumpAndFall.fbx.meta new file mode 100644 index 000000000..e56742994 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidJumpAndFall.fbx.meta @@ -0,0 +1,2262 @@ +fileFormatVersion: 2 +guid: 51dd2e4c869794f75a0df7d54b210214 +labels: +- ObiCloth +- ObiRope +- ObiSoftbody +ModelImporter: + serializedVersion: 19301 + internalIDToNameTable: + - first: + 1: 100000 + second: Chest + - first: + 1: 100002 + second: Geo_grp + - first: + 1: 100004 + second: Head + - first: + 1: 100006 + second: Hips + - first: + 1: 100008 + second: //RootNode + - first: + 1: 100010 + second: Jaw + - first: + 1: 100012 + second: JawEND + - first: + 1: 100014 + second: Le_Eye_Mesh + - first: + 1: 100016 + second: LeftArm + - first: + 1: 100018 + second: LeftCheek + - first: + 1: 100020 + second: LeftEye + - first: + 1: 100022 + second: LeftEyelidLower + - first: + 1: 100024 + second: LeftEyelidUpper + - first: + 1: 100026 + second: LeftFoot + - first: + 1: 100028 + second: LeftForeArm + - first: + 1: 100030 + second: LeftHand + - first: + 1: 100032 + second: LeftHandIndex1 + - first: + 1: 100034 + second: LeftHandIndex2 + - first: + 1: 100036 + second: LeftHandIndex3 + - first: + 1: 100038 + second: LeftHandMiddle1 + - first: + 1: 100040 + second: LeftHandMiddle2 + - first: + 1: 100042 + second: LeftHandMiddle3 + - first: + 1: 100044 + second: LeftHandPinky1 + - first: + 1: 100046 + second: LeftHandPinky2 + - first: + 1: 100048 + second: LeftHandPinky3 + - first: + 1: 100050 + second: LeftHandRing1 + - first: + 1: 100052 + second: LeftHandRing2 + - first: + 1: 100054 + second: LeftHandRing3 + - first: + 1: 100056 + second: LeftHandThumb1 + - first: + 1: 100058 + second: LeftHandThumb2 + - first: + 1: 100060 + second: LeftHandThumb3 + - first: + 1: 100062 + second: LeftInnerBrow + - first: + 1: 100064 + second: LeftIOuterBrow + - first: + 1: 100066 + second: LeftLeg + - first: + 1: 100068 + second: LeftLipCorner + - first: + 1: 100070 + second: LeftLipLower + - first: + 1: 100072 + second: LeftLipUpper + - first: + 1: 100074 + second: LeftNostril + - first: + 1: 100076 + second: LeftShoulder + - first: + 1: 100078 + second: LeftToes + - first: + 1: 100080 + second: LeftUpLeg + - first: + 1: 100082 + second: Lw_Teeth_Mesh + - first: + 1: 100084 + second: Neck + - first: + 1: 100086 + second: Reference + - first: + 1: 100088 + second: Ri_Eye_Mesh + - first: + 1: 100090 + second: RightArm + - first: + 1: 100092 + second: RightCheek + - first: + 1: 100094 + second: RightEye + - first: + 1: 100096 + second: RightEyelidLower + - first: + 1: 100098 + second: RightEyelidUpper + - first: + 1: 100100 + second: RightFoot + - first: + 1: 100102 + second: RightForeArm + - first: + 1: 100104 + second: RightHand + - first: + 1: 100106 + second: RightHandIndex1 + - first: + 1: 100108 + second: RightHandIndex2 + - first: + 1: 100110 + second: RightHandIndex3 + - first: + 1: 100112 + second: RightHandMiddle1 + - first: + 1: 100114 + second: RightHandMiddle2 + - first: + 1: 100116 + second: RightHandMiddle3 + - first: + 1: 100118 + second: RightHandPinky1 + - first: + 1: 100120 + second: RightHandPinky2 + - first: + 1: 100122 + second: RightHandPinky3 + - first: + 1: 100124 + second: RightHandRing1 + - first: + 1: 100126 + second: RightHandRing2 + - first: + 1: 100128 + second: RightHandRing3 + - first: + 1: 100130 + second: RightHandThumb1 + - first: + 1: 100132 + second: RightHandThumb2 + - first: + 1: 100134 + second: RightHandThumb3 + - first: + 1: 100136 + second: RightInnerBrow + - first: + 1: 100138 + second: RightIOuterBrow + - first: + 1: 100140 + second: RightLeg + - first: + 1: 100142 + second: RightLipCorner + - first: + 1: 100144 + second: RightLipLower + - first: + 1: 100146 + second: RightLipUpper + - first: + 1: 100148 + second: RightNostril + - first: + 1: 100150 + second: RightShoulder + - first: + 1: 100152 + second: RightToes + - first: + 1: 100154 + second: RightUpLeg + - first: + 1: 100156 + second: Spine + - first: + 1: 100158 + second: TongueBack + - first: + 1: 100160 + second: TongueTip + - first: + 1: 100162 + second: Tounge_Mesh + - first: + 1: 100164 + second: Unity_Body_Mesh + - first: + 1: 100166 + second: Up_Teeth_Mesh + - first: + 4: 400000 + second: Chest + - first: + 4: 400002 + second: Geo_grp + - first: + 4: 400004 + second: Head + - first: + 4: 400006 + second: Hips + - first: + 4: 400008 + second: //RootNode + - first: + 4: 400010 + second: Jaw + - first: + 4: 400012 + second: JawEND + - first: + 4: 400014 + second: Le_Eye_Mesh + - first: + 4: 400016 + second: LeftArm + - first: + 4: 400018 + second: LeftCheek + - first: + 4: 400020 + second: LeftEye + - first: + 4: 400022 + second: LeftEyelidLower + - first: + 4: 400024 + second: LeftEyelidUpper + - first: + 4: 400026 + second: LeftFoot + - first: + 4: 400028 + second: LeftForeArm + - first: + 4: 400030 + second: LeftHand + - first: + 4: 400032 + second: LeftHandIndex1 + - first: + 4: 400034 + second: LeftHandIndex2 + - first: + 4: 400036 + second: LeftHandIndex3 + - first: + 4: 400038 + second: LeftHandMiddle1 + - first: + 4: 400040 + second: LeftHandMiddle2 + - first: + 4: 400042 + second: LeftHandMiddle3 + - first: + 4: 400044 + second: LeftHandPinky1 + - first: + 4: 400046 + second: LeftHandPinky2 + - first: + 4: 400048 + second: LeftHandPinky3 + - first: + 4: 400050 + second: LeftHandRing1 + - first: + 4: 400052 + second: LeftHandRing2 + - first: + 4: 400054 + second: LeftHandRing3 + - first: + 4: 400056 + second: LeftHandThumb1 + - first: + 4: 400058 + second: LeftHandThumb2 + - first: + 4: 400060 + second: LeftHandThumb3 + - first: + 4: 400062 + second: LeftInnerBrow + - first: + 4: 400064 + second: LeftIOuterBrow + - first: + 4: 400066 + second: LeftLeg + - first: + 4: 400068 + second: LeftLipCorner + - first: + 4: 400070 + second: LeftLipLower + - first: + 4: 400072 + second: LeftLipUpper + - first: + 4: 400074 + second: LeftNostril + - first: + 4: 400076 + second: LeftShoulder + - first: + 4: 400078 + second: LeftToes + - first: + 4: 400080 + second: LeftUpLeg + - first: + 4: 400082 + second: Lw_Teeth_Mesh + - first: + 4: 400084 + second: Neck + - first: + 4: 400086 + second: Reference + - first: + 4: 400088 + second: Ri_Eye_Mesh + - first: + 4: 400090 + second: RightArm + - first: + 4: 400092 + second: RightCheek + - first: + 4: 400094 + second: RightEye + - first: + 4: 400096 + second: RightEyelidLower + - first: + 4: 400098 + second: RightEyelidUpper + - first: + 4: 400100 + second: RightFoot + - first: + 4: 400102 + second: RightForeArm + - first: + 4: 400104 + second: RightHand + - first: + 4: 400106 + second: RightHandIndex1 + - first: + 4: 400108 + second: RightHandIndex2 + - first: + 4: 400110 + second: RightHandIndex3 + - first: + 4: 400112 + second: RightHandMiddle1 + - first: + 4: 400114 + second: RightHandMiddle2 + - first: + 4: 400116 + second: RightHandMiddle3 + - first: + 4: 400118 + second: RightHandPinky1 + - first: + 4: 400120 + second: RightHandPinky2 + - first: + 4: 400122 + second: RightHandPinky3 + - first: + 4: 400124 + second: RightHandRing1 + - first: + 4: 400126 + second: RightHandRing2 + - first: + 4: 400128 + second: RightHandRing3 + - first: + 4: 400130 + second: RightHandThumb1 + - first: + 4: 400132 + second: RightHandThumb2 + - first: + 4: 400134 + second: RightHandThumb3 + - first: + 4: 400136 + second: RightInnerBrow + - first: + 4: 400138 + second: RightIOuterBrow + - first: + 4: 400140 + second: RightLeg + - first: + 4: 400142 + second: RightLipCorner + - first: + 4: 400144 + second: RightLipLower + - first: + 4: 400146 + second: RightLipUpper + - first: + 4: 400148 + second: RightNostril + - first: + 4: 400150 + second: RightShoulder + - first: + 4: 400152 + second: RightToes + - first: + 4: 400154 + second: RightUpLeg + - first: + 4: 400156 + second: Spine + - first: + 4: 400158 + second: TongueBack + - first: + 4: 400160 + second: TongueTip + - first: + 4: 400162 + second: Tounge_Mesh + - first: + 4: 400164 + second: Unity_Body_Mesh + - first: + 4: 400166 + second: Up_Teeth_Mesh + - first: + 23: 2300000 + second: Le_Eye_Mesh + - first: + 23: 2300002 + second: Ri_Eye_Mesh + - first: + 33: 3300000 + second: Le_Eye_Mesh + - first: + 33: 3300002 + second: Ri_Eye_Mesh + - first: + 43: 4300000 + second: Le_Eye_Mesh + - first: + 43: 4300002 + second: Ri_Eye_Mesh + - first: + 43: 4300004 + second: Unity_Body_Mesh + - first: + 43: 4300006 + second: Up_Teeth_Mesh + - first: + 43: 4300008 + second: Lw_Teeth_Mesh + - first: + 43: 4300010 + second: Tounge_Mesh + - first: + 74: 7400000 + second: HumanoidJumpForwardLeft + - first: + 74: 7400002 + second: HumanoidFallLeft + - first: + 74: 7400004 + second: HumanoidJumpForwardRight + - first: + 74: 7400006 + second: HumanoidFallRight + - first: + 95: 9500000 + second: //RootNode + - first: + 137: 13700000 + second: Lw_Teeth_Mesh + - first: + 137: 13700002 + second: Tounge_Mesh + - first: + 137: 13700004 + second: Unity_Body_Mesh + - first: + 137: 13700006 + second: Up_Teeth_Mesh + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 1 + materialSearch: 2 + materialLocation: 0 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: + - serializedVersion: 16 + name: HumanoidJumpForwardLeft + takeName: idle_jumpFwd_idle_tk01 + internalID: 0 + firstFrame: 350 + lastFrame: 352 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: + - path: + weight: 1 + - path: Geo_grp + weight: 0 + - path: Geo_grp/Lw_Teeth_Mesh + weight: 0 + - path: Geo_grp/Tounge_Mesh + weight: 0 + - path: Geo_grp/Unity_Body_Mesh + weight: 0 + - path: Geo_grp/Up_Teeth_Mesh + weight: 0 + - path: Reference + weight: 1 + - path: Reference/Hips + weight: 1 + - path: Reference/Hips/LeftUpLeg + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot/LeftToes + weight: 1 + - path: Reference/Hips/RightUpLeg + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot/RightToes + weight: 1 + - path: Reference/Hips/Spine + weight: 1 + - path: Reference/Hips/Spine/Chest + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/LeftHandIndex3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/LeftHandMiddle3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/LeftHandPinky3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/LeftHandRing3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/LeftHandThumb3 + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/JawEND + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/LeftLipCorner + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/LeftLipLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/RightLipCorner + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/RightLipLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueBack + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueBack/TongueTip + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftCheek + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEye + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEye/Le_Eye_Mesh + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEyelidLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEyelidUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftInnerBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftIOuterBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftLipUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftNostril + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightCheek + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEye + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEye/Ri_Eye_Mesh + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEyelidLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEyelidUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightInnerBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightIOuterBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightLipUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightNostril + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/RightHandIndex3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/RightHandMiddle3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/RightHandPinky3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/RightHandRing3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/RightHandThumb3 + weight: 1 + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidFallLeft + takeName: idle_jumpFwd_idle_tk01 + internalID: 0 + firstFrame: 355 + lastFrame: 357 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 1 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: + - path: + weight: 1 + - path: Geo_grp + weight: 0 + - path: Geo_grp/Lw_Teeth_Mesh + weight: 0 + - path: Geo_grp/Tounge_Mesh + weight: 0 + - path: Geo_grp/Unity_Body_Mesh + weight: 0 + - path: Geo_grp/Up_Teeth_Mesh + weight: 0 + - path: Reference + weight: 1 + - path: Reference/Hips + weight: 1 + - path: Reference/Hips/LeftUpLeg + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot/LeftToes + weight: 1 + - path: Reference/Hips/RightUpLeg + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot/RightToes + weight: 1 + - path: Reference/Hips/Spine + weight: 1 + - path: Reference/Hips/Spine/Chest + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/LeftHandIndex3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/LeftHandMiddle3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/LeftHandPinky3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/LeftHandRing3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/LeftHandThumb3 + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/JawEND + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/LeftLipCorner + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/LeftLipLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/RightLipCorner + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/RightLipLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueBack + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueBack/TongueTip + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftCheek + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEye + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEye/Le_Eye_Mesh + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEyelidLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEyelidUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftInnerBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftIOuterBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftLipUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftNostril + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightCheek + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEye + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEye/Ri_Eye_Mesh + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEyelidLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEyelidUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightInnerBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightIOuterBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightLipUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightNostril + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/RightHandIndex3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/RightHandMiddle3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/RightHandPinky3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/RightHandRing3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/RightHandThumb3 + weight: 1 + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidJumpForwardRight + takeName: idle_jumpFwd_idle_tk01 + internalID: 0 + firstFrame: 350 + lastFrame: 352 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 1 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: + - path: + weight: 1 + - path: Geo_grp + weight: 0 + - path: Geo_grp/Lw_Teeth_Mesh + weight: 0 + - path: Geo_grp/Tounge_Mesh + weight: 0 + - path: Geo_grp/Unity_Body_Mesh + weight: 0 + - path: Geo_grp/Up_Teeth_Mesh + weight: 0 + - path: Reference + weight: 1 + - path: Reference/Hips + weight: 1 + - path: Reference/Hips/LeftUpLeg + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot/LeftToes + weight: 1 + - path: Reference/Hips/RightUpLeg + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot/RightToes + weight: 1 + - path: Reference/Hips/Spine + weight: 1 + - path: Reference/Hips/Spine/Chest + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/LeftHandIndex3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/LeftHandMiddle3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/LeftHandPinky3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/LeftHandRing3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/LeftHandThumb3 + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/JawEND + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/LeftLipCorner + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/LeftLipLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/RightLipCorner + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/RightLipLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueBack + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueBack/TongueTip + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftCheek + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEye + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEye/Le_Eye_Mesh + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEyelidLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEyelidUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftInnerBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftIOuterBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftLipUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftNostril + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightCheek + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEye + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEye/Ri_Eye_Mesh + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEyelidLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEyelidUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightInnerBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightIOuterBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightLipUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightNostril + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/RightHandIndex3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/RightHandMiddle3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/RightHandPinky3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/RightHandRing3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/RightHandThumb3 + weight: 1 + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidFallRight + takeName: idle_jumpFwd_idle_tk01 + internalID: 0 + firstFrame: 355 + lastFrame: 357 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: + - path: + weight: 1 + - path: Geo_grp + weight: 0 + - path: Geo_grp/Lw_Teeth_Mesh + weight: 0 + - path: Geo_grp/Tounge_Mesh + weight: 0 + - path: Geo_grp/Unity_Body_Mesh + weight: 0 + - path: Geo_grp/Up_Teeth_Mesh + weight: 0 + - path: Reference + weight: 1 + - path: Reference/Hips + weight: 1 + - path: Reference/Hips/LeftUpLeg + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot + weight: 1 + - path: Reference/Hips/LeftUpLeg/LeftLeg/LeftFoot/LeftToes + weight: 1 + - path: Reference/Hips/RightUpLeg + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot + weight: 1 + - path: Reference/Hips/RightUpLeg/RightLeg/RightFoot/RightToes + weight: 1 + - path: Reference/Hips/Spine + weight: 1 + - path: Reference/Hips/Spine/Chest + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/LeftHandIndex3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/LeftHandMiddle3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/LeftHandPinky3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/LeftHandRing3 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2 + weight: 1 + - path: Reference/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/LeftHandThumb3 + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/JawEND + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/LeftLipCorner + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/LeftLipLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/RightLipCorner + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/RightLipLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueBack + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/Jaw/TongueBack/TongueTip + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftCheek + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEye + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEye/Le_Eye_Mesh + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEyelidLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftEyelidUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftInnerBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftIOuterBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftLipUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/LeftNostril + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightCheek + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEye + weight: 1 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEye/Ri_Eye_Mesh + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEyelidLower + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightEyelidUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightInnerBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightIOuterBrow + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightLipUpper + weight: 0 + - path: Reference/Hips/Spine/Chest/Neck/Head/RightNostril + weight: 0 + - path: Reference/Hips/Spine/Chest/RightShoulder + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/RightHandIndex3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/RightHandMiddle3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/RightHandPinky3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/RightHandRing3 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2 + weight: 1 + - path: Reference/Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/RightHandThumb3 + weight: 1 + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.01 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 0 + importBlendShapes: 0 + importCameras: 0 + importLights: 0 + fileIdsGeneration: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 4 + normalCalculationMode: 0 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: + - boneName: Hips + humanName: Hips + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftUpLeg + humanName: LeftUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightUpLeg + humanName: RightUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftLeg + humanName: LeftLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightLeg + humanName: RightLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftFoot + humanName: LeftFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightFoot + humanName: RightFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Spine + humanName: Spine + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Chest + humanName: Chest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Neck + humanName: Neck + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Head + humanName: Head + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftShoulder + humanName: LeftShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightShoulder + humanName: RightShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftArm + humanName: LeftUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightArm + humanName: RightUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftForeArm + humanName: LeftLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightForeArm + humanName: RightLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHand + humanName: LeftHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHand + humanName: RightHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftToes + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightToes + humanName: RightToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftEye + humanName: LeftEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightEye + humanName: RightEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Jaw + humanName: Jaw + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb1 + humanName: Left Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb2 + humanName: Left Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb3 + humanName: Left Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex1 + humanName: Left Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex2 + humanName: Left Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex3 + humanName: Left Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle1 + humanName: Left Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle2 + humanName: Left Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle3 + humanName: Left Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing1 + humanName: Left Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing2 + humanName: Left Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing3 + humanName: Left Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky1 + humanName: Left Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky2 + humanName: Left Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky3 + humanName: Left Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb1 + humanName: Right Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb2 + humanName: Right Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb3 + humanName: Right Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex1 + humanName: Right Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex2 + humanName: Right Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex3 + humanName: Right Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle1 + humanName: Right Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle2 + humanName: Right Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle3 + humanName: Right Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing1 + humanName: Right Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing2 + humanName: Right Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing3 + humanName: Right Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky1 + humanName: Right Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky2 + humanName: Right Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky3 + humanName: Right Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + skeleton: + - name: HumanoidJumpAndFall(Clone) + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Hips + parentName: + position: {x: -0.000000018626451, y: 0.9600322, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftUpLeg + parentName: + position: {x: -0.0754495, y: -0.04566402, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLeg + parentName: + position: {x: -0.020550499, y: -0.40912998, z: 0.0071713654} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftFoot + parentName: + position: {x: -0.0051529994, y: -0.4231559, z: -0.012032089} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftToes + parentName: + position: {x: -0.007487, y: -0.0731673, z: 0.14542712} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightUpLeg + parentName: + position: {x: 0.075449534, y: -0.04566399, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLeg + parentName: + position: {x: 0.020550467, y: -0.40913, z: 0.0071713654} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightFoot + parentName: + position: {x: 0.0051529994, y: -0.4231559, z: -0.012032089} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightToes + parentName: + position: {x: 0.007487, y: -0.0731673, z: 0.1454275} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Spine + parentName: + position: {x: -0, y: 0.092263184, z: 0.015771331} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Chest + parentName: + position: {x: -0, y: 0.16254029, z: 0.021850722} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftShoulder + parentName: + position: {x: -0.038243506, y: 0.19217809, z: -0.017063085} + rotation: {x: -0.0012167748, y: -0.009176072, z: 0.32725558, w: 0.94489056} + scale: {x: 1, y: 1, z: 1} + - name: LeftArm + parentName: + position: {x: -0.08357477, y: 0.036097575, z: 0} + rotation: {x: 0.20830412, y: -0.055566486, z: -0.3101172, w: 0.92593145} + scale: {x: 1, y: 1, z: 1} + - name: LeftForeArm + parentName: + position: {x: -0.2540493, y: 0, z: 0} + rotation: {x: 0.0006534006, y: 0.021690814, z: -0.011673548, w: 0.9996964} + scale: {x: 1, y: 1, z: 1} + - name: LeftHand + parentName: + position: {x: -0.24638927, y: 0, z: 0} + rotation: {x: 0.0017457128, y: -0.031671125, z: 0.02428431, w: 0.9992018} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex1 + parentName: + position: {x: -0.0751258, y: -0.0078414045, z: 0.032652643} + rotation: {x: -0.0021189204, y: 0.08025744, z: 0.017538186, w: 0.9966176} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex2 + parentName: + position: {x: -0.03979728, y: 0.000049808405, z: 0.0011857504} + rotation: {x: 0.00050193444, y: 0.015470578, z: 0.04041052, w: 0.9990633} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex3 + parentName: + position: {x: -0.027968477, y: -0.000000006281224, z: -0.00000005171866} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle1 + parentName: + position: {x: -0.076023825, y: -0.0018851344, z: 0.010141229} + rotation: {x: -0.00076887343, y: 0.033321083, z: 0.020907538, w: 0.99922574} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle2 + parentName: + position: {x: -0.044280436, y: 0.000004798874, z: -0.00042540013} + rotation: {x: -0.0013620926, y: -0.019152053, z: 0.037883893, w: 0.99909765} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle3 + parentName: + position: {x: -0.033964828, y: -0.000000012197929, z: 0.0000000037564827} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky1 + parentName: + position: {x: -0.06565995, y: -0.007825106, z: -0.032251246} + rotation: {x: -0.0009126723, y: 0.012161144, z: 0.021223385, w: 0.99970037} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky2 + parentName: + position: {x: -0.030805448, y: -0.000030874573, z: -0.0014480775} + rotation: {x: -0.00022680234, y: -0.0096941795, z: 0.0004345175, w: 0.9999529} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky3 + parentName: + position: {x: -0.023064027, y: -0.0000064025808, z: 0.000000018332095} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing1 + parentName: + position: {x: -0.07030211, y: -0.0037453093, z: -0.011411792} + rotation: {x: -0.00032414572, y: 0.011597541, z: 0.024737226, w: 0.9996267} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing2 + parentName: + position: {x: -0.043135457, y: -0.000020882308, z: -0.0022351784} + rotation: {x: -0.0012034494, y: -0.023113353, z: 0.040986937, w: 0.9988916} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing3 + parentName: + position: {x: -0.030835565, y: 7.710497e-11, z: -0.00000001649327} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb1 + parentName: + position: {x: -0.014231241, y: -0.012377825, z: 0.025531668} + rotation: {x: -0.1395832, y: -0.035125062, z: -0.0833108, w: 0.9860741} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb2 + parentName: + position: {x: -0.016374, y: -0.00529, z: 0.023491409} + rotation: {x: -0.026061492, y: 0.09669021, z: 0.00360864, w: 0.9949668} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb3 + parentName: + position: {x: -0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Neck + parentName: + position: {x: -0, y: 0.2357239, z: -0.032413255} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Head + parentName: + position: {x: -0, y: 0.1063558, z: 0.0113267815} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Jaw + parentName: + position: {x: -0, y: 0.0111267585, z: 0.010327543} + rotation: {x: 0.21924005, y: -0, z: -0, w: 0.975671} + scale: {x: 1, y: 1, z: 1} + - name: JawEND + parentName: + position: {x: -0, y: -0.04828876, z: 0.07185171} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipCorner + parentName: + position: {x: -0.032843262, y: -0.01657876, z: 0.066121764} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipLower + parentName: + position: {x: -0.014250817, y: -0.02168876, z: 0.08224063} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipCorner + parentName: + position: {x: 0.03284, y: -0.01657876, z: 0.066118784} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipLower + parentName: + position: {x: 0.014250817, y: -0.02168876, z: 0.082238786} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueBack + parentName: + position: {x: -0, y: -0.022869369, z: 0.010095409} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueTip + parentName: + position: {x: -0, y: -0.00040944412, z: 0.0282273} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftCheek + parentName: + position: {x: -0.054244027, y: 0.03370195, z: 0.0594304} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEye + parentName: + position: {x: -0.020848233, y: 0.0825027, z: 0.055427432} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidLower + parentName: + position: {x: -0.035618957, y: 0.06507366, z: 0.07623474} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidUpper + parentName: + position: {x: -0.034406897, y: 0.10060814, z: 0.08020531} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftInnerBrow + parentName: + position: {x: -0.012062691, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftIOuterBrow + parentName: + position: {x: -0.05503987, y: 0.11482529, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipUpper + parentName: + position: {x: -0.014501322, y: -0.005111811, z: 0.09461884} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftNostril + parentName: + position: {x: -0.0179, y: 0.026312828, z: 0.0908674} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightCheek + parentName: + position: {x: 0.054239996, y: 0.033702828, z: 0.0594274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEye + parentName: + position: {x: 0.020849999, y: 0.08250283, z: 0.0554274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidLower + parentName: + position: {x: 0.03562, y: 0.06507283, z: 0.0762374} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidUpper + parentName: + position: {x: 0.03441, y: 0.10061283, z: 0.08020739} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightInnerBrow + parentName: + position: {x: 0.012062687, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightIOuterBrow + parentName: + position: {x: 0.055040002, y: 0.11482283, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipUpper + parentName: + position: {x: 0.014501322, y: -0.0051071714, z: 0.094617404} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightNostril + parentName: + position: {x: 0.0179, y: 0.026308905, z: 0.09087062} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightShoulder + parentName: + position: {x: 0.03832851, y: 0.19217674, z: -0.017063085} + rotation: {x: 0.2904139, y: 0.9560102, z: 0.03224088, w: -0.02578477} + scale: {x: 1, y: 1, z: 1} + - name: RightArm + parentName: + position: {x: -0.08357552, y: 0.0360957, z: -0.000000051557407} + rotation: {x: 0.26312914, y: 0.9536245, z: -0.1460855, w: 0.0047523957} + scale: {x: 1, y: 1, z: 1} + - name: RightForeArm + parentName: + position: {x: 0.25342825, y: 0.006011353, z: -0.016704524} + rotation: {x: -0.015327872, y: 0.014747288, z: -0.02011266, w: 0.99957144} + scale: {x: 1, y: 1, z: 1} + - name: RightHand + parentName: + position: {x: 0.2453737, y: 0.021641772, z: 0.005550465} + rotation: {x: 0.0006136425, y: 0.036897447, z: -0.056921925, w: 0.9976964} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex1 + parentName: + position: {x: 0.0747695, y: -0.0012430536, z: 0.034344498} + rotation: {x: -0.0021189204, y: 0.08025744, z: 0.017538186, w: 0.9966176} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex2 + parentName: + position: {x: 0.0370584, y: 0.00072612107, z: 0.014538894} + rotation: {x: -0.003326216, y: 0.015931532, z: 0.060632892, w: 0.99802744} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex3 + parentName: + position: {x: 0.025225038, y: -0.0049664653, z: 0.011012146} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle1 + parentName: + position: {x: 0.075647645, y: 0.0047914027, z: 0.011853182} + rotation: {x: -0.00076887343, y: 0.033321083, z: 0.020907538, w: 0.99922574} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle2 + parentName: + position: {x: 0.043809064, y: 0.00019418815, z: 0.006454936} + rotation: {x: -0.004130466, y: -0.033511695, z: 0.0761208, w: 0.9965268} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle3 + parentName: + position: {x: 0.03307247, y: -0.007547537, z: 0.0016898462} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky1 + parentName: + position: {x: 0.06680334, y: -0.0019941088, z: -0.030756146} + rotation: {x: 0.0031761073, y: -0.19200589, z: 0.04511377, w: 0.98035115} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky2 + parentName: + position: {x: 0.028530842, y: -0.001397143, z: -0.011623796} + rotation: {x: -0.0022532681, y: -0.009596185, z: -0.010757575, w: 0.99989355} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky3 + parentName: + position: {x: 0.02142686, y: -0.00055350893, z: -0.008516608} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing1 + parentName: + position: {x: 0.070598476, y: 0.0024570965, z: -0.009821458} + rotation: {x: 0.0007108488, y: -0.05434209, z: 0.034944504, w: 0.99791056} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing2 + parentName: + position: {x: 0.042887185, y: -0.0013753821, z: -0.004945858} + rotation: {x: 0.0004847665, y: -0.021289572, z: 0.069862895, w: 0.9973293} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing3 + parentName: + position: {x: 0.029500604, y: -0.0076929354, z: -0.004622256} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb1 + parentName: + position: {x: 0.014684916, y: -0.011104942, z: 0.025858095} + rotation: {x: -0.10870756, y: 0.0094896685, z: 0.10039504, w: 0.98894566} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb2 + parentName: + position: {x: 0.016374, y: -0.00529, z: 0.02349136} + rotation: {x: -0.026064094, y: -0.096688636, z: -0.0036055543, w: 0.9949668} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb3 + parentName: + position: {x: 0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 0.01 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidMidAir.fbx b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidMidAir.fbx new file mode 100644 index 000000000..80f6e2408 Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidMidAir.fbx differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidMidAir.fbx.meta b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidMidAir.fbx.meta new file mode 100644 index 000000000..15d8aea00 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidMidAir.fbx.meta @@ -0,0 +1,2641 @@ +fileFormatVersion: 2 +guid: f03e10c73f30b4ab4aa8ea8f1cc16d36 +labels: +- ObiCloth +- ObiRope +- ObiSoftbody +ModelImporter: + serializedVersion: 19301 + internalIDToNameTable: + - first: + 1: 100000 + second: //RootNode + - first: + 1: 100002 + second: l_hipProxy_geo + - first: + 1: 100004 + second: l_kneeProxy_geo + - first: + 1: 100006 + second: l_ankleProxy_geo + - first: + 1: 100008 + second: l_ballProxy_geo + - first: + 1: 100010 + second: LToeBase_End2 + - first: + 1: 100012 + second: LeftToes + - first: + 1: 100014 + second: LeftFoot + - first: + 1: 100016 + second: LeftLeg + - first: + 1: 100018 + second: LeftUpLeg + - first: + 1: 100020 + second: pelvisProxy_geo + - first: + 1: 100022 + second: r_hipProxy_geo + - first: + 1: 100024 + second: r_kneeProxy_geo + - first: + 1: 100026 + second: r_ankleProxy_geo + - first: + 1: 100028 + second: r_ballProxy_geo + - first: + 1: 100030 + second: LToeBase_End3 + - first: + 1: 100032 + second: RightToes + - first: + 1: 100034 + second: RightFoot + - first: + 1: 100036 + second: RightLeg + - first: + 1: 100038 + second: RightUpLeg + - first: + 1: 100040 + second: spineProxy_geo + - first: + 1: 100042 + second: l_clavicleProxy_geo + - first: + 1: 100044 + second: l_shourderProxy_geo + - first: + 1: 100046 + second: l_erbowProxy_geo + - first: + 1: 100048 + second: l_wristProxy_geo + - first: + 1: 100050 + second: l_thumbProxy_01_geo + - first: + 1: 100052 + second: l_thumbProxy_02_geo + - first: + 1: 100054 + second: l_thumbProxy_03_geo + - first: + 1: 100056 + second: LeftHandThumb13 + - first: + 1: 100058 + second: LeftHandThumb3 + - first: + 1: 100060 + second: LeftHandThumb2 + - first: + 1: 100062 + second: LeftHandThumb1 + - first: + 1: 100064 + second: l_indexProxy_01_geo + - first: + 1: 100066 + second: l_indexProxy_02_geo + - first: + 1: 100068 + second: l_indexProxy_03_geo + - first: + 1: 100070 + second: LeftHandIndex13 + - first: + 1: 100072 + second: LeftHandIndex3 + - first: + 1: 100074 + second: LeftHandIndex2 + - first: + 1: 100076 + second: LeftHandIndex1 + - first: + 1: 100078 + second: l_middleProxy_01_geo + - first: + 1: 100080 + second: l_middleProxy_02_geo + - first: + 1: 100082 + second: l_middleProxy_03_geo + - first: + 1: 100084 + second: LeftHandMiddle13 + - first: + 1: 100086 + second: LeftHandMiddle3 + - first: + 1: 100088 + second: LeftHandMiddle2 + - first: + 1: 100090 + second: LeftHandMiddle1 + - first: + 1: 100092 + second: l_ringProxy_01_geo + - first: + 1: 100094 + second: l_ringProxy_02_geo + - first: + 1: 100096 + second: l_ringProxy_03_geo + - first: + 1: 100098 + second: LeftHandRing13 + - first: + 1: 100100 + second: LeftHandRing3 + - first: + 1: 100102 + second: LeftHandRing2 + - first: + 1: 100104 + second: LeftHandRing1 + - first: + 1: 100106 + second: l_pinkyProxy_01_geo + - first: + 1: 100108 + second: l_pinkyProxy_02_geo + - first: + 1: 100110 + second: l_pinkyProxy_03_geo + - first: + 1: 100112 + second: LeftHandPinky13 + - first: + 1: 100114 + second: LeftHandPinky3 + - first: + 1: 100116 + second: LeftHandPinky2 + - first: + 1: 100118 + second: LeftHandPinky1 + - first: + 1: 100120 + second: LeftHand + - first: + 1: 100122 + second: LeftForeArm + - first: + 1: 100124 + second: LeftArm + - first: + 1: 100126 + second: LeftShoulder + - first: + 1: 100128 + second: chestProxy_geo + - first: + 1: 100130 + second: r_clavicleProxy_geo + - first: + 1: 100132 + second: r_shourderProxy_geo + - first: + 1: 100134 + second: r_erbowProxy_geo + - first: + 1: 100136 + second: r_wristProxy_geo + - first: + 1: 100138 + second: r_thumbProxy_01_geo + - first: + 1: 100140 + second: r_thumbProxy_02_geo + - first: + 1: 100142 + second: r_thumbProxy_03_geo + - first: + 1: 100144 + second: LeftHandThumb17 + - first: + 1: 100146 + second: RightHandThumb3 + - first: + 1: 100148 + second: RightHandThumb2 + - first: + 1: 100150 + second: RightHandThumb1 + - first: + 1: 100152 + second: r_indexProxy_01_geo + - first: + 1: 100154 + second: r_indexProxy_02_geo + - first: + 1: 100156 + second: r_indexProxy_03_geo + - first: + 1: 100158 + second: LeftHandIndex17 + - first: + 1: 100160 + second: RightHandIndex3 + - first: + 1: 100162 + second: RightHandIndex2 + - first: + 1: 100164 + second: RightHandIndex1 + - first: + 1: 100166 + second: r_middleProxy_01_geo + - first: + 1: 100168 + second: r_middleProxy_02_geo + - first: + 1: 100170 + second: r_middleProxy_03_geo + - first: + 1: 100172 + second: LeftHandMiddle17 + - first: + 1: 100174 + second: RightHandMiddle3 + - first: + 1: 100176 + second: RightHandMiddle2 + - first: + 1: 100178 + second: RightHandMiddle1 + - first: + 1: 100180 + second: r_ringProxy_01_geo + - first: + 1: 100182 + second: r_ringProxy_02_geo + - first: + 1: 100184 + second: r_ringProxy_03_geo + - first: + 1: 100186 + second: LeftHandRing17 + - first: + 1: 100188 + second: RightHandRing3 + - first: + 1: 100190 + second: RightHandRing2 + - first: + 1: 100192 + second: RightHandRing1 + - first: + 1: 100194 + second: r_pinkyProxy_01_geo + - first: + 1: 100196 + second: r_pinkyProxy_02_geo + - first: + 1: 100198 + second: r_pinkyProxy_03_geo + - first: + 1: 100200 + second: LeftHandPinky17 + - first: + 1: 100202 + second: RightHandPinky3 + - first: + 1: 100204 + second: RightHandPinky2 + - first: + 1: 100206 + second: RightHandPinky1 + - first: + 1: 100208 + second: RightHand + - first: + 1: 100210 + second: RightForeArm + - first: + 1: 100212 + second: RightArm + - first: + 1: 100214 + second: RightShoulder + - first: + 1: 100216 + second: neckProxy_geo + - first: + 1: 100218 + second: UNI_01_Upper_teethProxy + - first: + 1: 100220 + second: headProxy_geo + - first: + 1: 100222 + second: RightLipUpper + - first: + 1: 100224 + second: RightNostril + - first: + 1: 100226 + second: RightCheek + - first: + 1: 100228 + second: RightEyelidLower + - first: + 1: 100230 + second: RightEyelidUpper + - first: + 1: 100232 + second: RightIOuterBrow + - first: + 1: 100234 + second: RightInnerBrow + - first: + 1: 100236 + second: LeftIOuterBrow + - first: + 1: 100238 + second: LeftInnerBrow + - first: + 1: 100240 + second: LeftEyelidUpper + - first: + 1: 100242 + second: LeftEyelidLower + - first: + 1: 100244 + second: LeftCheek + - first: + 1: 100246 + second: LeftNostril + - first: + 1: 100248 + second: LeftLipUpper + - first: + 1: 100250 + second: jawProxy_geo + - first: + 1: 100252 + second: UNI_01_Lower_teethProxy + - first: + 1: 100254 + second: LeftLipCorner + - first: + 1: 100256 + second: RightLipCorner + - first: + 1: 100258 + second: RightLipLower + - first: + 1: 100260 + second: JawEND + - first: + 1: 100262 + second: LeftLipLower + - first: + 1: 100264 + second: UNI_01_TongueTipProxy + - first: + 1: 100266 + second: TongueTip + - first: + 1: 100268 + second: UNI_01_TongueBaseProxy + - first: + 1: 100270 + second: TongueBack + - first: + 1: 100272 + second: Jaw + - first: + 1: 100274 + second: r_UNI_eye + - first: + 1: 100276 + second: RightEye + - first: + 1: 100278 + second: l_UNI_eye + - first: + 1: 100280 + second: LeftEye + - first: + 1: 100282 + second: HeadTop_End + - first: + 1: 100284 + second: Head + - first: + 1: 100286 + second: Neck + - first: + 1: 100288 + second: Chest + - first: + 1: 100290 + second: Spine + - first: + 1: 100292 + second: Hips + - first: + 1: 100294 + second: Reference + - first: + 4: 400000 + second: //RootNode + - first: + 4: 400002 + second: l_hipProxy_geo + - first: + 4: 400004 + second: l_kneeProxy_geo + - first: + 4: 400006 + second: l_ankleProxy_geo + - first: + 4: 400008 + second: l_ballProxy_geo + - first: + 4: 400010 + second: LToeBase_End2 + - first: + 4: 400012 + second: LeftToes + - first: + 4: 400014 + second: LeftFoot + - first: + 4: 400016 + second: LeftLeg + - first: + 4: 400018 + second: LeftUpLeg + - first: + 4: 400020 + second: pelvisProxy_geo + - first: + 4: 400022 + second: r_hipProxy_geo + - first: + 4: 400024 + second: r_kneeProxy_geo + - first: + 4: 400026 + second: r_ankleProxy_geo + - first: + 4: 400028 + second: r_ballProxy_geo + - first: + 4: 400030 + second: LToeBase_End3 + - first: + 4: 400032 + second: RightToes + - first: + 4: 400034 + second: RightFoot + - first: + 4: 400036 + second: RightLeg + - first: + 4: 400038 + second: RightUpLeg + - first: + 4: 400040 + second: spineProxy_geo + - first: + 4: 400042 + second: l_clavicleProxy_geo + - first: + 4: 400044 + second: l_shourderProxy_geo + - first: + 4: 400046 + second: l_erbowProxy_geo + - first: + 4: 400048 + second: l_wristProxy_geo + - first: + 4: 400050 + second: l_thumbProxy_01_geo + - first: + 4: 400052 + second: l_thumbProxy_02_geo + - first: + 4: 400054 + second: l_thumbProxy_03_geo + - first: + 4: 400056 + second: LeftHandThumb13 + - first: + 4: 400058 + second: LeftHandThumb3 + - first: + 4: 400060 + second: LeftHandThumb2 + - first: + 4: 400062 + second: LeftHandThumb1 + - first: + 4: 400064 + second: l_indexProxy_01_geo + - first: + 4: 400066 + second: l_indexProxy_02_geo + - first: + 4: 400068 + second: l_indexProxy_03_geo + - first: + 4: 400070 + second: LeftHandIndex13 + - first: + 4: 400072 + second: LeftHandIndex3 + - first: + 4: 400074 + second: LeftHandIndex2 + - first: + 4: 400076 + second: LeftHandIndex1 + - first: + 4: 400078 + second: l_middleProxy_01_geo + - first: + 4: 400080 + second: l_middleProxy_02_geo + - first: + 4: 400082 + second: l_middleProxy_03_geo + - first: + 4: 400084 + second: LeftHandMiddle13 + - first: + 4: 400086 + second: LeftHandMiddle3 + - first: + 4: 400088 + second: LeftHandMiddle2 + - first: + 4: 400090 + second: LeftHandMiddle1 + - first: + 4: 400092 + second: l_ringProxy_01_geo + - first: + 4: 400094 + second: l_ringProxy_02_geo + - first: + 4: 400096 + second: l_ringProxy_03_geo + - first: + 4: 400098 + second: LeftHandRing13 + - first: + 4: 400100 + second: LeftHandRing3 + - first: + 4: 400102 + second: LeftHandRing2 + - first: + 4: 400104 + second: LeftHandRing1 + - first: + 4: 400106 + second: l_pinkyProxy_01_geo + - first: + 4: 400108 + second: l_pinkyProxy_02_geo + - first: + 4: 400110 + second: l_pinkyProxy_03_geo + - first: + 4: 400112 + second: LeftHandPinky13 + - first: + 4: 400114 + second: LeftHandPinky3 + - first: + 4: 400116 + second: LeftHandPinky2 + - first: + 4: 400118 + second: LeftHandPinky1 + - first: + 4: 400120 + second: LeftHand + - first: + 4: 400122 + second: LeftForeArm + - first: + 4: 400124 + second: LeftArm + - first: + 4: 400126 + second: LeftShoulder + - first: + 4: 400128 + second: chestProxy_geo + - first: + 4: 400130 + second: r_clavicleProxy_geo + - first: + 4: 400132 + second: r_shourderProxy_geo + - first: + 4: 400134 + second: r_erbowProxy_geo + - first: + 4: 400136 + second: r_wristProxy_geo + - first: + 4: 400138 + second: r_thumbProxy_01_geo + - first: + 4: 400140 + second: r_thumbProxy_02_geo + - first: + 4: 400142 + second: r_thumbProxy_03_geo + - first: + 4: 400144 + second: LeftHandThumb17 + - first: + 4: 400146 + second: RightHandThumb3 + - first: + 4: 400148 + second: RightHandThumb2 + - first: + 4: 400150 + second: RightHandThumb1 + - first: + 4: 400152 + second: r_indexProxy_01_geo + - first: + 4: 400154 + second: r_indexProxy_02_geo + - first: + 4: 400156 + second: r_indexProxy_03_geo + - first: + 4: 400158 + second: LeftHandIndex17 + - first: + 4: 400160 + second: RightHandIndex3 + - first: + 4: 400162 + second: RightHandIndex2 + - first: + 4: 400164 + second: RightHandIndex1 + - first: + 4: 400166 + second: r_middleProxy_01_geo + - first: + 4: 400168 + second: r_middleProxy_02_geo + - first: + 4: 400170 + second: r_middleProxy_03_geo + - first: + 4: 400172 + second: LeftHandMiddle17 + - first: + 4: 400174 + second: RightHandMiddle3 + - first: + 4: 400176 + second: RightHandMiddle2 + - first: + 4: 400178 + second: RightHandMiddle1 + - first: + 4: 400180 + second: r_ringProxy_01_geo + - first: + 4: 400182 + second: r_ringProxy_02_geo + - first: + 4: 400184 + second: r_ringProxy_03_geo + - first: + 4: 400186 + second: LeftHandRing17 + - first: + 4: 400188 + second: RightHandRing3 + - first: + 4: 400190 + second: RightHandRing2 + - first: + 4: 400192 + second: RightHandRing1 + - first: + 4: 400194 + second: r_pinkyProxy_01_geo + - first: + 4: 400196 + second: r_pinkyProxy_02_geo + - first: + 4: 400198 + second: r_pinkyProxy_03_geo + - first: + 4: 400200 + second: LeftHandPinky17 + - first: + 4: 400202 + second: RightHandPinky3 + - first: + 4: 400204 + second: RightHandPinky2 + - first: + 4: 400206 + second: RightHandPinky1 + - first: + 4: 400208 + second: RightHand + - first: + 4: 400210 + second: RightForeArm + - first: + 4: 400212 + second: RightArm + - first: + 4: 400214 + second: RightShoulder + - first: + 4: 400216 + second: neckProxy_geo + - first: + 4: 400218 + second: UNI_01_Upper_teethProxy + - first: + 4: 400220 + second: headProxy_geo + - first: + 4: 400222 + second: RightLipUpper + - first: + 4: 400224 + second: RightNostril + - first: + 4: 400226 + second: RightCheek + - first: + 4: 400228 + second: RightEyelidLower + - first: + 4: 400230 + second: RightEyelidUpper + - first: + 4: 400232 + second: RightIOuterBrow + - first: + 4: 400234 + second: RightInnerBrow + - first: + 4: 400236 + second: LeftIOuterBrow + - first: + 4: 400238 + second: LeftInnerBrow + - first: + 4: 400240 + second: LeftEyelidUpper + - first: + 4: 400242 + second: LeftEyelidLower + - first: + 4: 400244 + second: LeftCheek + - first: + 4: 400246 + second: LeftNostril + - first: + 4: 400248 + second: LeftLipUpper + - first: + 4: 400250 + second: jawProxy_geo + - first: + 4: 400252 + second: UNI_01_Lower_teethProxy + - first: + 4: 400254 + second: LeftLipCorner + - first: + 4: 400256 + second: RightLipCorner + - first: + 4: 400258 + second: RightLipLower + - first: + 4: 400260 + second: JawEND + - first: + 4: 400262 + second: LeftLipLower + - first: + 4: 400264 + second: UNI_01_TongueTipProxy + - first: + 4: 400266 + second: TongueTip + - first: + 4: 400268 + second: UNI_01_TongueBaseProxy + - first: + 4: 400270 + second: TongueBack + - first: + 4: 400272 + second: Jaw + - first: + 4: 400274 + second: r_UNI_eye + - first: + 4: 400276 + second: RightEye + - first: + 4: 400278 + second: l_UNI_eye + - first: + 4: 400280 + second: LeftEye + - first: + 4: 400282 + second: HeadTop_End + - first: + 4: 400284 + second: Head + - first: + 4: 400286 + second: Neck + - first: + 4: 400288 + second: Chest + - first: + 4: 400290 + second: Spine + - first: + 4: 400292 + second: Hips + - first: + 4: 400294 + second: Reference + - first: + 23: 2300000 + second: l_hipProxy_geo + - first: + 23: 2300002 + second: l_kneeProxy_geo + - first: + 23: 2300004 + second: l_ankleProxy_geo + - first: + 23: 2300006 + second: l_ballProxy_geo + - first: + 23: 2300008 + second: pelvisProxy_geo + - first: + 23: 2300010 + second: r_hipProxy_geo + - first: + 23: 2300012 + second: r_kneeProxy_geo + - first: + 23: 2300014 + second: r_ankleProxy_geo + - first: + 23: 2300016 + second: r_ballProxy_geo + - first: + 23: 2300018 + second: spineProxy_geo + - first: + 23: 2300020 + second: l_clavicleProxy_geo + - first: + 23: 2300022 + second: l_shourderProxy_geo + - first: + 23: 2300024 + second: l_erbowProxy_geo + - first: + 23: 2300026 + second: l_wristProxy_geo + - first: + 23: 2300028 + second: l_thumbProxy_01_geo + - first: + 23: 2300030 + second: l_thumbProxy_02_geo + - first: + 23: 2300032 + second: l_thumbProxy_03_geo + - first: + 23: 2300034 + second: l_indexProxy_01_geo + - first: + 23: 2300036 + second: l_indexProxy_02_geo + - first: + 23: 2300038 + second: l_indexProxy_03_geo + - first: + 23: 2300040 + second: l_middleProxy_01_geo + - first: + 23: 2300042 + second: l_middleProxy_02_geo + - first: + 23: 2300044 + second: l_middleProxy_03_geo + - first: + 23: 2300046 + second: l_ringProxy_01_geo + - first: + 23: 2300048 + second: l_ringProxy_02_geo + - first: + 23: 2300050 + second: l_ringProxy_03_geo + - first: + 23: 2300052 + second: l_pinkyProxy_01_geo + - first: + 23: 2300054 + second: l_pinkyProxy_02_geo + - first: + 23: 2300056 + second: l_pinkyProxy_03_geo + - first: + 23: 2300058 + second: chestProxy_geo + - first: + 23: 2300060 + second: r_clavicleProxy_geo + - first: + 23: 2300062 + second: r_shourderProxy_geo + - first: + 23: 2300064 + second: r_erbowProxy_geo + - first: + 23: 2300066 + second: r_wristProxy_geo + - first: + 23: 2300068 + second: r_thumbProxy_01_geo + - first: + 23: 2300070 + second: r_thumbProxy_02_geo + - first: + 23: 2300072 + second: r_thumbProxy_03_geo + - first: + 23: 2300074 + second: r_indexProxy_01_geo + - first: + 23: 2300076 + second: r_indexProxy_02_geo + - first: + 23: 2300078 + second: r_indexProxy_03_geo + - first: + 23: 2300080 + second: r_middleProxy_01_geo + - first: + 23: 2300082 + second: r_middleProxy_02_geo + - first: + 23: 2300084 + second: r_middleProxy_03_geo + - first: + 23: 2300086 + second: r_ringProxy_01_geo + - first: + 23: 2300088 + second: r_ringProxy_02_geo + - first: + 23: 2300090 + second: r_ringProxy_03_geo + - first: + 23: 2300092 + second: r_pinkyProxy_01_geo + - first: + 23: 2300094 + second: r_pinkyProxy_02_geo + - first: + 23: 2300096 + second: r_pinkyProxy_03_geo + - first: + 23: 2300098 + second: neckProxy_geo + - first: + 23: 2300100 + second: UNI_01_Upper_teethProxy + - first: + 23: 2300102 + second: headProxy_geo + - first: + 23: 2300104 + second: jawProxy_geo + - first: + 23: 2300106 + second: UNI_01_Lower_teethProxy + - first: + 23: 2300108 + second: UNI_01_TongueTipProxy + - first: + 23: 2300110 + second: UNI_01_TongueBaseProxy + - first: + 23: 2300112 + second: r_UNI_eye + - first: + 23: 2300114 + second: l_UNI_eye + - first: + 33: 3300000 + second: l_hipProxy_geo + - first: + 33: 3300002 + second: l_kneeProxy_geo + - first: + 33: 3300004 + second: l_ankleProxy_geo + - first: + 33: 3300006 + second: l_ballProxy_geo + - first: + 33: 3300008 + second: pelvisProxy_geo + - first: + 33: 3300010 + second: r_hipProxy_geo + - first: + 33: 3300012 + second: r_kneeProxy_geo + - first: + 33: 3300014 + second: r_ankleProxy_geo + - first: + 33: 3300016 + second: r_ballProxy_geo + - first: + 33: 3300018 + second: spineProxy_geo + - first: + 33: 3300020 + second: l_clavicleProxy_geo + - first: + 33: 3300022 + second: l_shourderProxy_geo + - first: + 33: 3300024 + second: l_erbowProxy_geo + - first: + 33: 3300026 + second: l_wristProxy_geo + - first: + 33: 3300028 + second: l_thumbProxy_01_geo + - first: + 33: 3300030 + second: l_thumbProxy_02_geo + - first: + 33: 3300032 + second: l_thumbProxy_03_geo + - first: + 33: 3300034 + second: l_indexProxy_01_geo + - first: + 33: 3300036 + second: l_indexProxy_02_geo + - first: + 33: 3300038 + second: l_indexProxy_03_geo + - first: + 33: 3300040 + second: l_middleProxy_01_geo + - first: + 33: 3300042 + second: l_middleProxy_02_geo + - first: + 33: 3300044 + second: l_middleProxy_03_geo + - first: + 33: 3300046 + second: l_ringProxy_01_geo + - first: + 33: 3300048 + second: l_ringProxy_02_geo + - first: + 33: 3300050 + second: l_ringProxy_03_geo + - first: + 33: 3300052 + second: l_pinkyProxy_01_geo + - first: + 33: 3300054 + second: l_pinkyProxy_02_geo + - first: + 33: 3300056 + second: l_pinkyProxy_03_geo + - first: + 33: 3300058 + second: chestProxy_geo + - first: + 33: 3300060 + second: r_clavicleProxy_geo + - first: + 33: 3300062 + second: r_shourderProxy_geo + - first: + 33: 3300064 + second: r_erbowProxy_geo + - first: + 33: 3300066 + second: r_wristProxy_geo + - first: + 33: 3300068 + second: r_thumbProxy_01_geo + - first: + 33: 3300070 + second: r_thumbProxy_02_geo + - first: + 33: 3300072 + second: r_thumbProxy_03_geo + - first: + 33: 3300074 + second: r_indexProxy_01_geo + - first: + 33: 3300076 + second: r_indexProxy_02_geo + - first: + 33: 3300078 + second: r_indexProxy_03_geo + - first: + 33: 3300080 + second: r_middleProxy_01_geo + - first: + 33: 3300082 + second: r_middleProxy_02_geo + - first: + 33: 3300084 + second: r_middleProxy_03_geo + - first: + 33: 3300086 + second: r_ringProxy_01_geo + - first: + 33: 3300088 + second: r_ringProxy_02_geo + - first: + 33: 3300090 + second: r_ringProxy_03_geo + - first: + 33: 3300092 + second: r_pinkyProxy_01_geo + - first: + 33: 3300094 + second: r_pinkyProxy_02_geo + - first: + 33: 3300096 + second: r_pinkyProxy_03_geo + - first: + 33: 3300098 + second: neckProxy_geo + - first: + 33: 3300100 + second: UNI_01_Upper_teethProxy + - first: + 33: 3300102 + second: headProxy_geo + - first: + 33: 3300104 + second: jawProxy_geo + - first: + 33: 3300106 + second: UNI_01_Lower_teethProxy + - first: + 33: 3300108 + second: UNI_01_TongueTipProxy + - first: + 33: 3300110 + second: UNI_01_TongueBaseProxy + - first: + 33: 3300112 + second: r_UNI_eye + - first: + 33: 3300114 + second: l_UNI_eye + - first: + 43: 4300000 + second: l_UNI_eye + - first: + 43: 4300002 + second: r_UNI_eye + - first: + 43: 4300004 + second: UNI_01_TongueBaseProxy + - first: + 43: 4300006 + second: UNI_01_TongueTipProxy + - first: + 43: 4300008 + second: UNI_01_Lower_teethProxy + - first: + 43: 4300010 + second: jawProxy_geo + - first: + 43: 4300012 + second: headProxy_geo + - first: + 43: 4300014 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300016 + second: neckProxy_geo + - first: + 43: 4300018 + second: r_pinkyProxy_03_geo + - first: + 43: 4300020 + second: r_pinkyProxy_02_geo + - first: + 43: 4300022 + second: r_pinkyProxy_01_geo + - first: + 43: 4300024 + second: r_ringProxy_03_geo + - first: + 43: 4300026 + second: r_ringProxy_02_geo + - first: + 43: 4300028 + second: r_ringProxy_01_geo + - first: + 43: 4300030 + second: r_middleProxy_03_geo + - first: + 43: 4300032 + second: r_middleProxy_02_geo + - first: + 43: 4300034 + second: r_middleProxy_01_geo + - first: + 43: 4300036 + second: r_indexProxy_03_geo + - first: + 43: 4300038 + second: r_indexProxy_02_geo + - first: + 43: 4300040 + second: r_indexProxy_01_geo + - first: + 43: 4300042 + second: r_thumbProxy_03_geo + - first: + 43: 4300044 + second: r_thumbProxy_02_geo + - first: + 43: 4300046 + second: r_thumbProxy_01_geo + - first: + 43: 4300048 + second: r_wristProxy_geo + - first: + 43: 4300050 + second: r_erbowProxy_geo + - first: + 43: 4300052 + second: r_shourderProxy_geo + - first: + 43: 4300054 + second: r_clavicleProxy_geo + - first: + 43: 4300056 + second: chestProxy_geo + - first: + 43: 4300058 + second: l_pinkyProxy_03_geo + - first: + 43: 4300060 + second: l_pinkyProxy_02_geo + - first: + 43: 4300062 + second: l_pinkyProxy_01_geo + - first: + 43: 4300064 + second: l_ringProxy_03_geo + - first: + 43: 4300066 + second: l_ringProxy_02_geo + - first: + 43: 4300068 + second: l_ringProxy_01_geo + - first: + 43: 4300070 + second: l_middleProxy_03_geo + - first: + 43: 4300072 + second: l_middleProxy_02_geo + - first: + 43: 4300074 + second: l_middleProxy_01_geo + - first: + 43: 4300076 + second: l_indexProxy_03_geo + - first: + 43: 4300078 + second: l_indexProxy_02_geo + - first: + 43: 4300080 + second: l_indexProxy_01_geo + - first: + 43: 4300082 + second: l_thumbProxy_03_geo + - first: + 43: 4300084 + second: l_thumbProxy_02_geo + - first: + 43: 4300086 + second: l_thumbProxy_01_geo + - first: + 43: 4300088 + second: l_wristProxy_geo + - first: + 43: 4300090 + second: l_erbowProxy_geo + - first: + 43: 4300092 + second: l_shourderProxy_geo + - first: + 43: 4300094 + second: l_clavicleProxy_geo + - first: + 43: 4300096 + second: spineProxy_geo + - first: + 43: 4300098 + second: r_ballProxy_geo + - first: + 43: 4300100 + second: r_ankleProxy_geo + - first: + 43: 4300102 + second: r_kneeProxy_geo + - first: + 43: 4300104 + second: r_hipProxy_geo + - first: + 43: 4300106 + second: pelvisProxy_geo + - first: + 43: 4300108 + second: l_ballProxy_geo + - first: + 43: 4300110 + second: l_ankleProxy_geo + - first: + 43: 4300112 + second: l_kneeProxy_geo + - first: + 43: 4300114 + second: l_hipProxy_geo + - first: + 74: 7400000 + second: __preview___209_Run_JumpDownLow_Run + - first: + 74: 7400002 + second: HumanoidMidAirRight + - first: + 74: 7400004 + second: HumanoidMidAirLeft + - first: + 95: 9500000 + second: //RootNode + - first: + 111: 11100000 + second: //RootNode + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 1 + materialSearch: 2 + materialLocation: 0 + animations: + legacyGenerateAnimations: 3 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 3 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: + - serializedVersion: 16 + name: HumanoidMidAirRight + takeName: _209_Run_JumpDownLow_Run + internalID: 0 + firstFrame: 118 + lastFrame: 120 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 1 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: + - path: + weight: 0 + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidMidAirLeft + takeName: _209_Run_JumpDownLow_Run + internalID: 0 + firstFrame: 118 + lastFrame: 120 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 1 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: + - path: + weight: 1 + - path: Hips + weight: 1 + - path: Hips/Spine + weight: 1 + - path: Hips/Spine/Chest + weight: 1 + - path: Hips/Spine/Chest/Neck + weight: 1 + - path: Hips/Spine/Chest/Neck/Head + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/HeadTop_End + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/LeftEye + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/RightEye + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/Jaw + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/Jaw/TongueBack + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/Jaw/TongueTip + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/Jaw/LeftLipLower + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/Jaw/JawEND + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/Jaw/RightLipLower + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/Jaw/RightLipCorner + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/Jaw/LeftLipCorner + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/LeftLipUpper + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/LeftNostril + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/LeftCheek + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/LeftEyelidLower + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/LeftEyelidUpper + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/LeftInnerBrow + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/LeftIOuterBrow + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/RightInnerBrow + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/RightIOuterBrow + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/RightEyelidUpper + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/RightEyelidLower + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/RightCheek + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/RightNostril + weight: 1 + - path: Hips/Spine/Chest/Neck/Head/RightLipUpper + weight: 1 + - path: Hips/Spine/Chest/RightShoulder + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/RightHandPinky3 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandPinky1/RightHandPinky2/RightHandPinky3/LeftHandPinky17 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/RightHandRing3 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandRing1/RightHandRing2/RightHandRing3/LeftHandRing17 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/RightHandMiddle3 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandMiddle1/RightHandMiddle2/RightHandMiddle3/LeftHandMiddle17 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/RightHandIndex3 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandIndex1/RightHandIndex2/RightHandIndex3/LeftHandIndex17 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/RightHandThumb3 + weight: 1 + - path: Hips/Spine/Chest/RightShoulder/RightArm/RightForeArm/RightHand/RightHandThumb1/RightHandThumb2/RightHandThumb3/LeftHandThumb17 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/LeftHandPinky3 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandPinky1/LeftHandPinky2/LeftHandPinky3/LeftHandPinky13 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/LeftHandRing3 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandRing1/LeftHandRing2/LeftHandRing3/LeftHandRing13 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/LeftHandMiddle3 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandMiddle1/LeftHandMiddle2/LeftHandMiddle3/LeftHandMiddle13 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/LeftHandIndex3 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandIndex1/LeftHandIndex2/LeftHandIndex3/LeftHandIndex13 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/LeftHandThumb3 + weight: 1 + - path: Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand/LeftHandThumb1/LeftHandThumb2/LeftHandThumb3/LeftHandThumb13 + weight: 1 + - path: Hips/RightUpLeg + weight: 1 + - path: Hips/RightUpLeg/RightLeg + weight: 1 + - path: Hips/RightUpLeg/RightLeg/RightFoot + weight: 1 + - path: Hips/RightUpLeg/RightLeg/RightFoot/RightToes + weight: 1 + - path: Hips/RightUpLeg/RightLeg/RightFoot/RightToes/LToeBase_End3 + weight: 1 + - path: Hips/LeftUpLeg + weight: 1 + - path: Hips/LeftUpLeg/LeftLeg + weight: 1 + - path: Hips/LeftUpLeg/LeftLeg/LeftFoot + weight: 1 + - path: Hips/LeftUpLeg/LeftLeg/LeftFoot/LeftToes + weight: 1 + - path: Hips/LeftUpLeg/LeftLeg/LeftFoot/LeftToes/LToeBase_End2 + weight: 1 + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.01 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 0 + importBlendShapes: 0 + importCameras: 0 + importLights: 0 + fileIdsGeneration: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 4 + normalCalculationMode: 0 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: + - boneName: Hips + humanName: Hips + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightUpLeg + humanName: RightUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightLeg + humanName: RightLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightFoot + humanName: RightFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightToes + humanName: RightToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Spine + humanName: Spine + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Chest + humanName: Chest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightShoulder + humanName: RightShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightArm + humanName: RightUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightForeArm + humanName: RightLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHand + humanName: RightHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Neck + humanName: Neck + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Head + humanName: Head + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Jaw + humanName: Jaw + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightEye + humanName: RightEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftEye + humanName: LeftEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftShoulder + humanName: LeftShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftArm + humanName: LeftUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftForeArm + humanName: LeftLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHand + humanName: LeftHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftUpLeg + humanName: LeftUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftLeg + humanName: LeftLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftFoot + humanName: LeftFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftToes + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb1 + humanName: Left Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb2 + humanName: Left Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb3 + humanName: Left Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex1 + humanName: Left Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex2 + humanName: Left Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex3 + humanName: Left Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle1 + humanName: Left Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle2 + humanName: Left Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle3 + humanName: Left Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing1 + humanName: Left Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing2 + humanName: Left Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing3 + humanName: Left Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky1 + humanName: Left Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky2 + humanName: Left Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky3 + humanName: Left Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb1 + humanName: Right Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb2 + humanName: Right Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb3 + humanName: Right Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex1 + humanName: Right Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex2 + humanName: Right Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex3 + humanName: Right Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle1 + humanName: Right Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle2 + humanName: Right Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle3 + humanName: Right Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing1 + humanName: Right Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing2 + humanName: Right Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing3 + humanName: Right Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky1 + humanName: Right Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky2 + humanName: Right Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky3 + humanName: Right Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + skeleton: + - name: HumanoidMidAir(Clone) + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Hips + parentName: + position: {x: 0, y: 0.9782808, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftUpLeg + parentName: + position: {x: -0.0754495, y: -0.04566402, z: 3.5527136e-17} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLeg + parentName: + position: {x: -0.020550499, y: -0.40912998, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftFoot + parentName: + position: {x: -0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftToes + parentName: + position: {x: -0.007487, y: -0.0731673, z: 0.14542712} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LToeBase_End2 + parentName: + position: {x: 0.01264, y: -0.013135779, z: 0.03589337} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightUpLeg + parentName: + position: {x: 0.075449534, y: -0.04566399, z: -7.105427e-17} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLeg + parentName: + position: {x: 0.020550467, y: -0.40913, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightFoot + parentName: + position: {x: 0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightToes + parentName: + position: {x: 0.007487, y: -0.0731673, z: 0.1454275} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LToeBase_End3 + parentName: + position: {x: -0.01264, y: -0.013135779, z: 0.035892997} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Spine + parentName: + position: {x: -3.5527135e-16, y: 0.092263184, z: 0.015771331} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Chest + parentName: + position: {x: -0, y: 0.16254029, z: -0.0016560555} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftShoulder + parentName: + position: {x: -0.038285997, y: 0.2216225, z: -0.017063085} + rotation: {x: -0.016946046, y: -0.052977458, z: 0.15200372, w: 0.98681366} + scale: {x: 1, y: 1, z: 1} + - name: LeftArm + parentName: + position: {x: -0.10050205, y: 8.5265126e-16, z: -1.9184653e-15} + rotation: {x: 0.30379847, y: 0.015646534, z: -0.14874035, w: 0.94092405} + scale: {x: 1, y: 1, z: 1} + - name: LeftForeArm + parentName: + position: {x: -0.2540493, y: -5.6772363e-14, z: -7.7463367e-13} + rotation: {x: 0.0051808483, y: 0.026042052, z: -0.01956996, w: 0.99945587} + scale: {x: 1, y: 1, z: 1} + - name: LeftHand + parentName: + position: {x: -0.24638927, y: -1.3451995e-12, z: -1.4850022e-11} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex1 + parentName: + position: {x: -0.0751258, y: -0.0078414045, z: 0.032652643} + rotation: {x: -0.03083511, y: 0.01796833, z: 0.08719398, w: 0.9955519} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex2 + parentName: + position: {x: -0.03979728, y: 0.000049808405, z: 0.0011857504} + rotation: {x: -0.06896098, y: 0.014713675, z: 0.027958024, w: 0.997119} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex3 + parentName: + position: {x: -0.027968477, y: -0.000000006283088, z: -0.00000005172172} + rotation: {x: 0.000000049360068, y: 0.0757969, z: 0.086332396, w: 0.99337894} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex13 + parentName: + position: {x: -0.018661967, y: 0.0043738526, z: -0.003840025} + rotation: {x: -0.0047212443, y: -0.101354174, z: -0.046291053, w: 0.99376166} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle1 + parentName: + position: {x: -0.076023825, y: -0.0018851344, z: 0.010141229} + rotation: {x: -0.015717177, y: 0.053721305, z: 0.08647733, w: 0.9946802} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle2 + parentName: + position: {x: -0.044280436, y: 0.0000047988738, z: -0.00042540013} + rotation: {x: -0.015102817, y: -0.006481564, z: 0.026954753, w: 0.9995016} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle3 + parentName: + position: {x: -0.033964828, y: -0.000000012198452, z: 0.000000003751609} + rotation: {x: -0.00000010197977, y: 0.008560754, z: 0.06014874, w: 0.9981528} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle13 + parentName: + position: {x: -0.019671572, y: 0.0039255726, z: -0.0005588144} + rotation: {x: -0.00070156495, y: -0.0125020025, z: -0.056023665, w: 0.9983509} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky1 + parentName: + position: {x: -0.06565995, y: -0.007825106, z: -0.032251246} + rotation: {x: -0.04642714, y: 0.075741395, z: 0.086160585, w: 0.99231255} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky2 + parentName: + position: {x: -0.030805448, y: -0.000030874573, z: -0.0014480775} + rotation: {x: 0.049419317, y: -0.021706183, z: 0.032946397, w: 0.99799854} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky3 + parentName: + position: {x: -0.023064027, y: -0.0000064025826, z: 0.000000018330093} + rotation: {x: 0.000016776608, y: -0.0589506, z: 0.038176686, w: 0.99753064} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky13 + parentName: + position: {x: -0.016971992, y: 0.0020288266, z: 0.0031403229} + rotation: {x: 0.00058051164, y: 0.09441839, z: -0.006120706, w: 0.9955136} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing1 + parentName: + position: {x: -0.07030211, y: -0.0037453093, z: -0.011411792} + rotation: {x: -0.013746802, y: 0.07464798, z: 0.08505744, w: 0.9934808} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing2 + parentName: + position: {x: -0.043135457, y: -0.000020882308, z: -0.0022351784} + rotation: {x: 0.019358423, y: -0.025635598, z: 0.029055096, w: 0.99906147} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing3 + parentName: + position: {x: -0.030835565, y: 7.6733495e-11, z: -0.000000016497417} + rotation: {x: -0.00000019720748, y: -0.01787577, z: 0.04217139, w: 0.99895054} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing13 + parentName: + position: {x: -0.020541638, y: 0.0032542208, z: 0.0013791834} + rotation: {x: 0.0024024886, y: 0.037838276, z: -0.06332044, w: 0.9972728} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb1 + parentName: + position: {x: -0.014231241, y: -0.012377825, z: 0.025531668} + rotation: {x: -0.15804178, y: -0.07220157, z: -0.15282887, w: 0.9728582} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb2 + parentName: + position: {x: -0.016374, y: -0.00529, z: 0.023491409} + rotation: {x: -0.026061889, y: 0.09668873, z: 0.0036075544, w: 0.9949669} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb3 + parentName: + position: {x: -0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0.0054519484, y: 0.00044299642, z: 0.0068253013, w: 0.9999618} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb13 + parentName: + position: {x: -0.031868957, y: -0.005299945, z: 0.0258005} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Neck + parentName: + position: {x: 4.2632563e-16, y: 0.2590093, z: -0.032413255} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Head + parentName: + position: {x: 1.2789769e-15, y: 0.08307038, z: 0.0113267815} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: HeadTop_End + parentName: + position: {x: -5.1704583e-18, y: 0.18817878, z: 0.012108689} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Jaw + parentName: + position: {x: 1.7347234e-20, y: 0.0111267585, z: 0.010327543} + rotation: {x: 0.21924005, y: -0, z: -0, w: 0.975671} + scale: {x: 1, y: 1, z: 1} + - name: JawEND + parentName: + position: {x: -1.7347234e-20, y: -0.04828876, z: 0.07185171} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipCorner + parentName: + position: {x: -0.032843262, y: -0.01657876, z: 0.066121764} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipLower + parentName: + position: {x: -0.014250817, y: -0.02168876, z: 0.08224063} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipCorner + parentName: + position: {x: 0.03284, y: -0.01657876, z: 0.066118784} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipLower + parentName: + position: {x: 0.014250817, y: -0.02168876, z: 0.082238786} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueBack + parentName: + position: {x: -1.7347234e-20, y: -0.022869369, z: 0.010095409} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueTip + parentName: + position: {x: -1.7347234e-20, y: -0.023278812, z: 0.03832271} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftCheek + parentName: + position: {x: -0.054244027, y: 0.03370195, z: 0.0594304} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEye + parentName: + position: {x: -0.020848233, y: 0.0825027, z: 0.055427432} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidLower + parentName: + position: {x: -0.035618957, y: 0.06507366, z: 0.07623474} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidUpper + parentName: + position: {x: -0.034406897, y: 0.10060814, z: 0.08020531} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftInnerBrow + parentName: + position: {x: -0.012062691, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftIOuterBrow + parentName: + position: {x: -0.05503987, y: 0.11482529, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipUpper + parentName: + position: {x: -0.014501322, y: -0.005111811, z: 0.09461884} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftNostril + parentName: + position: {x: -0.0179, y: 0.026312828, z: 0.0908674} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightCheek + parentName: + position: {x: 0.054239996, y: 0.033702828, z: 0.0594274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEye + parentName: + position: {x: 0.020849999, y: 0.08250283, z: 0.0554274} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidLower + parentName: + position: {x: 0.03562, y: 0.06507283, z: 0.0762374} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidUpper + parentName: + position: {x: 0.03441, y: 0.10061283, z: 0.08020739} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightInnerBrow + parentName: + position: {x: 0.012062687, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightIOuterBrow + parentName: + position: {x: 0.055040002, y: 0.11482283, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipUpper + parentName: + position: {x: 0.014501322, y: -0.0051071714, z: 0.094617404} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightNostril + parentName: + position: {x: 0.0179, y: 0.026308905, z: 0.09087062} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightShoulder + parentName: + position: {x: 0.038286015, y: 0.22162114, z: -0.017063085} + rotation: {x: 0.14888969, y: 0.986842, z: -0.019134251, w: -0.060072117} + scale: {x: 1, y: 1, z: 1} + - name: RightArm + parentName: + position: {x: -0.100501455, y: -0.0000024995522, z: -0.000000051557407} + rotation: {x: 0.12166404, y: 0.96132773, z: -0.24258879, w: 0.04687749} + scale: {x: 1, y: 1, z: 1} + - name: RightForeArm + parentName: + position: {x: 0.25342825, y: 0.006011353, z: -0.016704524} + rotation: {x: 0.05466638, y: 0.01801824, z: -0.012646304, w: 0.998262} + scale: {x: 1, y: 1, z: 1} + - name: RightHand + parentName: + position: {x: 0.2453737, y: 0.021641772, z: 0.005550465} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex1 + parentName: + position: {x: 0.0747695, y: -0.0012430536, z: 0.034344498} + rotation: {x: -0.02699918, y: 0.13470504, z: -0.060171824, w: 0.9886885} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex2 + parentName: + position: {x: 0.0370584, y: 0.00072612107, z: 0.014538894} + rotation: {x: -0.08035851, y: 0.023022696, z: 0.043748822, w: 0.9955393} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex3 + parentName: + position: {x: 0.025225038, y: -0.0049664653, z: 0.011012146} + rotation: {x: 0.02053314, y: -0.077712215, z: -0.08208267, w: 0.99337894} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex17 + parentName: + position: {x: 0.019119978, y: 0.00084630825, z: 0.0039816475} + rotation: {x: -0.0047212443, y: -0.101354174, z: -0.046291053, w: 0.99376166} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle1 + parentName: + position: {x: 0.075647645, y: 0.0047914027, z: 0.011853182} + rotation: {x: -0.013923295, y: 0.009042029, z: -0.046432108, w: 0.99878347} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle2 + parentName: + position: {x: 0.043809064, y: 0.00019418815, z: 0.006454936} + rotation: {x: -0.021409838, y: -0.044567503, z: 0.08642309, w: 0.9950309} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle3 + parentName: + position: {x: 0.03307247, y: -0.007547537, z: 0.0016898462} + rotation: {x: 0.0010897291, y: -0.008687504, z: -0.06012866, w: 0.99815226} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle17 + parentName: + position: {x: 0.020054895, y: -0.0005471089, z: 0.00044259045} + rotation: {x: -0.00070156495, y: -0.0125020025, z: -0.056023665, w: 0.9983509} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky1 + parentName: + position: {x: 0.06680334, y: -0.0019941088, z: -0.030756146} + rotation: {x: -0.053369474, y: -0.25500068, z: -0.012576154, w: 0.965385} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky2 + parentName: + position: {x: 0.028530842, y: -0.001397143, z: -0.011623796} + rotation: {x: 0.03338257, y: 0.0010568945, z: -0.058690917, w: 0.9977173} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky3 + parentName: + position: {x: 0.02142686, y: -0.00055350893, z: -0.008516608} + rotation: {x: -0.012682699, y: 0.059107784, z: -0.035749678, w: 0.99753064} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky17 + parentName: + position: {x: 0.016975116, y: 0.0016113776, z: -0.0033579709} + rotation: {x: 0.00058051164, y: 0.09441839, z: -0.006120706, w: 0.9955136} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing1 + parentName: + position: {x: 0.070598476, y: 0.0024570965, z: -0.009821458} + rotation: {x: -0.014536185, y: -0.1179943, z: -0.025745139, w: 0.99257404} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing2 + parentName: + position: {x: 0.042887185, y: -0.0013753821, z: -0.004945858} + rotation: {x: 0.022080451, y: -0.021698778, z: 0.07961557, w: 0.9963448} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing3 + parentName: + position: {x: 0.029500604, y: -0.0076929354, z: -0.004622256} + rotation: {x: -0.0018628804, y: 0.01811262, z: -0.042035054, w: 0.99895024} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing17 + parentName: + position: {x: 0.020670934, y: -0.002000433, z: -0.0017780337} + rotation: {x: 0.0024024886, y: 0.037838276, z: -0.06332044, w: 0.9972728} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb1 + parentName: + position: {x: 0.014684916, y: -0.011104942, z: 0.025858095} + rotation: {x: -0.1634191, y: 0.040352434, z: 0.1732005, w: 0.97039557} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb2 + parentName: + position: {x: 0.016374, y: -0.00529, z: 0.02349136} + rotation: {x: -0.02606178, y: -0.09669001, z: -0.0036084293, w: 0.99496675} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb3 + parentName: + position: {x: 0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0.005454247, y: -0.00044345763, z: -0.006828256, w: 0.99996173} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb17 + parentName: + position: {x: 0.03186904, y: -0.005299946, z: 0.0258005} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 0.01 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRun.fbx b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRun.fbx new file mode 100644 index 000000000..72673a5ba Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRun.fbx differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRun.fbx.meta b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRun.fbx.meta new file mode 100644 index 000000000..301b3af29 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRun.fbx.meta @@ -0,0 +1,2814 @@ +fileFormatVersion: 2 +guid: 1cb8ed3cbba15f0479fbae54e0a963df +labels: +- ObiCloth +- ObiRope +- ObiSoftbody +ModelImporter: + serializedVersion: 19301 + internalIDToNameTable: + - first: + 1: 100000 + second: Character_Ctrl:Reference + - first: + 1: 100002 + second: Chest + - first: + 1: 100004 + second: ChestEndEffector + - first: + 1: 100006 + second: ChestOriginEffector + - first: + 1: 100008 + second: chestProxy_geo + - first: + 1: 100010 + second: //RootNode + - first: + 1: 100012 + second: Head + - first: + 1: 100014 + second: Head 1 + - first: + 1: 100016 + second: HeadEffector + - first: + 1: 100018 + second: headProxy_geo + - first: + 1: 100020 + second: HeadTop_End + - first: + 1: 100022 + second: Hips + - first: + 1: 100024 + second: Hips 1 + - first: + 1: 100026 + second: HipsEffector + - first: + 1: 100028 + second: Jaw + - first: + 1: 100030 + second: JawEND + - first: + 1: 100032 + second: jawProxy_geo + - first: + 1: 100034 + second: l_ankleProxy_geo + - first: + 1: 100036 + second: l_ballProxy_geo + - first: + 1: 100038 + second: l_clavicleProxy_geo + - first: + 1: 100040 + second: l_erbowProxy_geo + - first: + 1: 100042 + second: l_hipProxy_geo + - first: + 1: 100044 + second: l_indexProxy_01_geo + - first: + 1: 100046 + second: l_indexProxy_02_geo + - first: + 1: 100048 + second: l_indexProxy_03_geo + - first: + 1: 100050 + second: l_kneeProxy_geo + - first: + 1: 100052 + second: l_middleProxy_01_geo + - first: + 1: 100054 + second: l_middleProxy_02_geo + - first: + 1: 100056 + second: l_middleProxy_03_geo + - first: + 1: 100058 + second: l_pinkyProxy_01_geo + - first: + 1: 100060 + second: l_pinkyProxy_02_geo + - first: + 1: 100062 + second: l_pinkyProxy_03_geo + - first: + 1: 100064 + second: l_ringProxy_01_geo + - first: + 1: 100066 + second: l_ringProxy_02_geo + - first: + 1: 100068 + second: l_ringProxy_03_geo + - first: + 1: 100070 + second: l_shourderProxy_geo + - first: + 1: 100072 + second: l_thumbProxy_01_geo + - first: + 1: 100074 + second: l_thumbProxy_02_geo + - first: + 1: 100076 + second: l_thumbProxy_03_geo + - first: + 1: 100078 + second: l_UNI_eye + - first: + 1: 100080 + second: l_wristProxy_geo + - first: + 1: 100082 + second: LeftAnkleEffector + - first: + 1: 100084 + second: LeftArm + - first: + 1: 100086 + second: LeftArm 1 + - first: + 1: 100088 + second: LeftCheek + - first: + 1: 100090 + second: LeftElbowEffector + - first: + 1: 100092 + second: LeftEye + - first: + 1: 100094 + second: LeftEyelidLower + - first: + 1: 100096 + second: LeftEyelidUpper + - first: + 1: 100098 + second: LeftFoot + - first: + 1: 100100 + second: LeftFoot 1 + - first: + 1: 100102 + second: LeftForeArm + - first: + 1: 100104 + second: LeftForeArm 1 + - first: + 1: 100106 + second: LeftHand + - first: + 1: 100108 + second: LeftHand 1 + - first: + 1: 100110 + second: LeftHandIndex1 + - first: + 1: 100112 + second: LeftHandIndex13 + - first: + 1: 100114 + second: LeftHandIndex17 + - first: + 1: 100116 + second: LeftHandIndex2 + - first: + 1: 100118 + second: LeftHandIndex3 + - first: + 1: 100120 + second: LeftHandIndex4 + - first: + 1: 100122 + second: LeftHandIndex5 + - first: + 1: 100124 + second: LeftHandIndex6 + - first: + 1: 100126 + second: LeftHandIndexEffector + - first: + 1: 100128 + second: LeftHandMiddle1 + - first: + 1: 100130 + second: LeftHandMiddle13 + - first: + 1: 100132 + second: LeftHandMiddle17 + - first: + 1: 100134 + second: LeftHandMiddle2 + - first: + 1: 100136 + second: LeftHandMiddle3 + - first: + 1: 100138 + second: LeftHandMiddle4 + - first: + 1: 100140 + second: LeftHandMiddle5 + - first: + 1: 100142 + second: LeftHandMiddle6 + - first: + 1: 100144 + second: LeftHandMiddleEffector + - first: + 1: 100146 + second: LeftHandPinky1 + - first: + 1: 100148 + second: LeftHandPinky13 + - first: + 1: 100150 + second: LeftHandPinky17 + - first: + 1: 100152 + second: LeftHandPinky2 + - first: + 1: 100154 + second: LeftHandPinky3 + - first: + 1: 100156 + second: LeftHandPinky4 + - first: + 1: 100158 + second: LeftHandPinky5 + - first: + 1: 100160 + second: LeftHandPinky6 + - first: + 1: 100162 + second: LeftHandPinkyEffector + - first: + 1: 100164 + second: LeftHandRing1 + - first: + 1: 100166 + second: LeftHandRing13 + - first: + 1: 100168 + second: LeftHandRing17 + - first: + 1: 100170 + second: LeftHandRing2 + - first: + 1: 100172 + second: LeftHandRing3 + - first: + 1: 100174 + second: LeftHandRing4 + - first: + 1: 100176 + second: LeftHandRing5 + - first: + 1: 100178 + second: LeftHandRing6 + - first: + 1: 100180 + second: LeftHandRingEffector + - first: + 1: 100182 + second: LeftHandThumb1 + - first: + 1: 100184 + second: LeftHandThumb13 + - first: + 1: 100186 + second: LeftHandThumb17 + - first: + 1: 100188 + second: LeftHandThumb2 + - first: + 1: 100190 + second: LeftHandThumb3 + - first: + 1: 100192 + second: LeftHandThumb4 + - first: + 1: 100194 + second: LeftHandThumb5 + - first: + 1: 100196 + second: LeftHandThumb6 + - first: + 1: 100198 + second: LeftHandThumbEffector + - first: + 1: 100200 + second: LeftHipEffector + - first: + 1: 100202 + second: LeftInnerBrow + - first: + 1: 100204 + second: LeftIOuterBrow + - first: + 1: 100206 + second: LeftKneeEffector + - first: + 1: 100208 + second: LeftLeg + - first: + 1: 100210 + second: LeftLeg 1 + - first: + 1: 100212 + second: LeftLipCorner + - first: + 1: 100214 + second: LeftLipLower + - first: + 1: 100216 + second: LeftLipUpper + - first: + 1: 100218 + second: LeftNostril + - first: + 1: 100220 + second: LeftShoulder + - first: + 1: 100222 + second: LeftShoulder 1 + - first: + 1: 100224 + second: LeftShoulderEffector + - first: + 1: 100226 + second: LeftToes + - first: + 1: 100228 + second: LeftUpLeg + - first: + 1: 100230 + second: LeftUpLeg 1 + - first: + 1: 100232 + second: LeftWristEffector + - first: + 1: 100234 + second: LToeBase_End2 + - first: + 1: 100236 + second: LToeBase_End3 + - first: + 1: 100238 + second: Neck + - first: + 1: 100240 + second: Neck 1 + - first: + 1: 100242 + second: neckProxy_geo + - first: + 1: 100244 + second: pelvisProxy_geo + - first: + 1: 100246 + second: r_ankleProxy_geo + - first: + 1: 100248 + second: r_ballProxy_geo + - first: + 1: 100250 + second: r_clavicleProxy_geo + - first: + 1: 100252 + second: r_erbowProxy_geo + - first: + 1: 100254 + second: r_hipProxy_geo + - first: + 1: 100256 + second: r_indexProxy_01_geo + - first: + 1: 100258 + second: r_indexProxy_02_geo + - first: + 1: 100260 + second: r_indexProxy_03_geo + - first: + 1: 100262 + second: r_kneeProxy_geo + - first: + 1: 100264 + second: r_middleProxy_01_geo + - first: + 1: 100266 + second: r_middleProxy_02_geo + - first: + 1: 100268 + second: r_middleProxy_03_geo + - first: + 1: 100270 + second: r_pinkyProxy_01_geo + - first: + 1: 100272 + second: r_pinkyProxy_02_geo + - first: + 1: 100274 + second: r_pinkyProxy_03_geo + - first: + 1: 100276 + second: r_ringProxy_01_geo + - first: + 1: 100278 + second: r_ringProxy_02_geo + - first: + 1: 100280 + second: r_ringProxy_03_geo + - first: + 1: 100282 + second: r_shourderProxy_geo + - first: + 1: 100284 + second: r_thumbProxy_01_geo + - first: + 1: 100286 + second: r_thumbProxy_02_geo + - first: + 1: 100288 + second: r_thumbProxy_03_geo + - first: + 1: 100290 + second: r_UNI_eye + - first: + 1: 100292 + second: r_wristProxy_geo + - first: + 1: 100294 + second: Reference + - first: + 1: 100296 + second: RightAnkleEffector + - first: + 1: 100298 + second: RightArm + - first: + 1: 100300 + second: RightArm 1 + - first: + 1: 100302 + second: RightCheek + - first: + 1: 100304 + second: RightElbowEffector + - first: + 1: 100306 + second: RightEye + - first: + 1: 100308 + second: RightEyelidLower + - first: + 1: 100310 + second: RightEyelidUpper + - first: + 1: 100312 + second: RightFoot + - first: + 1: 100314 + second: RightFoot 1 + - first: + 1: 100316 + second: RightForeArm + - first: + 1: 100318 + second: RightForeArm 1 + - first: + 1: 100320 + second: RightHand + - first: + 1: 100322 + second: RightHand 1 + - first: + 1: 100324 + second: RightHandIndex1 + - first: + 1: 100326 + second: RightHandIndex2 + - first: + 1: 100328 + second: RightHandIndex3 + - first: + 1: 100330 + second: RightHandIndex4 + - first: + 1: 100332 + second: RightHandIndex5 + - first: + 1: 100334 + second: RightHandIndex6 + - first: + 1: 100336 + second: RightHandIndexEffector + - first: + 1: 100338 + second: RightHandMiddle1 + - first: + 1: 100340 + second: RightHandMiddle2 + - first: + 1: 100342 + second: RightHandMiddle3 + - first: + 1: 100344 + second: RightHandMiddle4 + - first: + 1: 100346 + second: RightHandMiddle5 + - first: + 1: 100348 + second: RightHandMiddle6 + - first: + 1: 100350 + second: RightHandMiddleEffector + - first: + 1: 100352 + second: RightHandPinky1 + - first: + 1: 100354 + second: RightHandPinky2 + - first: + 1: 100356 + second: RightHandPinky3 + - first: + 1: 100358 + second: RightHandPinky4 + - first: + 1: 100360 + second: RightHandPinky5 + - first: + 1: 100362 + second: RightHandPinky6 + - first: + 1: 100364 + second: RightHandPinkyEffector + - first: + 1: 100366 + second: RightHandRing1 + - first: + 1: 100368 + second: RightHandRing2 + - first: + 1: 100370 + second: RightHandRing3 + - first: + 1: 100372 + second: RightHandRing4 + - first: + 1: 100374 + second: RightHandRing5 + - first: + 1: 100376 + second: RightHandRing6 + - first: + 1: 100378 + second: RightHandRingEffector + - first: + 1: 100380 + second: RightHandThumb1 + - first: + 1: 100382 + second: RightHandThumb2 + - first: + 1: 100384 + second: RightHandThumb3 + - first: + 1: 100386 + second: RightHandThumb4 + - first: + 1: 100388 + second: RightHandThumb5 + - first: + 1: 100390 + second: RightHandThumb6 + - first: + 1: 100392 + second: RightHandThumbEffector + - first: + 1: 100394 + second: RightHipEffector + - first: + 1: 100396 + second: RightInnerBrow + - first: + 1: 100398 + second: RightIOuterBrow + - first: + 1: 100400 + second: RightKneeEffector + - first: + 1: 100402 + second: RightLeg + - first: + 1: 100404 + second: RightLeg 1 + - first: + 1: 100406 + second: RightLipCorner + - first: + 1: 100408 + second: RightLipLower + - first: + 1: 100410 + second: RightLipUpper + - first: + 1: 100412 + second: RightNostril + - first: + 1: 100414 + second: RightShoulder + - first: + 1: 100416 + second: RightShoulder 1 + - first: + 1: 100418 + second: RightShoulderEffector + - first: + 1: 100420 + second: RightToes + - first: + 1: 100422 + second: RightUpLeg + - first: + 1: 100424 + second: RightUpLeg 1 + - first: + 1: 100426 + second: RightWristEffector + - first: + 1: 100428 + second: Spine + - first: + 1: 100430 + second: Spine 1 + - first: + 1: 100432 + second: Spine1 + - first: + 1: 100434 + second: spineProxy_geo + - first: + 1: 100436 + second: TongueBack + - first: + 1: 100438 + second: TongueTip + - first: + 1: 100440 + second: UNI_01_Lower_teethProxy + - first: + 1: 100442 + second: UNI_01_TongueBaseProxy + - first: + 1: 100444 + second: UNI_01_TongueTipProxy + - first: + 1: 100446 + second: UNI_01_Upper_teethProxy + - first: + 4: 400000 + second: Character_Ctrl:Reference + - first: + 4: 400002 + second: Chest + - first: + 4: 400004 + second: ChestEndEffector + - first: + 4: 400006 + second: ChestOriginEffector + - first: + 4: 400008 + second: chestProxy_geo + - first: + 4: 400010 + second: //RootNode + - first: + 4: 400012 + second: Head + - first: + 4: 400014 + second: Head 1 + - first: + 4: 400016 + second: HeadEffector + - first: + 4: 400018 + second: headProxy_geo + - first: + 4: 400020 + second: HeadTop_End + - first: + 4: 400022 + second: Hips + - first: + 4: 400024 + second: Hips 1 + - first: + 4: 400026 + second: HipsEffector + - first: + 4: 400028 + second: Jaw + - first: + 4: 400030 + second: JawEND + - first: + 4: 400032 + second: jawProxy_geo + - first: + 4: 400034 + second: l_ankleProxy_geo + - first: + 4: 400036 + second: l_ballProxy_geo + - first: + 4: 400038 + second: l_clavicleProxy_geo + - first: + 4: 400040 + second: l_erbowProxy_geo + - first: + 4: 400042 + second: l_hipProxy_geo + - first: + 4: 400044 + second: l_indexProxy_01_geo + - first: + 4: 400046 + second: l_indexProxy_02_geo + - first: + 4: 400048 + second: l_indexProxy_03_geo + - first: + 4: 400050 + second: l_kneeProxy_geo + - first: + 4: 400052 + second: l_middleProxy_01_geo + - first: + 4: 400054 + second: l_middleProxy_02_geo + - first: + 4: 400056 + second: l_middleProxy_03_geo + - first: + 4: 400058 + second: l_pinkyProxy_01_geo + - first: + 4: 400060 + second: l_pinkyProxy_02_geo + - first: + 4: 400062 + second: l_pinkyProxy_03_geo + - first: + 4: 400064 + second: l_ringProxy_01_geo + - first: + 4: 400066 + second: l_ringProxy_02_geo + - first: + 4: 400068 + second: l_ringProxy_03_geo + - first: + 4: 400070 + second: l_shourderProxy_geo + - first: + 4: 400072 + second: l_thumbProxy_01_geo + - first: + 4: 400074 + second: l_thumbProxy_02_geo + - first: + 4: 400076 + second: l_thumbProxy_03_geo + - first: + 4: 400078 + second: l_UNI_eye + - first: + 4: 400080 + second: l_wristProxy_geo + - first: + 4: 400082 + second: LeftAnkleEffector + - first: + 4: 400084 + second: LeftArm + - first: + 4: 400086 + second: LeftArm 1 + - first: + 4: 400088 + second: LeftCheek + - first: + 4: 400090 + second: LeftElbowEffector + - first: + 4: 400092 + second: LeftEye + - first: + 4: 400094 + second: LeftEyelidLower + - first: + 4: 400096 + second: LeftEyelidUpper + - first: + 4: 400098 + second: LeftFoot + - first: + 4: 400100 + second: LeftFoot 1 + - first: + 4: 400102 + second: LeftForeArm + - first: + 4: 400104 + second: LeftForeArm 1 + - first: + 4: 400106 + second: LeftHand + - first: + 4: 400108 + second: LeftHand 1 + - first: + 4: 400110 + second: LeftHandIndex1 + - first: + 4: 400112 + second: LeftHandIndex13 + - first: + 4: 400114 + second: LeftHandIndex17 + - first: + 4: 400116 + second: LeftHandIndex2 + - first: + 4: 400118 + second: LeftHandIndex3 + - first: + 4: 400120 + second: LeftHandIndex4 + - first: + 4: 400122 + second: LeftHandIndex5 + - first: + 4: 400124 + second: LeftHandIndex6 + - first: + 4: 400126 + second: LeftHandIndexEffector + - first: + 4: 400128 + second: LeftHandMiddle1 + - first: + 4: 400130 + second: LeftHandMiddle13 + - first: + 4: 400132 + second: LeftHandMiddle17 + - first: + 4: 400134 + second: LeftHandMiddle2 + - first: + 4: 400136 + second: LeftHandMiddle3 + - first: + 4: 400138 + second: LeftHandMiddle4 + - first: + 4: 400140 + second: LeftHandMiddle5 + - first: + 4: 400142 + second: LeftHandMiddle6 + - first: + 4: 400144 + second: LeftHandMiddleEffector + - first: + 4: 400146 + second: LeftHandPinky1 + - first: + 4: 400148 + second: LeftHandPinky13 + - first: + 4: 400150 + second: LeftHandPinky17 + - first: + 4: 400152 + second: LeftHandPinky2 + - first: + 4: 400154 + second: LeftHandPinky3 + - first: + 4: 400156 + second: LeftHandPinky4 + - first: + 4: 400158 + second: LeftHandPinky5 + - first: + 4: 400160 + second: LeftHandPinky6 + - first: + 4: 400162 + second: LeftHandPinkyEffector + - first: + 4: 400164 + second: LeftHandRing1 + - first: + 4: 400166 + second: LeftHandRing13 + - first: + 4: 400168 + second: LeftHandRing17 + - first: + 4: 400170 + second: LeftHandRing2 + - first: + 4: 400172 + second: LeftHandRing3 + - first: + 4: 400174 + second: LeftHandRing4 + - first: + 4: 400176 + second: LeftHandRing5 + - first: + 4: 400178 + second: LeftHandRing6 + - first: + 4: 400180 + second: LeftHandRingEffector + - first: + 4: 400182 + second: LeftHandThumb1 + - first: + 4: 400184 + second: LeftHandThumb13 + - first: + 4: 400186 + second: LeftHandThumb17 + - first: + 4: 400188 + second: LeftHandThumb2 + - first: + 4: 400190 + second: LeftHandThumb3 + - first: + 4: 400192 + second: LeftHandThumb4 + - first: + 4: 400194 + second: LeftHandThumb5 + - first: + 4: 400196 + second: LeftHandThumb6 + - first: + 4: 400198 + second: LeftHandThumbEffector + - first: + 4: 400200 + second: LeftHipEffector + - first: + 4: 400202 + second: LeftInnerBrow + - first: + 4: 400204 + second: LeftIOuterBrow + - first: + 4: 400206 + second: LeftKneeEffector + - first: + 4: 400208 + second: LeftLeg + - first: + 4: 400210 + second: LeftLeg 1 + - first: + 4: 400212 + second: LeftLipCorner + - first: + 4: 400214 + second: LeftLipLower + - first: + 4: 400216 + second: LeftLipUpper + - first: + 4: 400218 + second: LeftNostril + - first: + 4: 400220 + second: LeftShoulder + - first: + 4: 400222 + second: LeftShoulder 1 + - first: + 4: 400224 + second: LeftShoulderEffector + - first: + 4: 400226 + second: LeftToes + - first: + 4: 400228 + second: LeftUpLeg + - first: + 4: 400230 + second: LeftUpLeg 1 + - first: + 4: 400232 + second: LeftWristEffector + - first: + 4: 400234 + second: LToeBase_End2 + - first: + 4: 400236 + second: LToeBase_End3 + - first: + 4: 400238 + second: Neck + - first: + 4: 400240 + second: Neck 1 + - first: + 4: 400242 + second: neckProxy_geo + - first: + 4: 400244 + second: pelvisProxy_geo + - first: + 4: 400246 + second: r_ankleProxy_geo + - first: + 4: 400248 + second: r_ballProxy_geo + - first: + 4: 400250 + second: r_clavicleProxy_geo + - first: + 4: 400252 + second: r_erbowProxy_geo + - first: + 4: 400254 + second: r_hipProxy_geo + - first: + 4: 400256 + second: r_indexProxy_01_geo + - first: + 4: 400258 + second: r_indexProxy_02_geo + - first: + 4: 400260 + second: r_indexProxy_03_geo + - first: + 4: 400262 + second: r_kneeProxy_geo + - first: + 4: 400264 + second: r_middleProxy_01_geo + - first: + 4: 400266 + second: r_middleProxy_02_geo + - first: + 4: 400268 + second: r_middleProxy_03_geo + - first: + 4: 400270 + second: r_pinkyProxy_01_geo + - first: + 4: 400272 + second: r_pinkyProxy_02_geo + - first: + 4: 400274 + second: r_pinkyProxy_03_geo + - first: + 4: 400276 + second: r_ringProxy_01_geo + - first: + 4: 400278 + second: r_ringProxy_02_geo + - first: + 4: 400280 + second: r_ringProxy_03_geo + - first: + 4: 400282 + second: r_shourderProxy_geo + - first: + 4: 400284 + second: r_thumbProxy_01_geo + - first: + 4: 400286 + second: r_thumbProxy_02_geo + - first: + 4: 400288 + second: r_thumbProxy_03_geo + - first: + 4: 400290 + second: r_UNI_eye + - first: + 4: 400292 + second: r_wristProxy_geo + - first: + 4: 400294 + second: Reference + - first: + 4: 400296 + second: RightAnkleEffector + - first: + 4: 400298 + second: RightArm + - first: + 4: 400300 + second: RightArm 1 + - first: + 4: 400302 + second: RightCheek + - first: + 4: 400304 + second: RightElbowEffector + - first: + 4: 400306 + second: RightEye + - first: + 4: 400308 + second: RightEyelidLower + - first: + 4: 400310 + second: RightEyelidUpper + - first: + 4: 400312 + second: RightFoot + - first: + 4: 400314 + second: RightFoot 1 + - first: + 4: 400316 + second: RightForeArm + - first: + 4: 400318 + second: RightForeArm 1 + - first: + 4: 400320 + second: RightHand + - first: + 4: 400322 + second: RightHand 1 + - first: + 4: 400324 + second: RightHandIndex1 + - first: + 4: 400326 + second: RightHandIndex2 + - first: + 4: 400328 + second: RightHandIndex3 + - first: + 4: 400330 + second: RightHandIndex4 + - first: + 4: 400332 + second: RightHandIndex5 + - first: + 4: 400334 + second: RightHandIndex6 + - first: + 4: 400336 + second: RightHandIndexEffector + - first: + 4: 400338 + second: RightHandMiddle1 + - first: + 4: 400340 + second: RightHandMiddle2 + - first: + 4: 400342 + second: RightHandMiddle3 + - first: + 4: 400344 + second: RightHandMiddle4 + - first: + 4: 400346 + second: RightHandMiddle5 + - first: + 4: 400348 + second: RightHandMiddle6 + - first: + 4: 400350 + second: RightHandMiddleEffector + - first: + 4: 400352 + second: RightHandPinky1 + - first: + 4: 400354 + second: RightHandPinky2 + - first: + 4: 400356 + second: RightHandPinky3 + - first: + 4: 400358 + second: RightHandPinky4 + - first: + 4: 400360 + second: RightHandPinky5 + - first: + 4: 400362 + second: RightHandPinky6 + - first: + 4: 400364 + second: RightHandPinkyEffector + - first: + 4: 400366 + second: RightHandRing1 + - first: + 4: 400368 + second: RightHandRing2 + - first: + 4: 400370 + second: RightHandRing3 + - first: + 4: 400372 + second: RightHandRing4 + - first: + 4: 400374 + second: RightHandRing5 + - first: + 4: 400376 + second: RightHandRing6 + - first: + 4: 400378 + second: RightHandRingEffector + - first: + 4: 400380 + second: RightHandThumb1 + - first: + 4: 400382 + second: RightHandThumb2 + - first: + 4: 400384 + second: RightHandThumb3 + - first: + 4: 400386 + second: RightHandThumb4 + - first: + 4: 400388 + second: RightHandThumb5 + - first: + 4: 400390 + second: RightHandThumb6 + - first: + 4: 400392 + second: RightHandThumbEffector + - first: + 4: 400394 + second: RightHipEffector + - first: + 4: 400396 + second: RightInnerBrow + - first: + 4: 400398 + second: RightIOuterBrow + - first: + 4: 400400 + second: RightKneeEffector + - first: + 4: 400402 + second: RightLeg + - first: + 4: 400404 + second: RightLeg 1 + - first: + 4: 400406 + second: RightLipCorner + - first: + 4: 400408 + second: RightLipLower + - first: + 4: 400410 + second: RightLipUpper + - first: + 4: 400412 + second: RightNostril + - first: + 4: 400414 + second: RightShoulder + - first: + 4: 400416 + second: RightShoulder 1 + - first: + 4: 400418 + second: RightShoulderEffector + - first: + 4: 400420 + second: RightToes + - first: + 4: 400422 + second: RightUpLeg + - first: + 4: 400424 + second: RightUpLeg 1 + - first: + 4: 400426 + second: RightWristEffector + - first: + 4: 400428 + second: Spine + - first: + 4: 400430 + second: Spine 1 + - first: + 4: 400432 + second: Spine1 + - first: + 4: 400434 + second: spineProxy_geo + - first: + 4: 400436 + second: TongueBack + - first: + 4: 400438 + second: TongueTip + - first: + 4: 400440 + second: UNI_01_Lower_teethProxy + - first: + 4: 400442 + second: UNI_01_TongueBaseProxy + - first: + 4: 400444 + second: UNI_01_TongueTipProxy + - first: + 4: 400446 + second: UNI_01_Upper_teethProxy + - first: + 23: 2300000 + second: chestProxy_geo + - first: + 23: 2300002 + second: headProxy_geo + - first: + 23: 2300004 + second: jawProxy_geo + - first: + 23: 2300006 + second: l_ankleProxy_geo + - first: + 23: 2300008 + second: l_ballProxy_geo + - first: + 23: 2300010 + second: l_clavicleProxy_geo + - first: + 23: 2300012 + second: l_erbowProxy_geo + - first: + 23: 2300014 + second: l_hipProxy_geo + - first: + 23: 2300016 + second: l_indexProxy_01_geo + - first: + 23: 2300018 + second: l_indexProxy_02_geo + - first: + 23: 2300020 + second: l_indexProxy_03_geo + - first: + 23: 2300022 + second: l_kneeProxy_geo + - first: + 23: 2300024 + second: l_middleProxy_01_geo + - first: + 23: 2300026 + second: l_middleProxy_02_geo + - first: + 23: 2300028 + second: l_middleProxy_03_geo + - first: + 23: 2300030 + second: l_pinkyProxy_01_geo + - first: + 23: 2300032 + second: l_pinkyProxy_02_geo + - first: + 23: 2300034 + second: l_pinkyProxy_03_geo + - first: + 23: 2300036 + second: l_ringProxy_01_geo + - first: + 23: 2300038 + second: l_ringProxy_02_geo + - first: + 23: 2300040 + second: l_ringProxy_03_geo + - first: + 23: 2300042 + second: l_shourderProxy_geo + - first: + 23: 2300044 + second: l_thumbProxy_01_geo + - first: + 23: 2300046 + second: l_thumbProxy_02_geo + - first: + 23: 2300048 + second: l_thumbProxy_03_geo + - first: + 23: 2300050 + second: l_UNI_eye + - first: + 23: 2300052 + second: l_wristProxy_geo + - first: + 23: 2300054 + second: neckProxy_geo + - first: + 23: 2300056 + second: pelvisProxy_geo + - first: + 23: 2300058 + second: r_ankleProxy_geo + - first: + 23: 2300060 + second: r_ballProxy_geo + - first: + 23: 2300062 + second: r_clavicleProxy_geo + - first: + 23: 2300064 + second: r_erbowProxy_geo + - first: + 23: 2300066 + second: r_hipProxy_geo + - first: + 23: 2300068 + second: r_indexProxy_01_geo + - first: + 23: 2300070 + second: r_indexProxy_02_geo + - first: + 23: 2300072 + second: r_indexProxy_03_geo + - first: + 23: 2300074 + second: r_kneeProxy_geo + - first: + 23: 2300076 + second: r_middleProxy_01_geo + - first: + 23: 2300078 + second: r_middleProxy_02_geo + - first: + 23: 2300080 + second: r_middleProxy_03_geo + - first: + 23: 2300082 + second: r_pinkyProxy_01_geo + - first: + 23: 2300084 + second: r_pinkyProxy_02_geo + - first: + 23: 2300086 + second: r_pinkyProxy_03_geo + - first: + 23: 2300088 + second: r_ringProxy_01_geo + - first: + 23: 2300090 + second: r_ringProxy_02_geo + - first: + 23: 2300092 + second: r_ringProxy_03_geo + - first: + 23: 2300094 + second: r_shourderProxy_geo + - first: + 23: 2300096 + second: r_thumbProxy_01_geo + - first: + 23: 2300098 + second: r_thumbProxy_02_geo + - first: + 23: 2300100 + second: r_thumbProxy_03_geo + - first: + 23: 2300102 + second: r_UNI_eye + - first: + 23: 2300104 + second: r_wristProxy_geo + - first: + 23: 2300106 + second: spineProxy_geo + - first: + 23: 2300108 + second: UNI_01_Lower_teethProxy + - first: + 23: 2300110 + second: UNI_01_TongueBaseProxy + - first: + 23: 2300112 + second: UNI_01_TongueTipProxy + - first: + 23: 2300114 + second: UNI_01_Upper_teethProxy + - first: + 33: 3300000 + second: chestProxy_geo + - first: + 33: 3300002 + second: headProxy_geo + - first: + 33: 3300004 + second: jawProxy_geo + - first: + 33: 3300006 + second: l_ankleProxy_geo + - first: + 33: 3300008 + second: l_ballProxy_geo + - first: + 33: 3300010 + second: l_clavicleProxy_geo + - first: + 33: 3300012 + second: l_erbowProxy_geo + - first: + 33: 3300014 + second: l_hipProxy_geo + - first: + 33: 3300016 + second: l_indexProxy_01_geo + - first: + 33: 3300018 + second: l_indexProxy_02_geo + - first: + 33: 3300020 + second: l_indexProxy_03_geo + - first: + 33: 3300022 + second: l_kneeProxy_geo + - first: + 33: 3300024 + second: l_middleProxy_01_geo + - first: + 33: 3300026 + second: l_middleProxy_02_geo + - first: + 33: 3300028 + second: l_middleProxy_03_geo + - first: + 33: 3300030 + second: l_pinkyProxy_01_geo + - first: + 33: 3300032 + second: l_pinkyProxy_02_geo + - first: + 33: 3300034 + second: l_pinkyProxy_03_geo + - first: + 33: 3300036 + second: l_ringProxy_01_geo + - first: + 33: 3300038 + second: l_ringProxy_02_geo + - first: + 33: 3300040 + second: l_ringProxy_03_geo + - first: + 33: 3300042 + second: l_shourderProxy_geo + - first: + 33: 3300044 + second: l_thumbProxy_01_geo + - first: + 33: 3300046 + second: l_thumbProxy_02_geo + - first: + 33: 3300048 + second: l_thumbProxy_03_geo + - first: + 33: 3300050 + second: l_UNI_eye + - first: + 33: 3300052 + second: l_wristProxy_geo + - first: + 33: 3300054 + second: neckProxy_geo + - first: + 33: 3300056 + second: pelvisProxy_geo + - first: + 33: 3300058 + second: r_ankleProxy_geo + - first: + 33: 3300060 + second: r_ballProxy_geo + - first: + 33: 3300062 + second: r_clavicleProxy_geo + - first: + 33: 3300064 + second: r_erbowProxy_geo + - first: + 33: 3300066 + second: r_hipProxy_geo + - first: + 33: 3300068 + second: r_indexProxy_01_geo + - first: + 33: 3300070 + second: r_indexProxy_02_geo + - first: + 33: 3300072 + second: r_indexProxy_03_geo + - first: + 33: 3300074 + second: r_kneeProxy_geo + - first: + 33: 3300076 + second: r_middleProxy_01_geo + - first: + 33: 3300078 + second: r_middleProxy_02_geo + - first: + 33: 3300080 + second: r_middleProxy_03_geo + - first: + 33: 3300082 + second: r_pinkyProxy_01_geo + - first: + 33: 3300084 + second: r_pinkyProxy_02_geo + - first: + 33: 3300086 + second: r_pinkyProxy_03_geo + - first: + 33: 3300088 + second: r_ringProxy_01_geo + - first: + 33: 3300090 + second: r_ringProxy_02_geo + - first: + 33: 3300092 + second: r_ringProxy_03_geo + - first: + 33: 3300094 + second: r_shourderProxy_geo + - first: + 33: 3300096 + second: r_thumbProxy_01_geo + - first: + 33: 3300098 + second: r_thumbProxy_02_geo + - first: + 33: 3300100 + second: r_thumbProxy_03_geo + - first: + 33: 3300102 + second: r_UNI_eye + - first: + 33: 3300104 + second: r_wristProxy_geo + - first: + 33: 3300106 + second: spineProxy_geo + - first: + 33: 3300108 + second: UNI_01_Lower_teethProxy + - first: + 33: 3300110 + second: UNI_01_TongueBaseProxy + - first: + 33: 3300112 + second: UNI_01_TongueTipProxy + - first: + 33: 3300114 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300000 + second: l_UNI_eye + - first: + 43: 4300002 + second: r_UNI_eye + - first: + 43: 4300004 + second: UNI_01_TongueBaseProxy + - first: + 43: 4300006 + second: UNI_01_TongueTipProxy + - first: + 43: 4300008 + second: UNI_01_Lower_teethProxy + - first: + 43: 4300010 + second: jawProxy_geo + - first: + 43: 4300012 + second: headProxy_geo + - first: + 43: 4300014 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300016 + second: neckProxy_geo + - first: + 43: 4300018 + second: r_pinkyProxy_03_geo + - first: + 43: 4300020 + second: r_pinkyProxy_02_geo + - first: + 43: 4300022 + second: r_pinkyProxy_01_geo + - first: + 43: 4300024 + second: r_ringProxy_03_geo + - first: + 43: 4300026 + second: r_ringProxy_02_geo + - first: + 43: 4300028 + second: r_ringProxy_01_geo + - first: + 43: 4300030 + second: r_middleProxy_03_geo + - first: + 43: 4300032 + second: r_middleProxy_02_geo + - first: + 43: 4300034 + second: r_middleProxy_01_geo + - first: + 43: 4300036 + second: r_indexProxy_03_geo + - first: + 43: 4300038 + second: r_indexProxy_02_geo + - first: + 43: 4300040 + second: r_indexProxy_01_geo + - first: + 43: 4300042 + second: r_thumbProxy_03_geo + - first: + 43: 4300044 + second: r_thumbProxy_02_geo + - first: + 43: 4300046 + second: r_thumbProxy_01_geo + - first: + 43: 4300048 + second: r_wristProxy_geo + - first: + 43: 4300050 + second: r_erbowProxy_geo + - first: + 43: 4300052 + second: r_shourderProxy_geo + - first: + 43: 4300054 + second: r_clavicleProxy_geo + - first: + 43: 4300056 + second: chestProxy_geo + - first: + 43: 4300058 + second: l_pinkyProxy_03_geo + - first: + 43: 4300060 + second: l_pinkyProxy_02_geo + - first: + 43: 4300062 + second: l_pinkyProxy_01_geo + - first: + 43: 4300064 + second: l_ringProxy_03_geo + - first: + 43: 4300066 + second: l_ringProxy_02_geo + - first: + 43: 4300068 + second: l_ringProxy_01_geo + - first: + 43: 4300070 + second: l_middleProxy_03_geo + - first: + 43: 4300072 + second: l_middleProxy_02_geo + - first: + 43: 4300074 + second: l_middleProxy_01_geo + - first: + 43: 4300076 + second: l_indexProxy_03_geo + - first: + 43: 4300078 + second: l_indexProxy_02_geo + - first: + 43: 4300080 + second: l_indexProxy_01_geo + - first: + 43: 4300082 + second: l_thumbProxy_03_geo + - first: + 43: 4300084 + second: l_thumbProxy_02_geo + - first: + 43: 4300086 + second: l_thumbProxy_01_geo + - first: + 43: 4300088 + second: l_wristProxy_geo + - first: + 43: 4300090 + second: l_erbowProxy_geo + - first: + 43: 4300092 + second: l_shourderProxy_geo + - first: + 43: 4300094 + second: l_clavicleProxy_geo + - first: + 43: 4300096 + second: spineProxy_geo + - first: + 43: 4300098 + second: r_ballProxy_geo + - first: + 43: 4300100 + second: r_ankleProxy_geo + - first: + 43: 4300102 + second: r_kneeProxy_geo + - first: + 43: 4300104 + second: r_hipProxy_geo + - first: + 43: 4300106 + second: pelvisProxy_geo + - first: + 43: 4300108 + second: l_ballProxy_geo + - first: + 43: 4300110 + second: l_ankleProxy_geo + - first: + 43: 4300112 + second: l_kneeProxy_geo + - first: + 43: 4300114 + second: l_hipProxy_geo + - first: + 74: 7400000 + second: HumanoidRun + - first: + 95: 9500000 + second: //RootNode + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 1 + materialSearch: 2 + materialLocation: 0 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 0 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: + - serializedVersion: 16 + name: HumanoidRun + takeName: _24_a_U1_M_P_RunForward_NtrlFaceFwd__Fb_p0_No_0_PJ_10 + internalID: 0 + firstFrame: 335.9 + lastFrame: 353.7 + wrapMode: 0 + orientationOffsetY: -0.0975 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 1 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.01 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 0 + importBlendShapes: 0 + importCameras: 0 + importLights: 0 + fileIdsGeneration: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 4 + normalCalculationMode: 0 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: + - boneName: Hips + humanName: Hips + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftUpLeg + humanName: LeftUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightUpLeg + humanName: RightUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftLeg + humanName: LeftLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightLeg + humanName: RightLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftFoot + humanName: LeftFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightFoot + humanName: RightFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Spine + humanName: Spine + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Chest + humanName: Chest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Neck + humanName: Neck + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Head + humanName: Head + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftShoulder + humanName: LeftShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightShoulder + humanName: RightShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftArm + humanName: LeftUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightArm + humanName: RightUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftForeArm + humanName: LeftLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightForeArm + humanName: RightLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHand + humanName: LeftHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHand + humanName: RightHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftToes + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightToes + humanName: RightToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftEye + humanName: LeftEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightEye + humanName: RightEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Jaw + humanName: Jaw + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb1 + humanName: Left Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb2 + humanName: Left Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb3 + humanName: Left Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex1 + humanName: Left Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex2 + humanName: Left Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex3 + humanName: Left Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle1 + humanName: Left Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle2 + humanName: Left Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle3 + humanName: Left Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing1 + humanName: Left Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing2 + humanName: Left Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing3 + humanName: Left Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky1 + humanName: Left Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky2 + humanName: Left Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky3 + humanName: Left Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb1 + humanName: Right Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb2 + humanName: Right Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb3 + humanName: Right Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex1 + humanName: Right Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex2 + humanName: Right Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex3 + humanName: Right Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle1 + humanName: Right Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle2 + humanName: Right Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle3 + humanName: Right Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing1 + humanName: Right Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing2 + humanName: Right Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing3 + humanName: Right Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky1 + humanName: Right Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky2 + humanName: Right Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky3 + humanName: Right Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + skeleton: + - name: Run(Clone) + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Hips + parentName: + position: {x: -0.000000020489097, y: 0.958501, z: 0.059998296} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftUpLeg + parentName: + position: {x: -0.0754495, y: -0.04566402, z: -6.217249e-17} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLeg + parentName: + position: {x: -0.020550499, y: -0.40912998, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftFoot + parentName: + position: {x: -0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftToes + parentName: + position: {x: -0.007487, y: -0.0731673, z: 0.14542712} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightUpLeg + parentName: + position: {x: 0.075449534, y: -0.04566399, z: -6.217249e-17} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLeg + parentName: + position: {x: 0.020550467, y: -0.40913, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightFoot + parentName: + position: {x: 0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightToes + parentName: + position: {x: 0.007487, y: -0.0731673, z: 0.1454275} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Spine + parentName: + position: {x: -4.7739588e-17, y: 0.092263184, z: 0.015771331} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Chest + parentName: + position: {x: 3.5527136e-17, y: 0.16254029, z: -0.0016560555} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftShoulder + parentName: + position: {x: -0.038285997, y: 0.2216225, z: -0.017063085} + rotation: {x: -0.02901484, y: -0.07803791, z: 0.1478155, w: 0.9855044} + scale: {x: 1, y: 1, z: 1} + - name: LeftArm + parentName: + position: {x: -0.10050205, y: 0.000000001125083, z: -1.9039074e-10} + rotation: {x: 0.0065737762, y: 0.07236942, z: -0.1361931, w: 0.9880137} + scale: {x: 1, y: 1, z: 1} + - name: LeftForeArm + parentName: + position: {x: -0.2540493, y: -1.0551325e-10, z: 1.09112684e-10} + rotation: {x: 0.37014812, y: 0.03247756, z: -0.006699631, w: 0.9283807} + scale: {x: 1, y: 1, z: 1} + - name: LeftHand + parentName: + position: {x: -0.24638927, y: -1.1574698e-10, z: 1.1358061e-11} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex1 + parentName: + position: {x: -0.0751258, y: -0.0078414045, z: 0.032652643} + rotation: {x: 0.042805295, y: 0.05632816, z: 0.06901114, w: 0.99510425} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex2 + parentName: + position: {x: -0.03979728, y: 0.000049808412, z: 0.0011857506} + rotation: {x: -0.11841995, y: 0.01500381, z: 0.016670156, w: 0.99271035} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex3 + parentName: + position: {x: -0.027968477, y: -0.000000006416276, z: -0.000000051434675} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle1 + parentName: + position: {x: -0.076023825, y: -0.0018851344, z: 0.010141229} + rotation: {x: -0.033341967, y: 0.07042229, z: 0.07230802, w: 0.9943342} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle2 + parentName: + position: {x: -0.044280436, y: 0.00000479887, z: -0.00042540036} + rotation: {x: -0.033172157, y: -0.0051259603, z: 0.011490114, w: 0.9993705} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle3 + parentName: + position: {x: -0.033964828, y: -0.000000012184439, z: 0.000000003753109} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky1 + parentName: + position: {x: -0.06565995, y: -0.007825106, z: -0.032251246} + rotation: {x: -0.110300295, y: 0.079448596, z: 0.0742732, w: 0.9879298} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky2 + parentName: + position: {x: -0.030805448, y: -0.000030874577, z: -0.0014480774} + rotation: {x: -0.072170265, y: -0.026308026, z: 0.013470372, w: 0.9969544} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky3 + parentName: + position: {x: -0.023064027, y: -0.0000064025903, z: 0.000000018201217} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing1 + parentName: + position: {x: -0.07030211, y: -0.0037453093, z: -0.011411792} + rotation: {x: 0.015795682, y: 0.09177202, z: 0.06791128, w: 0.9933361} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing2 + parentName: + position: {x: -0.043135457, y: -0.000020882291, z: -0.0022351781} + rotation: {x: -0.13446514, y: -0.026096364, z: 0.008734329, w: 0.9905361} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing3 + parentName: + position: {x: -0.030835565, y: 1.5784053e-10, z: -0.000000016455102} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb1 + parentName: + position: {x: -0.014231241, y: -0.012377825, z: 0.025531668} + rotation: {x: -0.2238929, y: -0.0758366, z: -0.1291156, w: 0.9630421} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb2 + parentName: + position: {x: -0.016374, y: -0.00529, z: 0.023491409} + rotation: {x: -0.0260623, y: 0.09668697, z: 0.0036068659, w: 0.9949671} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb3 + parentName: + position: {x: -0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Neck + parentName: + position: {x: -0, y: 0.2590093, z: -0.032413255} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Head + parentName: + position: {x: 5.7731595e-17, y: 0.08307038, z: 0.0113267815} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Jaw + parentName: + position: {x: 1.7347234e-20, y: 0.0111267585, z: 0.010327543} + rotation: {x: 0.21924005, y: -0, z: -0, w: 0.975671} + scale: {x: 1, y: 1, z: 1} + - name: JawEND + parentName: + position: {x: -1.7347234e-20, y: -0.04828876, z: 0.07185171} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipCorner + parentName: + position: {x: -0.032843262, y: -0.01657876, z: 0.066121764} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipLower + parentName: + position: {x: -0.014250817, y: -0.02168876, z: 0.08224063} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipCorner + parentName: + position: {x: 0.03284, y: -0.01657876, z: 0.066118784} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipLower + parentName: + position: {x: 0.014250817, y: -0.02168876, z: 0.082238786} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueBack + parentName: + position: {x: -1.7347234e-20, y: -0.022869369, z: 0.010095409} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueTip + parentName: + position: {x: -1.7347234e-20, y: -0.023278812, z: 0.03832271} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftCheek + parentName: + position: {x: -0.054244027, y: 0.03370195, z: 0.0594304} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEye + parentName: + position: {x: -0.020848233, y: 0.0825027, z: 0.055427432} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidLower + parentName: + position: {x: -0.035618957, y: 0.06507366, z: 0.07623474} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidUpper + parentName: + position: {x: -0.034406897, y: 0.10060814, z: 0.08020531} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftInnerBrow + parentName: + position: {x: -0.012062691, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftIOuterBrow + parentName: + position: {x: -0.05503987, y: 0.11482529, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipUpper + parentName: + position: {x: -0.014501322, y: -0.005111811, z: 0.09461884} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftNostril + parentName: + position: {x: -0.0179, y: 0.026312828, z: 0.0908674} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightCheek + parentName: + position: {x: 0.054239996, y: 0.033702828, z: 0.0594274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEye + parentName: + position: {x: 0.020849999, y: 0.08250283, z: 0.0554274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidLower + parentName: + position: {x: 0.03562, y: 0.06507283, z: 0.0762374} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidUpper + parentName: + position: {x: 0.03441, y: 0.10061283, z: 0.08020739} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightInnerBrow + parentName: + position: {x: 0.012062687, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightIOuterBrow + parentName: + position: {x: 0.055040002, y: 0.11482283, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipUpper + parentName: + position: {x: 0.014501322, y: -0.0051071714, z: 0.094617404} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightNostril + parentName: + position: {x: 0.0179, y: 0.026308905, z: 0.09087062} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightShoulder + parentName: + position: {x: 0.038286015, y: 0.22162114, z: -0.017063085} + rotation: {x: 0.1579978, y: 0.9867513, z: -0.013299583, w: -0.034375474} + scale: {x: 1, y: 1, z: 1} + - name: RightArm + parentName: + position: {x: -0.100501455, y: -0.0000024966455, z: -0.00000005228366} + rotation: {x: 0.13541101, y: 0.98766977, z: -0.004818486, w: 0.07841701} + scale: {x: 1, y: 1, z: 1} + - name: RightForeArm + parentName: + position: {x: 0.25342825, y: 0.006011353, z: -0.016704524} + rotation: {x: 0.25265744, y: 0.024327299, z: -0.026384478, w: 0.96689} + scale: {x: 1, y: 1, z: 1} + - name: RightHand + parentName: + position: {x: 0.2453737, y: 0.021641772, z: 0.005550465} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex1 + parentName: + position: {x: 0.0747695, y: -0.0012430536, z: 0.034344498} + rotation: {x: 0.050132476, y: 0.10633009, z: -0.025096685, w: 0.99274915} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex2 + parentName: + position: {x: 0.0370584, y: 0.00072612107, z: 0.014538894} + rotation: {x: -0.12210108, y: 0.026184548, z: 0.03848509, w: 0.99142563} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex3 + parentName: + position: {x: 0.025225038, y: -0.0049664653, z: 0.011012146} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle1 + parentName: + position: {x: 0.075647645, y: 0.0047914027, z: 0.011853182} + rotation: {x: -0.026879195, y: -0.0053047896, z: -0.033220712, w: 0.99907243} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle2 + parentName: + position: {x: 0.043809064, y: 0.00019418815, z: 0.006454936} + rotation: {x: -0.039818257, y: -0.04374049, z: 0.09885875, w: 0.993342} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle3 + parentName: + position: {x: 0.03307247, y: -0.007547537, z: 0.0016898462} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky1 + parentName: + position: {x: 0.06680334, y: -0.0019941085, z: -0.030756146} + rotation: {x: -0.11187588, y: -0.25872952, z: 0.0088018915, w: 0.9594088} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky2 + parentName: + position: {x: 0.028530842, y: -0.001397143, z: -0.011623796} + rotation: {x: -0.07357618, y: 0.009609909, z: 0.0022198618, w: 0.9972409} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky3 + parentName: + position: {x: 0.02142686, y: -0.00055350893, z: -0.008516608} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing1 + parentName: + position: {x: 0.070598476, y: 0.0024570965, z: -0.009821458} + rotation: {x: 0.01820465, y: -0.13375518, z: -0.008969554, w: 0.9908066} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing2 + parentName: + position: {x: 0.042887185, y: -0.0013753821, z: -0.0049458584} + rotation: {x: -0.12681748, y: 0.0007345817, z: 0.115031, w: 0.98523337} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing3 + parentName: + position: {x: 0.029500604, y: -0.0076929354, z: -0.004622256} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb1 + parentName: + position: {x: 0.014684916, y: -0.011104942, z: 0.025858095} + rotation: {x: -0.16873905, y: 0.028051713, z: 0.11700559, w: 0.9782893} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb2 + parentName: + position: {x: 0.016374, y: -0.00529, z: 0.02349136} + rotation: {x: -0.026062516, y: -0.09668957, z: -0.003607418, w: 0.99496675} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb3 + parentName: + position: {x: 0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 0.01 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRunTurn.fbx b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRunTurn.fbx new file mode 100644 index 000000000..d115096f8 Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRunTurn.fbx differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRunTurn.fbx.meta b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRunTurn.fbx.meta new file mode 100644 index 000000000..1bba047aa --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRunTurn.fbx.meta @@ -0,0 +1,2467 @@ +fileFormatVersion: 2 +guid: 1062212255550964e974f3ffb3cbaae3 +labels: +- ObiCloth +- ObiRope +- ObiSoftbody +ModelImporter: + serializedVersion: 19301 + internalIDToNameTable: + - first: + 1: 100000 + second: Chest + - first: + 1: 100002 + second: chestProxy_geo + - first: + 1: 100004 + second: //RootNode + - first: + 1: 100006 + second: Head + - first: + 1: 100008 + second: headProxy_geo + - first: + 1: 100010 + second: HeadTop_End + - first: + 1: 100012 + second: Hips + - first: + 1: 100014 + second: Jaw + - first: + 1: 100016 + second: JawEND + - first: + 1: 100018 + second: jawProxy_geo + - first: + 1: 100020 + second: l_ankleProxy_geo + - first: + 1: 100022 + second: l_ballProxy_geo + - first: + 1: 100024 + second: l_clavicleProxy_geo + - first: + 1: 100026 + second: l_erbowProxy_geo + - first: + 1: 100028 + second: l_hipProxy_geo + - first: + 1: 100030 + second: l_indexProxy_01_geo + - first: + 1: 100032 + second: l_indexProxy_02_geo + - first: + 1: 100034 + second: l_indexProxy_03_geo + - first: + 1: 100036 + second: l_kneeProxy_geo + - first: + 1: 100038 + second: l_middleProxy_01_geo + - first: + 1: 100040 + second: l_middleProxy_02_geo + - first: + 1: 100042 + second: l_middleProxy_03_geo + - first: + 1: 100044 + second: l_pinkyProxy_01_geo + - first: + 1: 100046 + second: l_pinkyProxy_02_geo + - first: + 1: 100048 + second: l_pinkyProxy_03_geo + - first: + 1: 100050 + second: l_ringProxy_01_geo + - first: + 1: 100052 + second: l_ringProxy_02_geo + - first: + 1: 100054 + second: l_ringProxy_03_geo + - first: + 1: 100056 + second: l_shourderProxy_geo + - first: + 1: 100058 + second: l_thumbProxy_01_geo + - first: + 1: 100060 + second: l_thumbProxy_02_geo + - first: + 1: 100062 + second: l_thumbProxy_03_geo + - first: + 1: 100064 + second: l_UNI_eye + - first: + 1: 100066 + second: l_wristProxy_geo + - first: + 1: 100068 + second: LeftArm + - first: + 1: 100070 + second: LeftCheek + - first: + 1: 100072 + second: LeftEye + - first: + 1: 100074 + second: LeftEyelidLower + - first: + 1: 100076 + second: LeftEyelidUpper + - first: + 1: 100078 + second: LeftFoot + - first: + 1: 100080 + second: LeftForeArm + - first: + 1: 100082 + second: LeftHand + - first: + 1: 100084 + second: LeftHandIndex1 + - first: + 1: 100086 + second: LeftHandIndex13 + - first: + 1: 100088 + second: LeftHandIndex17 + - first: + 1: 100090 + second: LeftHandIndex2 + - first: + 1: 100092 + second: LeftHandIndex3 + - first: + 1: 100094 + second: LeftHandMiddle1 + - first: + 1: 100096 + second: LeftHandMiddle13 + - first: + 1: 100098 + second: LeftHandMiddle17 + - first: + 1: 100100 + second: LeftHandMiddle2 + - first: + 1: 100102 + second: LeftHandMiddle3 + - first: + 1: 100104 + second: LeftHandPinky1 + - first: + 1: 100106 + second: LeftHandPinky13 + - first: + 1: 100108 + second: LeftHandPinky17 + - first: + 1: 100110 + second: LeftHandPinky2 + - first: + 1: 100112 + second: LeftHandPinky3 + - first: + 1: 100114 + second: LeftHandRing1 + - first: + 1: 100116 + second: LeftHandRing13 + - first: + 1: 100118 + second: LeftHandRing17 + - first: + 1: 100120 + second: LeftHandRing2 + - first: + 1: 100122 + second: LeftHandRing3 + - first: + 1: 100124 + second: LeftHandThumb1 + - first: + 1: 100126 + second: LeftHandThumb13 + - first: + 1: 100128 + second: LeftHandThumb17 + - first: + 1: 100130 + second: LeftHandThumb2 + - first: + 1: 100132 + second: LeftHandThumb3 + - first: + 1: 100134 + second: LeftInnerBrow + - first: + 1: 100136 + second: LeftIOuterBrow + - first: + 1: 100138 + second: LeftLeg + - first: + 1: 100140 + second: LeftLipCorner + - first: + 1: 100142 + second: LeftLipLower + - first: + 1: 100144 + second: LeftLipUpper + - first: + 1: 100146 + second: LeftNostril + - first: + 1: 100148 + second: LeftShoulder + - first: + 1: 100150 + second: LeftToes + - first: + 1: 100152 + second: LeftUpLeg + - first: + 1: 100154 + second: LToeBase_End2 + - first: + 1: 100156 + second: LToeBase_End3 + - first: + 1: 100158 + second: Neck + - first: + 1: 100160 + second: neckProxy_geo + - first: + 1: 100162 + second: pelvisProxy_geo + - first: + 1: 100164 + second: Pivot + - first: + 1: 100166 + second: r_ankleProxy_geo + - first: + 1: 100168 + second: r_ballProxy_geo + - first: + 1: 100170 + second: r_clavicleProxy_geo + - first: + 1: 100172 + second: r_erbowProxy_geo + - first: + 1: 100174 + second: r_hipProxy_geo + - first: + 1: 100176 + second: r_indexProxy_01_geo + - first: + 1: 100178 + second: r_indexProxy_02_geo + - first: + 1: 100180 + second: r_indexProxy_03_geo + - first: + 1: 100182 + second: r_kneeProxy_geo + - first: + 1: 100184 + second: r_middleProxy_01_geo + - first: + 1: 100186 + second: r_middleProxy_02_geo + - first: + 1: 100188 + second: r_middleProxy_03_geo + - first: + 1: 100190 + second: r_pinkyProxy_01_geo + - first: + 1: 100192 + second: r_pinkyProxy_02_geo + - first: + 1: 100194 + second: r_pinkyProxy_03_geo + - first: + 1: 100196 + second: r_ringProxy_01_geo + - first: + 1: 100198 + second: r_ringProxy_02_geo + - first: + 1: 100200 + second: r_ringProxy_03_geo + - first: + 1: 100202 + second: r_shourderProxy_geo + - first: + 1: 100204 + second: r_thumbProxy_01_geo + - first: + 1: 100206 + second: r_thumbProxy_02_geo + - first: + 1: 100208 + second: r_thumbProxy_03_geo + - first: + 1: 100210 + second: r_UNI_eye + - first: + 1: 100212 + second: r_wristProxy_geo + - first: + 1: 100214 + second: Reference + - first: + 1: 100216 + second: RightArm + - first: + 1: 100218 + second: RightCheek + - first: + 1: 100220 + second: RightEye + - first: + 1: 100222 + second: RightEyelidLower + - first: + 1: 100224 + second: RightEyelidUpper + - first: + 1: 100226 + second: RightFoot + - first: + 1: 100228 + second: RightForeArm + - first: + 1: 100230 + second: RightHand + - first: + 1: 100232 + second: RightHandIndex1 + - first: + 1: 100234 + second: RightHandIndex2 + - first: + 1: 100236 + second: RightHandIndex3 + - first: + 1: 100238 + second: RightHandMiddle1 + - first: + 1: 100240 + second: RightHandMiddle2 + - first: + 1: 100242 + second: RightHandMiddle3 + - first: + 1: 100244 + second: RightHandPinky1 + - first: + 1: 100246 + second: RightHandPinky2 + - first: + 1: 100248 + second: RightHandPinky3 + - first: + 1: 100250 + second: RightHandRing1 + - first: + 1: 100252 + second: RightHandRing2 + - first: + 1: 100254 + second: RightHandRing3 + - first: + 1: 100256 + second: RightHandThumb1 + - first: + 1: 100258 + second: RightHandThumb2 + - first: + 1: 100260 + second: RightHandThumb3 + - first: + 1: 100262 + second: RightInnerBrow + - first: + 1: 100264 + second: RightIOuterBrow + - first: + 1: 100266 + second: RightLeg + - first: + 1: 100268 + second: RightLipCorner + - first: + 1: 100270 + second: RightLipLower + - first: + 1: 100272 + second: RightLipUpper + - first: + 1: 100274 + second: RightNostril + - first: + 1: 100276 + second: RightShoulder + - first: + 1: 100278 + second: RightToes + - first: + 1: 100280 + second: RightUpLeg + - first: + 1: 100282 + second: Root + - first: + 1: 100284 + second: Spine + - first: + 1: 100286 + second: spineProxy_geo + - first: + 1: 100288 + second: TongueBack + - first: + 1: 100290 + second: TongueTip + - first: + 1: 100292 + second: UNI_01_Lower_teethProxy + - first: + 1: 100294 + second: UNI_01_TongueBaseProxy + - first: + 1: 100296 + second: UNI_01_TongueTipProxy + - first: + 1: 100298 + second: UNI_01_Upper_teethProxy + - first: + 4: 400000 + second: Chest + - first: + 4: 400002 + second: chestProxy_geo + - first: + 4: 400004 + second: //RootNode + - first: + 4: 400006 + second: Head + - first: + 4: 400008 + second: headProxy_geo + - first: + 4: 400010 + second: HeadTop_End + - first: + 4: 400012 + second: Hips + - first: + 4: 400014 + second: Jaw + - first: + 4: 400016 + second: JawEND + - first: + 4: 400018 + second: jawProxy_geo + - first: + 4: 400020 + second: l_ankleProxy_geo + - first: + 4: 400022 + second: l_ballProxy_geo + - first: + 4: 400024 + second: l_clavicleProxy_geo + - first: + 4: 400026 + second: l_erbowProxy_geo + - first: + 4: 400028 + second: l_hipProxy_geo + - first: + 4: 400030 + second: l_indexProxy_01_geo + - first: + 4: 400032 + second: l_indexProxy_02_geo + - first: + 4: 400034 + second: l_indexProxy_03_geo + - first: + 4: 400036 + second: l_kneeProxy_geo + - first: + 4: 400038 + second: l_middleProxy_01_geo + - first: + 4: 400040 + second: l_middleProxy_02_geo + - first: + 4: 400042 + second: l_middleProxy_03_geo + - first: + 4: 400044 + second: l_pinkyProxy_01_geo + - first: + 4: 400046 + second: l_pinkyProxy_02_geo + - first: + 4: 400048 + second: l_pinkyProxy_03_geo + - first: + 4: 400050 + second: l_ringProxy_01_geo + - first: + 4: 400052 + second: l_ringProxy_02_geo + - first: + 4: 400054 + second: l_ringProxy_03_geo + - first: + 4: 400056 + second: l_shourderProxy_geo + - first: + 4: 400058 + second: l_thumbProxy_01_geo + - first: + 4: 400060 + second: l_thumbProxy_02_geo + - first: + 4: 400062 + second: l_thumbProxy_03_geo + - first: + 4: 400064 + second: l_UNI_eye + - first: + 4: 400066 + second: l_wristProxy_geo + - first: + 4: 400068 + second: LeftArm + - first: + 4: 400070 + second: LeftCheek + - first: + 4: 400072 + second: LeftEye + - first: + 4: 400074 + second: LeftEyelidLower + - first: + 4: 400076 + second: LeftEyelidUpper + - first: + 4: 400078 + second: LeftFoot + - first: + 4: 400080 + second: LeftForeArm + - first: + 4: 400082 + second: LeftHand + - first: + 4: 400084 + second: LeftHandIndex1 + - first: + 4: 400086 + second: LeftHandIndex13 + - first: + 4: 400088 + second: LeftHandIndex17 + - first: + 4: 400090 + second: LeftHandIndex2 + - first: + 4: 400092 + second: LeftHandIndex3 + - first: + 4: 400094 + second: LeftHandMiddle1 + - first: + 4: 400096 + second: LeftHandMiddle13 + - first: + 4: 400098 + second: LeftHandMiddle17 + - first: + 4: 400100 + second: LeftHandMiddle2 + - first: + 4: 400102 + second: LeftHandMiddle3 + - first: + 4: 400104 + second: LeftHandPinky1 + - first: + 4: 400106 + second: LeftHandPinky13 + - first: + 4: 400108 + second: LeftHandPinky17 + - first: + 4: 400110 + second: LeftHandPinky2 + - first: + 4: 400112 + second: LeftHandPinky3 + - first: + 4: 400114 + second: LeftHandRing1 + - first: + 4: 400116 + second: LeftHandRing13 + - first: + 4: 400118 + second: LeftHandRing17 + - first: + 4: 400120 + second: LeftHandRing2 + - first: + 4: 400122 + second: LeftHandRing3 + - first: + 4: 400124 + second: LeftHandThumb1 + - first: + 4: 400126 + second: LeftHandThumb13 + - first: + 4: 400128 + second: LeftHandThumb17 + - first: + 4: 400130 + second: LeftHandThumb2 + - first: + 4: 400132 + second: LeftHandThumb3 + - first: + 4: 400134 + second: LeftInnerBrow + - first: + 4: 400136 + second: LeftIOuterBrow + - first: + 4: 400138 + second: LeftLeg + - first: + 4: 400140 + second: LeftLipCorner + - first: + 4: 400142 + second: LeftLipLower + - first: + 4: 400144 + second: LeftLipUpper + - first: + 4: 400146 + second: LeftNostril + - first: + 4: 400148 + second: LeftShoulder + - first: + 4: 400150 + second: LeftToes + - first: + 4: 400152 + second: LeftUpLeg + - first: + 4: 400154 + second: LToeBase_End2 + - first: + 4: 400156 + second: LToeBase_End3 + - first: + 4: 400158 + second: Neck + - first: + 4: 400160 + second: neckProxy_geo + - first: + 4: 400162 + second: pelvisProxy_geo + - first: + 4: 400164 + second: Pivot + - first: + 4: 400166 + second: r_ankleProxy_geo + - first: + 4: 400168 + second: r_ballProxy_geo + - first: + 4: 400170 + second: r_clavicleProxy_geo + - first: + 4: 400172 + second: r_erbowProxy_geo + - first: + 4: 400174 + second: r_hipProxy_geo + - first: + 4: 400176 + second: r_indexProxy_01_geo + - first: + 4: 400178 + second: r_indexProxy_02_geo + - first: + 4: 400180 + second: r_indexProxy_03_geo + - first: + 4: 400182 + second: r_kneeProxy_geo + - first: + 4: 400184 + second: r_middleProxy_01_geo + - first: + 4: 400186 + second: r_middleProxy_02_geo + - first: + 4: 400188 + second: r_middleProxy_03_geo + - first: + 4: 400190 + second: r_pinkyProxy_01_geo + - first: + 4: 400192 + second: r_pinkyProxy_02_geo + - first: + 4: 400194 + second: r_pinkyProxy_03_geo + - first: + 4: 400196 + second: r_ringProxy_01_geo + - first: + 4: 400198 + second: r_ringProxy_02_geo + - first: + 4: 400200 + second: r_ringProxy_03_geo + - first: + 4: 400202 + second: r_shourderProxy_geo + - first: + 4: 400204 + second: r_thumbProxy_01_geo + - first: + 4: 400206 + second: r_thumbProxy_02_geo + - first: + 4: 400208 + second: r_thumbProxy_03_geo + - first: + 4: 400210 + second: r_UNI_eye + - first: + 4: 400212 + second: r_wristProxy_geo + - first: + 4: 400214 + second: Reference + - first: + 4: 400216 + second: RightArm + - first: + 4: 400218 + second: RightCheek + - first: + 4: 400220 + second: RightEye + - first: + 4: 400222 + second: RightEyelidLower + - first: + 4: 400224 + second: RightEyelidUpper + - first: + 4: 400226 + second: RightFoot + - first: + 4: 400228 + second: RightForeArm + - first: + 4: 400230 + second: RightHand + - first: + 4: 400232 + second: RightHandIndex1 + - first: + 4: 400234 + second: RightHandIndex2 + - first: + 4: 400236 + second: RightHandIndex3 + - first: + 4: 400238 + second: RightHandMiddle1 + - first: + 4: 400240 + second: RightHandMiddle2 + - first: + 4: 400242 + second: RightHandMiddle3 + - first: + 4: 400244 + second: RightHandPinky1 + - first: + 4: 400246 + second: RightHandPinky2 + - first: + 4: 400248 + second: RightHandPinky3 + - first: + 4: 400250 + second: RightHandRing1 + - first: + 4: 400252 + second: RightHandRing2 + - first: + 4: 400254 + second: RightHandRing3 + - first: + 4: 400256 + second: RightHandThumb1 + - first: + 4: 400258 + second: RightHandThumb2 + - first: + 4: 400260 + second: RightHandThumb3 + - first: + 4: 400262 + second: RightInnerBrow + - first: + 4: 400264 + second: RightIOuterBrow + - first: + 4: 400266 + second: RightLeg + - first: + 4: 400268 + second: RightLipCorner + - first: + 4: 400270 + second: RightLipLower + - first: + 4: 400272 + second: RightLipUpper + - first: + 4: 400274 + second: RightNostril + - first: + 4: 400276 + second: RightShoulder + - first: + 4: 400278 + second: RightToes + - first: + 4: 400280 + second: RightUpLeg + - first: + 4: 400282 + second: Root + - first: + 4: 400284 + second: Spine + - first: + 4: 400286 + second: spineProxy_geo + - first: + 4: 400288 + second: TongueBack + - first: + 4: 400290 + second: TongueTip + - first: + 4: 400292 + second: UNI_01_Lower_teethProxy + - first: + 4: 400294 + second: UNI_01_TongueBaseProxy + - first: + 4: 400296 + second: UNI_01_TongueTipProxy + - first: + 4: 400298 + second: UNI_01_Upper_teethProxy + - first: + 23: 2300000 + second: chestProxy_geo + - first: + 23: 2300002 + second: headProxy_geo + - first: + 23: 2300004 + second: jawProxy_geo + - first: + 23: 2300006 + second: l_ankleProxy_geo + - first: + 23: 2300008 + second: l_ballProxy_geo + - first: + 23: 2300010 + second: l_clavicleProxy_geo + - first: + 23: 2300012 + second: l_erbowProxy_geo + - first: + 23: 2300014 + second: l_hipProxy_geo + - first: + 23: 2300016 + second: l_indexProxy_01_geo + - first: + 23: 2300018 + second: l_indexProxy_02_geo + - first: + 23: 2300020 + second: l_indexProxy_03_geo + - first: + 23: 2300022 + second: l_kneeProxy_geo + - first: + 23: 2300024 + second: l_middleProxy_01_geo + - first: + 23: 2300026 + second: l_middleProxy_02_geo + - first: + 23: 2300028 + second: l_middleProxy_03_geo + - first: + 23: 2300030 + second: l_pinkyProxy_01_geo + - first: + 23: 2300032 + second: l_pinkyProxy_02_geo + - first: + 23: 2300034 + second: l_pinkyProxy_03_geo + - first: + 23: 2300036 + second: l_ringProxy_01_geo + - first: + 23: 2300038 + second: l_ringProxy_02_geo + - first: + 23: 2300040 + second: l_ringProxy_03_geo + - first: + 23: 2300042 + second: l_shourderProxy_geo + - first: + 23: 2300044 + second: l_thumbProxy_01_geo + - first: + 23: 2300046 + second: l_thumbProxy_02_geo + - first: + 23: 2300048 + second: l_thumbProxy_03_geo + - first: + 23: 2300050 + second: l_UNI_eye + - first: + 23: 2300052 + second: l_wristProxy_geo + - first: + 23: 2300054 + second: neckProxy_geo + - first: + 23: 2300056 + second: pelvisProxy_geo + - first: + 23: 2300058 + second: r_ankleProxy_geo + - first: + 23: 2300060 + second: r_ballProxy_geo + - first: + 23: 2300062 + second: r_clavicleProxy_geo + - first: + 23: 2300064 + second: r_erbowProxy_geo + - first: + 23: 2300066 + second: r_hipProxy_geo + - first: + 23: 2300068 + second: r_indexProxy_01_geo + - first: + 23: 2300070 + second: r_indexProxy_02_geo + - first: + 23: 2300072 + second: r_indexProxy_03_geo + - first: + 23: 2300074 + second: r_kneeProxy_geo + - first: + 23: 2300076 + second: r_middleProxy_01_geo + - first: + 23: 2300078 + second: r_middleProxy_02_geo + - first: + 23: 2300080 + second: r_middleProxy_03_geo + - first: + 23: 2300082 + second: r_pinkyProxy_01_geo + - first: + 23: 2300084 + second: r_pinkyProxy_02_geo + - first: + 23: 2300086 + second: r_pinkyProxy_03_geo + - first: + 23: 2300088 + second: r_ringProxy_01_geo + - first: + 23: 2300090 + second: r_ringProxy_02_geo + - first: + 23: 2300092 + second: r_ringProxy_03_geo + - first: + 23: 2300094 + second: r_shourderProxy_geo + - first: + 23: 2300096 + second: r_thumbProxy_01_geo + - first: + 23: 2300098 + second: r_thumbProxy_02_geo + - first: + 23: 2300100 + second: r_thumbProxy_03_geo + - first: + 23: 2300102 + second: r_UNI_eye + - first: + 23: 2300104 + second: r_wristProxy_geo + - first: + 23: 2300106 + second: spineProxy_geo + - first: + 23: 2300108 + second: UNI_01_Lower_teethProxy + - first: + 23: 2300110 + second: UNI_01_TongueBaseProxy + - first: + 23: 2300112 + second: UNI_01_TongueTipProxy + - first: + 23: 2300114 + second: UNI_01_Upper_teethProxy + - first: + 33: 3300000 + second: chestProxy_geo + - first: + 33: 3300002 + second: headProxy_geo + - first: + 33: 3300004 + second: jawProxy_geo + - first: + 33: 3300006 + second: l_ankleProxy_geo + - first: + 33: 3300008 + second: l_ballProxy_geo + - first: + 33: 3300010 + second: l_clavicleProxy_geo + - first: + 33: 3300012 + second: l_erbowProxy_geo + - first: + 33: 3300014 + second: l_hipProxy_geo + - first: + 33: 3300016 + second: l_indexProxy_01_geo + - first: + 33: 3300018 + second: l_indexProxy_02_geo + - first: + 33: 3300020 + second: l_indexProxy_03_geo + - first: + 33: 3300022 + second: l_kneeProxy_geo + - first: + 33: 3300024 + second: l_middleProxy_01_geo + - first: + 33: 3300026 + second: l_middleProxy_02_geo + - first: + 33: 3300028 + second: l_middleProxy_03_geo + - first: + 33: 3300030 + second: l_pinkyProxy_01_geo + - first: + 33: 3300032 + second: l_pinkyProxy_02_geo + - first: + 33: 3300034 + second: l_pinkyProxy_03_geo + - first: + 33: 3300036 + second: l_ringProxy_01_geo + - first: + 33: 3300038 + second: l_ringProxy_02_geo + - first: + 33: 3300040 + second: l_ringProxy_03_geo + - first: + 33: 3300042 + second: l_shourderProxy_geo + - first: + 33: 3300044 + second: l_thumbProxy_01_geo + - first: + 33: 3300046 + second: l_thumbProxy_02_geo + - first: + 33: 3300048 + second: l_thumbProxy_03_geo + - first: + 33: 3300050 + second: l_UNI_eye + - first: + 33: 3300052 + second: l_wristProxy_geo + - first: + 33: 3300054 + second: neckProxy_geo + - first: + 33: 3300056 + second: pelvisProxy_geo + - first: + 33: 3300058 + second: r_ankleProxy_geo + - first: + 33: 3300060 + second: r_ballProxy_geo + - first: + 33: 3300062 + second: r_clavicleProxy_geo + - first: + 33: 3300064 + second: r_erbowProxy_geo + - first: + 33: 3300066 + second: r_hipProxy_geo + - first: + 33: 3300068 + second: r_indexProxy_01_geo + - first: + 33: 3300070 + second: r_indexProxy_02_geo + - first: + 33: 3300072 + second: r_indexProxy_03_geo + - first: + 33: 3300074 + second: r_kneeProxy_geo + - first: + 33: 3300076 + second: r_middleProxy_01_geo + - first: + 33: 3300078 + second: r_middleProxy_02_geo + - first: + 33: 3300080 + second: r_middleProxy_03_geo + - first: + 33: 3300082 + second: r_pinkyProxy_01_geo + - first: + 33: 3300084 + second: r_pinkyProxy_02_geo + - first: + 33: 3300086 + second: r_pinkyProxy_03_geo + - first: + 33: 3300088 + second: r_ringProxy_01_geo + - first: + 33: 3300090 + second: r_ringProxy_02_geo + - first: + 33: 3300092 + second: r_ringProxy_03_geo + - first: + 33: 3300094 + second: r_shourderProxy_geo + - first: + 33: 3300096 + second: r_thumbProxy_01_geo + - first: + 33: 3300098 + second: r_thumbProxy_02_geo + - first: + 33: 3300100 + second: r_thumbProxy_03_geo + - first: + 33: 3300102 + second: r_UNI_eye + - first: + 33: 3300104 + second: r_wristProxy_geo + - first: + 33: 3300106 + second: spineProxy_geo + - first: + 33: 3300108 + second: UNI_01_Lower_teethProxy + - first: + 33: 3300110 + second: UNI_01_TongueBaseProxy + - first: + 33: 3300112 + second: UNI_01_TongueTipProxy + - first: + 33: 3300114 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300000 + second: l_UNI_eye + - first: + 43: 4300002 + second: r_UNI_eye + - first: + 43: 4300004 + second: UNI_01_TongueBaseProxy + - first: + 43: 4300006 + second: UNI_01_TongueTipProxy + - first: + 43: 4300008 + second: UNI_01_Lower_teethProxy + - first: + 43: 4300010 + second: jawProxy_geo + - first: + 43: 4300012 + second: headProxy_geo + - first: + 43: 4300014 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300016 + second: neckProxy_geo + - first: + 43: 4300018 + second: r_pinkyProxy_03_geo + - first: + 43: 4300020 + second: r_pinkyProxy_02_geo + - first: + 43: 4300022 + second: r_pinkyProxy_01_geo + - first: + 43: 4300024 + second: r_ringProxy_03_geo + - first: + 43: 4300026 + second: r_ringProxy_02_geo + - first: + 43: 4300028 + second: r_ringProxy_01_geo + - first: + 43: 4300030 + second: r_middleProxy_03_geo + - first: + 43: 4300032 + second: r_middleProxy_02_geo + - first: + 43: 4300034 + second: r_middleProxy_01_geo + - first: + 43: 4300036 + second: r_indexProxy_03_geo + - first: + 43: 4300038 + second: r_indexProxy_02_geo + - first: + 43: 4300040 + second: r_indexProxy_01_geo + - first: + 43: 4300042 + second: r_thumbProxy_03_geo + - first: + 43: 4300044 + second: r_thumbProxy_02_geo + - first: + 43: 4300046 + second: r_thumbProxy_01_geo + - first: + 43: 4300048 + second: r_wristProxy_geo + - first: + 43: 4300050 + second: r_erbowProxy_geo + - first: + 43: 4300052 + second: r_shourderProxy_geo + - first: + 43: 4300054 + second: r_clavicleProxy_geo + - first: + 43: 4300056 + second: chestProxy_geo + - first: + 43: 4300058 + second: l_pinkyProxy_03_geo + - first: + 43: 4300060 + second: l_pinkyProxy_02_geo + - first: + 43: 4300062 + second: l_pinkyProxy_01_geo + - first: + 43: 4300064 + second: l_ringProxy_03_geo + - first: + 43: 4300066 + second: l_ringProxy_02_geo + - first: + 43: 4300068 + second: l_ringProxy_01_geo + - first: + 43: 4300070 + second: l_middleProxy_03_geo + - first: + 43: 4300072 + second: l_middleProxy_02_geo + - first: + 43: 4300074 + second: l_middleProxy_01_geo + - first: + 43: 4300076 + second: l_indexProxy_03_geo + - first: + 43: 4300078 + second: l_indexProxy_02_geo + - first: + 43: 4300080 + second: l_indexProxy_01_geo + - first: + 43: 4300082 + second: l_thumbProxy_03_geo + - first: + 43: 4300084 + second: l_thumbProxy_02_geo + - first: + 43: 4300086 + second: l_thumbProxy_01_geo + - first: + 43: 4300088 + second: l_wristProxy_geo + - first: + 43: 4300090 + second: l_erbowProxy_geo + - first: + 43: 4300092 + second: l_shourderProxy_geo + - first: + 43: 4300094 + second: l_clavicleProxy_geo + - first: + 43: 4300096 + second: spineProxy_geo + - first: + 43: 4300098 + second: r_ballProxy_geo + - first: + 43: 4300100 + second: r_ankleProxy_geo + - first: + 43: 4300102 + second: r_kneeProxy_geo + - first: + 43: 4300104 + second: r_hipProxy_geo + - first: + 43: 4300106 + second: pelvisProxy_geo + - first: + 43: 4300108 + second: l_ballProxy_geo + - first: + 43: 4300110 + second: l_ankleProxy_geo + - first: + 43: 4300112 + second: l_kneeProxy_geo + - first: + 43: 4300114 + second: l_hipProxy_geo + - first: + 74: 7400000 + second: HumanoidRunRight + - first: + 74: 7400002 + second: HumanoidRunLeft + - first: + 95: 9500000 + second: //RootNode + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 1 + materialSearch: 2 + materialLocation: 0 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 0 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: + - serializedVersion: 16 + name: HumanoidRunRight + takeName: _30_a_U1_M_P_RunForwardTurnRight_NtrlWide__Fb_Dia3m_No_0_PJ_4 + internalID: 0 + firstFrame: 98.5 + lastFrame: 115.7 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidRunLeft + takeName: _30_a_U1_M_P_RunForwardTurnRight_NtrlWide__Fb_Dia3m_No_0_PJ_4 + internalID: 0 + firstFrame: 98.5 + lastFrame: 115.7 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0.5 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 1 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.01 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 0 + importBlendShapes: 0 + importCameras: 0 + importLights: 0 + fileIdsGeneration: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 4 + normalCalculationMode: 0 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: + - boneName: Hips + humanName: Hips + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftUpLeg + humanName: LeftUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightUpLeg + humanName: RightUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftLeg + humanName: LeftLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightLeg + humanName: RightLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftFoot + humanName: LeftFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightFoot + humanName: RightFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Spine + humanName: Spine + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Chest + humanName: Chest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Neck + humanName: Neck + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Head + humanName: Head + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftShoulder + humanName: LeftShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightShoulder + humanName: RightShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftArm + humanName: LeftUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightArm + humanName: RightUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftForeArm + humanName: LeftLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightForeArm + humanName: RightLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHand + humanName: LeftHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHand + humanName: RightHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftToes + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightToes + humanName: RightToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftEye + humanName: LeftEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightEye + humanName: RightEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Jaw + humanName: Jaw + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb1 + humanName: Left Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb2 + humanName: Left Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb3 + humanName: Left Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex1 + humanName: Left Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex2 + humanName: Left Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex3 + humanName: Left Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle1 + humanName: Left Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle2 + humanName: Left Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle3 + humanName: Left Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing1 + humanName: Left Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing2 + humanName: Left Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing3 + humanName: Left Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky1 + humanName: Left Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky2 + humanName: Left Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky3 + humanName: Left Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb1 + humanName: Right Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb2 + humanName: Right Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb3 + humanName: Right Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex1 + humanName: Right Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex2 + humanName: Right Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex3 + humanName: Right Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle1 + humanName: Right Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle2 + humanName: Right Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle3 + humanName: Right Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing1 + humanName: Right Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing2 + humanName: Right Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing3 + humanName: Right Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky1 + humanName: Right Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky2 + humanName: Right Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky3 + humanName: Right Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + skeleton: + - name: HumanoidRunTurn(Clone) + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Hips + parentName: + position: {x: 0, y: 0.9574965, z: -0.055046745} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftUpLeg + parentName: + position: {x: -0.0754495, y: -0.04566402, z: -1.1546319e-16} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLeg + parentName: + position: {x: -0.020550499, y: -0.40912998, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftFoot + parentName: + position: {x: -0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftToes + parentName: + position: {x: -0.007487, y: -0.0731673, z: 0.14542712} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LToeBase_End2 + parentName: + position: {x: 0.01264, y: -0.013135779, z: 0.03589337} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightUpLeg + parentName: + position: {x: 0.075449534, y: -0.04566399, z: -6.217249e-17} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLeg + parentName: + position: {x: 0.020550467, y: -0.40913, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightFoot + parentName: + position: {x: 0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightToes + parentName: + position: {x: 0.007487, y: -0.0731673, z: 0.1454275} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LToeBase_End3 + parentName: + position: {x: -0.01264, y: -0.013135779, z: 0.035892997} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Spine + parentName: + position: {x: -3.9790393e-15, y: 0.092263184, z: 0.015771331} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Chest + parentName: + position: {x: -1.1368684e-15, y: 0.16254029, z: -0.0016560555} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftShoulder + parentName: + position: {x: -0.038285997, y: 0.2216225, z: -0.017063085} + rotation: {x: -0.035229165, y: -0.09704381, z: 0.13499744, w: 0.98545283} + scale: {x: 1, y: 1, z: 1} + - name: LeftArm + parentName: + position: {x: -0.10050205, y: 0.0000000011250847, z: -1.9039034e-10} + rotation: {x: -0.037541095, y: 0.10264762, z: -0.11081282, w: 0.9878131} + scale: {x: 1, y: 1, z: 1} + - name: LeftForeArm + parentName: + position: {x: -0.2540493, y: -1.0594362e-10, z: 1.0925326e-10} + rotation: {x: 0.1164393, y: 0.02911428, z: -0.021441668, w: 0.99253947} + scale: {x: 1, y: 1, z: 1} + - name: LeftHand + parentName: + position: {x: -0.24638927, y: -1.2216844e-10, z: 1.6358968e-11} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex1 + parentName: + position: {x: -0.0751258, y: -0.0078414045, z: 0.032652643} + rotation: {x: 0.04280469, y: 0.056327514, z: 0.06900783, w: 0.99510443} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex2 + parentName: + position: {x: -0.03979728, y: 0.000049808412, z: 0.0011857506} + rotation: {x: -0.11842032, y: 0.015002873, z: 0.016670816, w: 0.99271023} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex3 + parentName: + position: {x: -0.027968477, y: -0.0000000064156453, z: -0.00000005143444} + rotation: {x: 0.00000012293454, y: 0.075797364, z: 0.08633411, w: 0.99337876} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex13 + parentName: + position: {x: -0.018661967, y: 0.0043738526, z: -0.003840025} + rotation: {x: -0.0047212443, y: -0.101354174, z: -0.046291053, w: 0.99376166} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle1 + parentName: + position: {x: -0.076023825, y: -0.0018851344, z: 0.010141229} + rotation: {x: -0.033341646, y: 0.07042283, z: 0.072310105, w: 0.9943341} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle2 + parentName: + position: {x: -0.044280436, y: 0.000004798871, z: -0.00042540033} + rotation: {x: -0.033190846, y: -0.0051267273, z: 0.011487573, w: 0.9993699} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle3 + parentName: + position: {x: -0.033964828, y: -0.000000012184432, z: 0.0000000037524712} + rotation: {x: 0.00000007729973, y: 0.008563419, z: 0.06015198, w: 0.9981525} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle13 + parentName: + position: {x: -0.019671572, y: 0.0039255726, z: -0.0005588144} + rotation: {x: -0.00070156495, y: -0.0125020025, z: -0.056023665, w: 0.9983509} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky1 + parentName: + position: {x: -0.06565995, y: -0.007825106, z: -0.032251246} + rotation: {x: -0.110300235, y: 0.07944906, z: 0.074272946, w: 0.98792976} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky2 + parentName: + position: {x: -0.030805448, y: -0.000030874577, z: -0.0014480774} + rotation: {x: -0.07216986, y: -0.026309045, z: 0.013467227, w: 0.9969544} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky3 + parentName: + position: {x: -0.023064027, y: -0.0000064025894, z: 0.000000018200554} + rotation: {x: 0.00001640175, y: -0.0589519, z: 0.03817539, w: 0.99753064} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky13 + parentName: + position: {x: -0.016971992, y: 0.0020288266, z: 0.0031403229} + rotation: {x: 0.00058051164, y: 0.09441839, z: -0.006120706, w: 0.9955136} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing1 + parentName: + position: {x: -0.07030211, y: -0.0037453093, z: -0.011411792} + rotation: {x: 0.01579545, y: 0.09177199, z: 0.067911014, w: 0.9933361} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing2 + parentName: + position: {x: -0.043135457, y: -0.000020882291, z: -0.0022351781} + rotation: {x: -0.13446599, y: -0.02609643, z: 0.008732952, w: 0.990536} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing3 + parentName: + position: {x: -0.030835565, y: 1.5783627e-10, z: -0.00000001645601} + rotation: {x: -0.000000010710209, y: -0.017877216, z: 0.042180236, w: 0.99895006} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing13 + parentName: + position: {x: -0.020541638, y: 0.0032542208, z: 0.0013791834} + rotation: {x: 0.0024024886, y: 0.037838276, z: -0.06332044, w: 0.9972728} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb1 + parentName: + position: {x: -0.014231241, y: -0.012377825, z: 0.025531668} + rotation: {x: -0.05384949, y: -0.028006395, z: 0.013439066, w: 0.9980658} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb2 + parentName: + position: {x: -0.016374, y: -0.00529, z: 0.023491409} + rotation: {x: -0.02606351, y: 0.09668947, z: 0.00360631, w: 0.99496675} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb3 + parentName: + position: {x: -0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0.0054550515, y: 0.00044216253, z: 0.0068288534, w: 0.9999618} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb13 + parentName: + position: {x: -0.031868957, y: -0.005299945, z: 0.0258005} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Neck + parentName: + position: {x: -2.2737367e-15, y: 0.2590093, z: -0.032413255} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Head + parentName: + position: {x: 1.4210854e-15, y: 0.08307038, z: 0.0113267815} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: HeadTop_End + parentName: + position: {x: -5.1704583e-18, y: 0.18817878, z: 0.012108689} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Jaw + parentName: + position: {x: 1.7347234e-20, y: 0.0111267585, z: 0.010327543} + rotation: {x: 0.21924005, y: -0, z: -0, w: 0.975671} + scale: {x: 1, y: 1, z: 1} + - name: JawEND + parentName: + position: {x: -1.7347234e-20, y: -0.04828876, z: 0.07185171} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipCorner + parentName: + position: {x: -0.032843262, y: -0.01657876, z: 0.066121764} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipLower + parentName: + position: {x: -0.014250817, y: -0.02168876, z: 0.08224063} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipCorner + parentName: + position: {x: 0.03284, y: -0.01657876, z: 0.066118784} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipLower + parentName: + position: {x: 0.014250817, y: -0.02168876, z: 0.082238786} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueBack + parentName: + position: {x: -1.7347234e-20, y: -0.022869369, z: 0.010095409} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueTip + parentName: + position: {x: -1.7347234e-20, y: -0.023278812, z: 0.03832271} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftCheek + parentName: + position: {x: -0.054244027, y: 0.03370195, z: 0.0594304} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEye + parentName: + position: {x: -0.020848233, y: 0.0825027, z: 0.055427432} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidLower + parentName: + position: {x: -0.035618957, y: 0.06507366, z: 0.07623474} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidUpper + parentName: + position: {x: -0.034406897, y: 0.10060814, z: 0.08020531} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftInnerBrow + parentName: + position: {x: -0.012062691, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftIOuterBrow + parentName: + position: {x: -0.05503987, y: 0.11482529, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipUpper + parentName: + position: {x: -0.014501322, y: -0.005111811, z: 0.09461884} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftNostril + parentName: + position: {x: -0.0179, y: 0.026312828, z: 0.0908674} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightCheek + parentName: + position: {x: 0.054239996, y: 0.033702828, z: 0.0594274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEye + parentName: + position: {x: 0.020849999, y: 0.08250283, z: 0.0554274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidLower + parentName: + position: {x: 0.03562, y: 0.06507283, z: 0.0762374} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidUpper + parentName: + position: {x: 0.03441, y: 0.10061283, z: 0.08020739} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightInnerBrow + parentName: + position: {x: 0.012062687, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightIOuterBrow + parentName: + position: {x: 0.055040002, y: 0.11482283, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipUpper + parentName: + position: {x: 0.014501322, y: -0.0051071714, z: 0.094617404} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightNostril + parentName: + position: {x: 0.0179, y: 0.026308905, z: 0.09087062} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightShoulder + parentName: + position: {x: 0.038286015, y: 0.22162114, z: -0.017063085} + rotation: {x: 0.14182894, y: 0.98631495, z: -0.028009979, w: -0.07926412} + scale: {x: 1, y: 1, z: 1} + - name: RightArm + parentName: + position: {x: -0.100501455, y: -0.0000024966455, z: -0.00000005228366} + rotation: {x: 0.11163781, y: 0.9869493, z: -0.021296263, w: 0.11408141} + scale: {x: 1, y: 1, z: 1} + - name: RightForeArm + parentName: + position: {x: 0.25342825, y: 0.006011353, z: -0.016704524} + rotation: {x: 0.063198514, y: 0.018642433, z: -0.015235032, w: 0.9977105} + scale: {x: 1, y: 1, z: 1} + - name: RightHand + parentName: + position: {x: 0.2453737, y: 0.021641772, z: 0.005550465} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex1 + parentName: + position: {x: 0.0747695, y: -0.0012430536, z: 0.034344498} + rotation: {x: 0.05013213, y: 0.106331095, z: -0.025096107, w: 0.99274904} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex2 + parentName: + position: {x: 0.0370584, y: 0.00072612107, z: 0.014538894} + rotation: {x: -0.12210098, y: 0.026185444, z: 0.03848457, w: 0.99142563} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex3 + parentName: + position: {x: 0.025225038, y: -0.0049664653, z: 0.011012146} + rotation: {x: 0.020532662, y: -0.07771386, z: -0.08208167, w: 0.9933789} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex17 + parentName: + position: {x: 0.019119978, y: 0.00084630825, z: 0.0039816475} + rotation: {x: -0.0047212443, y: -0.101354174, z: -0.046291053, w: 0.99376166} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle1 + parentName: + position: {x: 0.075647645, y: 0.0047914027, z: 0.011853182} + rotation: {x: -0.026878852, y: -0.005304449, z: -0.033221114, w: 0.9990725} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle2 + parentName: + position: {x: 0.043809064, y: 0.00019418815, z: 0.006454936} + rotation: {x: -0.03981893, y: -0.04374132, z: 0.09886014, w: 0.9933418} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle3 + parentName: + position: {x: 0.03307247, y: -0.007547537, z: 0.0016898462} + rotation: {x: 0.0010900309, y: -0.008686217, z: -0.0601307, w: 0.99815214} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle17 + parentName: + position: {x: 0.020054895, y: -0.0005471089, z: 0.00044259045} + rotation: {x: -0.00070156495, y: -0.0125020025, z: -0.056023665, w: 0.9983509} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky1 + parentName: + position: {x: 0.06680334, y: -0.0019941085, z: -0.030756146} + rotation: {x: -0.111875884, y: -0.25872862, z: 0.008804827, w: 0.95940906} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky2 + parentName: + position: {x: 0.028530842, y: -0.001397143, z: -0.011623796} + rotation: {x: 0.033382267, y: 0.0010579854, z: -0.05869181, w: 0.9977173} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky3 + parentName: + position: {x: 0.02142686, y: -0.00055350893, z: -0.008516608} + rotation: {x: -0.012683082, y: 0.059110522, z: -0.035750497, w: 0.99753046} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky17 + parentName: + position: {x: 0.016975116, y: 0.0016113776, z: -0.0033579709} + rotation: {x: 0.00058051164, y: 0.09441839, z: -0.006120706, w: 0.9955136} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing1 + parentName: + position: {x: 0.070598476, y: 0.0024570965, z: -0.009821458} + rotation: {x: 0.018205155, y: -0.13375506, z: -0.008971164, w: 0.99080664} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing2 + parentName: + position: {x: 0.042887185, y: -0.0013753821, z: -0.0049458584} + rotation: {x: 0.022080641, y: -0.02169968, z: 0.07961469, w: 0.9963449} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing3 + parentName: + position: {x: 0.029500604, y: -0.0076929354, z: -0.004622256} + rotation: {x: -0.0018624938, y: 0.018112227, z: -0.042031653, w: 0.9989504} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing17 + parentName: + position: {x: 0.020670934, y: -0.002000433, z: -0.0017780337} + rotation: {x: 0.0024024886, y: 0.037838276, z: -0.06332044, w: 0.9972728} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb1 + parentName: + position: {x: 0.014684916, y: -0.011104942, z: 0.025858095} + rotation: {x: -0.059259865, y: 0.014242238, z: 0.03301531, w: 0.99759483} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb2 + parentName: + position: {x: 0.016374, y: -0.00529, z: 0.02349136} + rotation: {x: -0.026062753, y: -0.09669027, z: -0.0036074722, w: 0.99496675} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb3 + parentName: + position: {x: 0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0.0054546264, y: -0.00044369965, z: -0.0068287756, w: 0.9999618} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb17 + parentName: + position: {x: 0.03186904, y: -0.005299946, z: 0.0258005} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 0.01 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRunTurnSharp.fbx b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRunTurnSharp.fbx new file mode 100644 index 000000000..943fd1bc4 Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRunTurnSharp.fbx differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRunTurnSharp.fbx.meta b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRunTurnSharp.fbx.meta new file mode 100644 index 000000000..38843bb5f --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidRunTurnSharp.fbx.meta @@ -0,0 +1,2402 @@ +fileFormatVersion: 2 +guid: f2bed5dc5afacff44a00de8daae9703b +labels: +- ObiCloth +- ObiRope +- ObiSoftbody +ModelImporter: + serializedVersion: 19301 + internalIDToNameTable: + - first: + 1: 100000 + second: Chest + - first: + 1: 100002 + second: chestProxy_geo + - first: + 1: 100004 + second: //RootNode + - first: + 1: 100006 + second: Head + - first: + 1: 100008 + second: headProxy_geo + - first: + 1: 100010 + second: HeadTop_End + - first: + 1: 100012 + second: Hips + - first: + 1: 100014 + second: Jaw + - first: + 1: 100016 + second: JawEND + - first: + 1: 100018 + second: jawProxy_geo + - first: + 1: 100020 + second: l_ankleProxy_geo + - first: + 1: 100022 + second: l_ballProxy_geo + - first: + 1: 100024 + second: l_clavicleProxy_geo + - first: + 1: 100026 + second: l_erbowProxy_geo + - first: + 1: 100028 + second: l_hipProxy_geo + - first: + 1: 100030 + second: l_indexProxy_01_geo + - first: + 1: 100032 + second: l_indexProxy_02_geo + - first: + 1: 100034 + second: l_indexProxy_03_geo + - first: + 1: 100036 + second: l_kneeProxy_geo + - first: + 1: 100038 + second: l_middleProxy_01_geo + - first: + 1: 100040 + second: l_middleProxy_02_geo + - first: + 1: 100042 + second: l_middleProxy_03_geo + - first: + 1: 100044 + second: l_pinkyProxy_01_geo + - first: + 1: 100046 + second: l_pinkyProxy_02_geo + - first: + 1: 100048 + second: l_pinkyProxy_03_geo + - first: + 1: 100050 + second: l_ringProxy_01_geo + - first: + 1: 100052 + second: l_ringProxy_02_geo + - first: + 1: 100054 + second: l_ringProxy_03_geo + - first: + 1: 100056 + second: l_shourderProxy_geo + - first: + 1: 100058 + second: l_thumbProxy_01_geo + - first: + 1: 100060 + second: l_thumbProxy_02_geo + - first: + 1: 100062 + second: l_thumbProxy_03_geo + - first: + 1: 100064 + second: l_UNI_eye + - first: + 1: 100066 + second: l_wristProxy_geo + - first: + 1: 100068 + second: LeftArm + - first: + 1: 100070 + second: LeftCheek + - first: + 1: 100072 + second: LeftEye + - first: + 1: 100074 + second: LeftEyelidLower + - first: + 1: 100076 + second: LeftEyelidUpper + - first: + 1: 100078 + second: LeftFoot + - first: + 1: 100080 + second: LeftForeArm + - first: + 1: 100082 + second: LeftHand + - first: + 1: 100084 + second: LeftHandIndex1 + - first: + 1: 100086 + second: LeftHandIndex13 + - first: + 1: 100088 + second: LeftHandIndex17 + - first: + 1: 100090 + second: LeftHandIndex2 + - first: + 1: 100092 + second: LeftHandIndex3 + - first: + 1: 100094 + second: LeftHandMiddle1 + - first: + 1: 100096 + second: LeftHandMiddle13 + - first: + 1: 100098 + second: LeftHandMiddle17 + - first: + 1: 100100 + second: LeftHandMiddle2 + - first: + 1: 100102 + second: LeftHandMiddle3 + - first: + 1: 100104 + second: LeftHandPinky1 + - first: + 1: 100106 + second: LeftHandPinky13 + - first: + 1: 100108 + second: LeftHandPinky17 + - first: + 1: 100110 + second: LeftHandPinky2 + - first: + 1: 100112 + second: LeftHandPinky3 + - first: + 1: 100114 + second: LeftHandRing1 + - first: + 1: 100116 + second: LeftHandRing13 + - first: + 1: 100118 + second: LeftHandRing17 + - first: + 1: 100120 + second: LeftHandRing2 + - first: + 1: 100122 + second: LeftHandRing3 + - first: + 1: 100124 + second: LeftHandThumb1 + - first: + 1: 100126 + second: LeftHandThumb13 + - first: + 1: 100128 + second: LeftHandThumb17 + - first: + 1: 100130 + second: LeftHandThumb2 + - first: + 1: 100132 + second: LeftHandThumb3 + - first: + 1: 100134 + second: LeftInnerBrow + - first: + 1: 100136 + second: LeftIOuterBrow + - first: + 1: 100138 + second: LeftLeg + - first: + 1: 100140 + second: LeftLipCorner + - first: + 1: 100142 + second: LeftLipLower + - first: + 1: 100144 + second: LeftLipUpper + - first: + 1: 100146 + second: LeftNostril + - first: + 1: 100148 + second: LeftShoulder + - first: + 1: 100150 + second: LeftToes + - first: + 1: 100152 + second: LeftUpLeg + - first: + 1: 100154 + second: LToeBase_End2 + - first: + 1: 100156 + second: LToeBase_End3 + - first: + 1: 100158 + second: Neck + - first: + 1: 100160 + second: neckProxy_geo + - first: + 1: 100162 + second: pelvisProxy_geo + - first: + 1: 100164 + second: Pivot + - first: + 1: 100166 + second: r_ankleProxy_geo + - first: + 1: 100168 + second: r_ballProxy_geo + - first: + 1: 100170 + second: r_clavicleProxy_geo + - first: + 1: 100172 + second: r_erbowProxy_geo + - first: + 1: 100174 + second: r_hipProxy_geo + - first: + 1: 100176 + second: r_indexProxy_01_geo + - first: + 1: 100178 + second: r_indexProxy_02_geo + - first: + 1: 100180 + second: r_indexProxy_03_geo + - first: + 1: 100182 + second: r_kneeProxy_geo + - first: + 1: 100184 + second: r_middleProxy_01_geo + - first: + 1: 100186 + second: r_middleProxy_02_geo + - first: + 1: 100188 + second: r_middleProxy_03_geo + - first: + 1: 100190 + second: r_pinkyProxy_01_geo + - first: + 1: 100192 + second: r_pinkyProxy_02_geo + - first: + 1: 100194 + second: r_pinkyProxy_03_geo + - first: + 1: 100196 + second: r_ringProxy_01_geo + - first: + 1: 100198 + second: r_ringProxy_02_geo + - first: + 1: 100200 + second: r_ringProxy_03_geo + - first: + 1: 100202 + second: r_shourderProxy_geo + - first: + 1: 100204 + second: r_thumbProxy_01_geo + - first: + 1: 100206 + second: r_thumbProxy_02_geo + - first: + 1: 100208 + second: r_thumbProxy_03_geo + - first: + 1: 100210 + second: r_UNI_eye + - first: + 1: 100212 + second: r_wristProxy_geo + - first: + 1: 100214 + second: Reference + - first: + 1: 100216 + second: RightArm + - first: + 1: 100218 + second: RightCheek + - first: + 1: 100220 + second: RightEye + - first: + 1: 100222 + second: RightEyelidLower + - first: + 1: 100224 + second: RightEyelidUpper + - first: + 1: 100226 + second: RightFoot + - first: + 1: 100228 + second: RightForeArm + - first: + 1: 100230 + second: RightHand + - first: + 1: 100232 + second: RightHandIndex1 + - first: + 1: 100234 + second: RightHandIndex2 + - first: + 1: 100236 + second: RightHandIndex3 + - first: + 1: 100238 + second: RightHandMiddle1 + - first: + 1: 100240 + second: RightHandMiddle2 + - first: + 1: 100242 + second: RightHandMiddle3 + - first: + 1: 100244 + second: RightHandPinky1 + - first: + 1: 100246 + second: RightHandPinky2 + - first: + 1: 100248 + second: RightHandPinky3 + - first: + 1: 100250 + second: RightHandRing1 + - first: + 1: 100252 + second: RightHandRing2 + - first: + 1: 100254 + second: RightHandRing3 + - first: + 1: 100256 + second: RightHandThumb1 + - first: + 1: 100258 + second: RightHandThumb2 + - first: + 1: 100260 + second: RightHandThumb3 + - first: + 1: 100262 + second: RightInnerBrow + - first: + 1: 100264 + second: RightIOuterBrow + - first: + 1: 100266 + second: RightLeg + - first: + 1: 100268 + second: RightLipCorner + - first: + 1: 100270 + second: RightLipLower + - first: + 1: 100272 + second: RightLipUpper + - first: + 1: 100274 + second: RightNostril + - first: + 1: 100276 + second: RightShoulder + - first: + 1: 100278 + second: RightToes + - first: + 1: 100280 + second: RightUpLeg + - first: + 1: 100282 + second: Root + - first: + 1: 100284 + second: Spine + - first: + 1: 100286 + second: spineProxy_geo + - first: + 1: 100288 + second: TongueBack + - first: + 1: 100290 + second: TongueTip + - first: + 1: 100292 + second: UNI_01_Lower_teethProxy + - first: + 1: 100294 + second: UNI_01_TongueBaseProxy + - first: + 1: 100296 + second: UNI_01_TongueTipProxy + - first: + 1: 100298 + second: UNI_01_Upper_teethProxy + - first: + 4: 400000 + second: Chest + - first: + 4: 400002 + second: chestProxy_geo + - first: + 4: 400004 + second: //RootNode + - first: + 4: 400006 + second: Head + - first: + 4: 400008 + second: headProxy_geo + - first: + 4: 400010 + second: HeadTop_End + - first: + 4: 400012 + second: Hips + - first: + 4: 400014 + second: Jaw + - first: + 4: 400016 + second: JawEND + - first: + 4: 400018 + second: jawProxy_geo + - first: + 4: 400020 + second: l_ankleProxy_geo + - first: + 4: 400022 + second: l_ballProxy_geo + - first: + 4: 400024 + second: l_clavicleProxy_geo + - first: + 4: 400026 + second: l_erbowProxy_geo + - first: + 4: 400028 + second: l_hipProxy_geo + - first: + 4: 400030 + second: l_indexProxy_01_geo + - first: + 4: 400032 + second: l_indexProxy_02_geo + - first: + 4: 400034 + second: l_indexProxy_03_geo + - first: + 4: 400036 + second: l_kneeProxy_geo + - first: + 4: 400038 + second: l_middleProxy_01_geo + - first: + 4: 400040 + second: l_middleProxy_02_geo + - first: + 4: 400042 + second: l_middleProxy_03_geo + - first: + 4: 400044 + second: l_pinkyProxy_01_geo + - first: + 4: 400046 + second: l_pinkyProxy_02_geo + - first: + 4: 400048 + second: l_pinkyProxy_03_geo + - first: + 4: 400050 + second: l_ringProxy_01_geo + - first: + 4: 400052 + second: l_ringProxy_02_geo + - first: + 4: 400054 + second: l_ringProxy_03_geo + - first: + 4: 400056 + second: l_shourderProxy_geo + - first: + 4: 400058 + second: l_thumbProxy_01_geo + - first: + 4: 400060 + second: l_thumbProxy_02_geo + - first: + 4: 400062 + second: l_thumbProxy_03_geo + - first: + 4: 400064 + second: l_UNI_eye + - first: + 4: 400066 + second: l_wristProxy_geo + - first: + 4: 400068 + second: LeftArm + - first: + 4: 400070 + second: LeftCheek + - first: + 4: 400072 + second: LeftEye + - first: + 4: 400074 + second: LeftEyelidLower + - first: + 4: 400076 + second: LeftEyelidUpper + - first: + 4: 400078 + second: LeftFoot + - first: + 4: 400080 + second: LeftForeArm + - first: + 4: 400082 + second: LeftHand + - first: + 4: 400084 + second: LeftHandIndex1 + - first: + 4: 400086 + second: LeftHandIndex13 + - first: + 4: 400088 + second: LeftHandIndex17 + - first: + 4: 400090 + second: LeftHandIndex2 + - first: + 4: 400092 + second: LeftHandIndex3 + - first: + 4: 400094 + second: LeftHandMiddle1 + - first: + 4: 400096 + second: LeftHandMiddle13 + - first: + 4: 400098 + second: LeftHandMiddle17 + - first: + 4: 400100 + second: LeftHandMiddle2 + - first: + 4: 400102 + second: LeftHandMiddle3 + - first: + 4: 400104 + second: LeftHandPinky1 + - first: + 4: 400106 + second: LeftHandPinky13 + - first: + 4: 400108 + second: LeftHandPinky17 + - first: + 4: 400110 + second: LeftHandPinky2 + - first: + 4: 400112 + second: LeftHandPinky3 + - first: + 4: 400114 + second: LeftHandRing1 + - first: + 4: 400116 + second: LeftHandRing13 + - first: + 4: 400118 + second: LeftHandRing17 + - first: + 4: 400120 + second: LeftHandRing2 + - first: + 4: 400122 + second: LeftHandRing3 + - first: + 4: 400124 + second: LeftHandThumb1 + - first: + 4: 400126 + second: LeftHandThumb13 + - first: + 4: 400128 + second: LeftHandThumb17 + - first: + 4: 400130 + second: LeftHandThumb2 + - first: + 4: 400132 + second: LeftHandThumb3 + - first: + 4: 400134 + second: LeftInnerBrow + - first: + 4: 400136 + second: LeftIOuterBrow + - first: + 4: 400138 + second: LeftLeg + - first: + 4: 400140 + second: LeftLipCorner + - first: + 4: 400142 + second: LeftLipLower + - first: + 4: 400144 + second: LeftLipUpper + - first: + 4: 400146 + second: LeftNostril + - first: + 4: 400148 + second: LeftShoulder + - first: + 4: 400150 + second: LeftToes + - first: + 4: 400152 + second: LeftUpLeg + - first: + 4: 400154 + second: LToeBase_End2 + - first: + 4: 400156 + second: LToeBase_End3 + - first: + 4: 400158 + second: Neck + - first: + 4: 400160 + second: neckProxy_geo + - first: + 4: 400162 + second: pelvisProxy_geo + - first: + 4: 400164 + second: Pivot + - first: + 4: 400166 + second: r_ankleProxy_geo + - first: + 4: 400168 + second: r_ballProxy_geo + - first: + 4: 400170 + second: r_clavicleProxy_geo + - first: + 4: 400172 + second: r_erbowProxy_geo + - first: + 4: 400174 + second: r_hipProxy_geo + - first: + 4: 400176 + second: r_indexProxy_01_geo + - first: + 4: 400178 + second: r_indexProxy_02_geo + - first: + 4: 400180 + second: r_indexProxy_03_geo + - first: + 4: 400182 + second: r_kneeProxy_geo + - first: + 4: 400184 + second: r_middleProxy_01_geo + - first: + 4: 400186 + second: r_middleProxy_02_geo + - first: + 4: 400188 + second: r_middleProxy_03_geo + - first: + 4: 400190 + second: r_pinkyProxy_01_geo + - first: + 4: 400192 + second: r_pinkyProxy_02_geo + - first: + 4: 400194 + second: r_pinkyProxy_03_geo + - first: + 4: 400196 + second: r_ringProxy_01_geo + - first: + 4: 400198 + second: r_ringProxy_02_geo + - first: + 4: 400200 + second: r_ringProxy_03_geo + - first: + 4: 400202 + second: r_shourderProxy_geo + - first: + 4: 400204 + second: r_thumbProxy_01_geo + - first: + 4: 400206 + second: r_thumbProxy_02_geo + - first: + 4: 400208 + second: r_thumbProxy_03_geo + - first: + 4: 400210 + second: r_UNI_eye + - first: + 4: 400212 + second: r_wristProxy_geo + - first: + 4: 400214 + second: Reference + - first: + 4: 400216 + second: RightArm + - first: + 4: 400218 + second: RightCheek + - first: + 4: 400220 + second: RightEye + - first: + 4: 400222 + second: RightEyelidLower + - first: + 4: 400224 + second: RightEyelidUpper + - first: + 4: 400226 + second: RightFoot + - first: + 4: 400228 + second: RightForeArm + - first: + 4: 400230 + second: RightHand + - first: + 4: 400232 + second: RightHandIndex1 + - first: + 4: 400234 + second: RightHandIndex2 + - first: + 4: 400236 + second: RightHandIndex3 + - first: + 4: 400238 + second: RightHandMiddle1 + - first: + 4: 400240 + second: RightHandMiddle2 + - first: + 4: 400242 + second: RightHandMiddle3 + - first: + 4: 400244 + second: RightHandPinky1 + - first: + 4: 400246 + second: RightHandPinky2 + - first: + 4: 400248 + second: RightHandPinky3 + - first: + 4: 400250 + second: RightHandRing1 + - first: + 4: 400252 + second: RightHandRing2 + - first: + 4: 400254 + second: RightHandRing3 + - first: + 4: 400256 + second: RightHandThumb1 + - first: + 4: 400258 + second: RightHandThumb2 + - first: + 4: 400260 + second: RightHandThumb3 + - first: + 4: 400262 + second: RightInnerBrow + - first: + 4: 400264 + second: RightIOuterBrow + - first: + 4: 400266 + second: RightLeg + - first: + 4: 400268 + second: RightLipCorner + - first: + 4: 400270 + second: RightLipLower + - first: + 4: 400272 + second: RightLipUpper + - first: + 4: 400274 + second: RightNostril + - first: + 4: 400276 + second: RightShoulder + - first: + 4: 400278 + second: RightToes + - first: + 4: 400280 + second: RightUpLeg + - first: + 4: 400282 + second: Root + - first: + 4: 400284 + second: Spine + - first: + 4: 400286 + second: spineProxy_geo + - first: + 4: 400288 + second: TongueBack + - first: + 4: 400290 + second: TongueTip + - first: + 4: 400292 + second: UNI_01_Lower_teethProxy + - first: + 4: 400294 + second: UNI_01_TongueBaseProxy + - first: + 4: 400296 + second: UNI_01_TongueTipProxy + - first: + 4: 400298 + second: UNI_01_Upper_teethProxy + - first: + 23: 2300000 + second: chestProxy_geo + - first: + 23: 2300002 + second: headProxy_geo + - first: + 23: 2300004 + second: jawProxy_geo + - first: + 23: 2300006 + second: l_ankleProxy_geo + - first: + 23: 2300008 + second: l_ballProxy_geo + - first: + 23: 2300010 + second: l_clavicleProxy_geo + - first: + 23: 2300012 + second: l_erbowProxy_geo + - first: + 23: 2300014 + second: l_hipProxy_geo + - first: + 23: 2300016 + second: l_indexProxy_01_geo + - first: + 23: 2300018 + second: l_indexProxy_02_geo + - first: + 23: 2300020 + second: l_indexProxy_03_geo + - first: + 23: 2300022 + second: l_kneeProxy_geo + - first: + 23: 2300024 + second: l_middleProxy_01_geo + - first: + 23: 2300026 + second: l_middleProxy_02_geo + - first: + 23: 2300028 + second: l_middleProxy_03_geo + - first: + 23: 2300030 + second: l_pinkyProxy_01_geo + - first: + 23: 2300032 + second: l_pinkyProxy_02_geo + - first: + 23: 2300034 + second: l_pinkyProxy_03_geo + - first: + 23: 2300036 + second: l_ringProxy_01_geo + - first: + 23: 2300038 + second: l_ringProxy_02_geo + - first: + 23: 2300040 + second: l_ringProxy_03_geo + - first: + 23: 2300042 + second: l_shourderProxy_geo + - first: + 23: 2300044 + second: l_thumbProxy_01_geo + - first: + 23: 2300046 + second: l_thumbProxy_02_geo + - first: + 23: 2300048 + second: l_thumbProxy_03_geo + - first: + 23: 2300050 + second: l_UNI_eye + - first: + 23: 2300052 + second: l_wristProxy_geo + - first: + 23: 2300054 + second: neckProxy_geo + - first: + 23: 2300056 + second: pelvisProxy_geo + - first: + 23: 2300058 + second: r_ankleProxy_geo + - first: + 23: 2300060 + second: r_ballProxy_geo + - first: + 23: 2300062 + second: r_clavicleProxy_geo + - first: + 23: 2300064 + second: r_erbowProxy_geo + - first: + 23: 2300066 + second: r_hipProxy_geo + - first: + 23: 2300068 + second: r_indexProxy_01_geo + - first: + 23: 2300070 + second: r_indexProxy_02_geo + - first: + 23: 2300072 + second: r_indexProxy_03_geo + - first: + 23: 2300074 + second: r_kneeProxy_geo + - first: + 23: 2300076 + second: r_middleProxy_01_geo + - first: + 23: 2300078 + second: r_middleProxy_02_geo + - first: + 23: 2300080 + second: r_middleProxy_03_geo + - first: + 23: 2300082 + second: r_pinkyProxy_01_geo + - first: + 23: 2300084 + second: r_pinkyProxy_02_geo + - first: + 23: 2300086 + second: r_pinkyProxy_03_geo + - first: + 23: 2300088 + second: r_ringProxy_01_geo + - first: + 23: 2300090 + second: r_ringProxy_02_geo + - first: + 23: 2300092 + second: r_ringProxy_03_geo + - first: + 23: 2300094 + second: r_shourderProxy_geo + - first: + 23: 2300096 + second: r_thumbProxy_01_geo + - first: + 23: 2300098 + second: r_thumbProxy_02_geo + - first: + 23: 2300100 + second: r_thumbProxy_03_geo + - first: + 23: 2300102 + second: r_UNI_eye + - first: + 23: 2300104 + second: r_wristProxy_geo + - first: + 23: 2300106 + second: spineProxy_geo + - first: + 23: 2300108 + second: UNI_01_Lower_teethProxy + - first: + 23: 2300110 + second: UNI_01_TongueBaseProxy + - first: + 23: 2300112 + second: UNI_01_TongueTipProxy + - first: + 23: 2300114 + second: UNI_01_Upper_teethProxy + - first: + 33: 3300000 + second: chestProxy_geo + - first: + 33: 3300002 + second: headProxy_geo + - first: + 33: 3300004 + second: jawProxy_geo + - first: + 33: 3300006 + second: l_ankleProxy_geo + - first: + 33: 3300008 + second: l_ballProxy_geo + - first: + 33: 3300010 + second: l_clavicleProxy_geo + - first: + 33: 3300012 + second: l_erbowProxy_geo + - first: + 33: 3300014 + second: l_hipProxy_geo + - first: + 33: 3300016 + second: l_indexProxy_01_geo + - first: + 33: 3300018 + second: l_indexProxy_02_geo + - first: + 33: 3300020 + second: l_indexProxy_03_geo + - first: + 33: 3300022 + second: l_kneeProxy_geo + - first: + 33: 3300024 + second: l_middleProxy_01_geo + - first: + 33: 3300026 + second: l_middleProxy_02_geo + - first: + 33: 3300028 + second: l_middleProxy_03_geo + - first: + 33: 3300030 + second: l_pinkyProxy_01_geo + - first: + 33: 3300032 + second: l_pinkyProxy_02_geo + - first: + 33: 3300034 + second: l_pinkyProxy_03_geo + - first: + 33: 3300036 + second: l_ringProxy_01_geo + - first: + 33: 3300038 + second: l_ringProxy_02_geo + - first: + 33: 3300040 + second: l_ringProxy_03_geo + - first: + 33: 3300042 + second: l_shourderProxy_geo + - first: + 33: 3300044 + second: l_thumbProxy_01_geo + - first: + 33: 3300046 + second: l_thumbProxy_02_geo + - first: + 33: 3300048 + second: l_thumbProxy_03_geo + - first: + 33: 3300050 + second: l_UNI_eye + - first: + 33: 3300052 + second: l_wristProxy_geo + - first: + 33: 3300054 + second: neckProxy_geo + - first: + 33: 3300056 + second: pelvisProxy_geo + - first: + 33: 3300058 + second: r_ankleProxy_geo + - first: + 33: 3300060 + second: r_ballProxy_geo + - first: + 33: 3300062 + second: r_clavicleProxy_geo + - first: + 33: 3300064 + second: r_erbowProxy_geo + - first: + 33: 3300066 + second: r_hipProxy_geo + - first: + 33: 3300068 + second: r_indexProxy_01_geo + - first: + 33: 3300070 + second: r_indexProxy_02_geo + - first: + 33: 3300072 + second: r_indexProxy_03_geo + - first: + 33: 3300074 + second: r_kneeProxy_geo + - first: + 33: 3300076 + second: r_middleProxy_01_geo + - first: + 33: 3300078 + second: r_middleProxy_02_geo + - first: + 33: 3300080 + second: r_middleProxy_03_geo + - first: + 33: 3300082 + second: r_pinkyProxy_01_geo + - first: + 33: 3300084 + second: r_pinkyProxy_02_geo + - first: + 33: 3300086 + second: r_pinkyProxy_03_geo + - first: + 33: 3300088 + second: r_ringProxy_01_geo + - first: + 33: 3300090 + second: r_ringProxy_02_geo + - first: + 33: 3300092 + second: r_ringProxy_03_geo + - first: + 33: 3300094 + second: r_shourderProxy_geo + - first: + 33: 3300096 + second: r_thumbProxy_01_geo + - first: + 33: 3300098 + second: r_thumbProxy_02_geo + - first: + 33: 3300100 + second: r_thumbProxy_03_geo + - first: + 33: 3300102 + second: r_UNI_eye + - first: + 33: 3300104 + second: r_wristProxy_geo + - first: + 33: 3300106 + second: spineProxy_geo + - first: + 33: 3300108 + second: UNI_01_Lower_teethProxy + - first: + 33: 3300110 + second: UNI_01_TongueBaseProxy + - first: + 33: 3300112 + second: UNI_01_TongueTipProxy + - first: + 33: 3300114 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300000 + second: l_UNI_eye + - first: + 43: 4300002 + second: r_UNI_eye + - first: + 43: 4300004 + second: UNI_01_TongueBaseProxy + - first: + 43: 4300006 + second: UNI_01_TongueTipProxy + - first: + 43: 4300008 + second: UNI_01_Lower_teethProxy + - first: + 43: 4300010 + second: jawProxy_geo + - first: + 43: 4300012 + second: headProxy_geo + - first: + 43: 4300014 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300016 + second: neckProxy_geo + - first: + 43: 4300018 + second: r_pinkyProxy_03_geo + - first: + 43: 4300020 + second: r_pinkyProxy_02_geo + - first: + 43: 4300022 + second: r_pinkyProxy_01_geo + - first: + 43: 4300024 + second: r_ringProxy_03_geo + - first: + 43: 4300026 + second: r_ringProxy_02_geo + - first: + 43: 4300028 + second: r_ringProxy_01_geo + - first: + 43: 4300030 + second: r_middleProxy_03_geo + - first: + 43: 4300032 + second: r_middleProxy_02_geo + - first: + 43: 4300034 + second: r_middleProxy_01_geo + - first: + 43: 4300036 + second: r_indexProxy_03_geo + - first: + 43: 4300038 + second: r_indexProxy_02_geo + - first: + 43: 4300040 + second: r_indexProxy_01_geo + - first: + 43: 4300042 + second: r_thumbProxy_03_geo + - first: + 43: 4300044 + second: r_thumbProxy_02_geo + - first: + 43: 4300046 + second: r_thumbProxy_01_geo + - first: + 43: 4300048 + second: r_wristProxy_geo + - first: + 43: 4300050 + second: r_erbowProxy_geo + - first: + 43: 4300052 + second: r_shourderProxy_geo + - first: + 43: 4300054 + second: r_clavicleProxy_geo + - first: + 43: 4300056 + second: chestProxy_geo + - first: + 43: 4300058 + second: l_pinkyProxy_03_geo + - first: + 43: 4300060 + second: l_pinkyProxy_02_geo + - first: + 43: 4300062 + second: l_pinkyProxy_01_geo + - first: + 43: 4300064 + second: l_ringProxy_03_geo + - first: + 43: 4300066 + second: l_ringProxy_02_geo + - first: + 43: 4300068 + second: l_ringProxy_01_geo + - first: + 43: 4300070 + second: l_middleProxy_03_geo + - first: + 43: 4300072 + second: l_middleProxy_02_geo + - first: + 43: 4300074 + second: l_middleProxy_01_geo + - first: + 43: 4300076 + second: l_indexProxy_03_geo + - first: + 43: 4300078 + second: l_indexProxy_02_geo + - first: + 43: 4300080 + second: l_indexProxy_01_geo + - first: + 43: 4300082 + second: l_thumbProxy_03_geo + - first: + 43: 4300084 + second: l_thumbProxy_02_geo + - first: + 43: 4300086 + second: l_thumbProxy_01_geo + - first: + 43: 4300088 + second: l_wristProxy_geo + - first: + 43: 4300090 + second: l_erbowProxy_geo + - first: + 43: 4300092 + second: l_shourderProxy_geo + - first: + 43: 4300094 + second: l_clavicleProxy_geo + - first: + 43: 4300096 + second: spineProxy_geo + - first: + 43: 4300098 + second: r_ballProxy_geo + - first: + 43: 4300100 + second: r_ankleProxy_geo + - first: + 43: 4300102 + second: r_kneeProxy_geo + - first: + 43: 4300104 + second: r_hipProxy_geo + - first: + 43: 4300106 + second: pelvisProxy_geo + - first: + 43: 4300108 + second: l_ballProxy_geo + - first: + 43: 4300110 + second: l_ankleProxy_geo + - first: + 43: 4300112 + second: l_kneeProxy_geo + - first: + 43: 4300114 + second: l_hipProxy_geo + - first: + 74: 7400000 + second: HumanoidRunRightSharp + - first: + 74: 7400002 + second: HumanoidRunLeftSharp + - first: + 95: 9500000 + second: //RootNode + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 1 + materialSearch: 2 + materialLocation: 0 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 0 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: + - serializedVersion: 16 + name: HumanoidRunRightSharp + takeName: _31_a_U1_M_P_RunForwardTurnRight_NtrlMedium__Fb_Dia2m_No_0_PJ_4 + internalID: 0 + firstFrame: 76.4 + lastFrame: 91.6 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidRunLeftSharp + takeName: _31_a_U1_M_P_RunForwardTurnRight_NtrlMedium__Fb_Dia2m_No_0_PJ_4 + internalID: 0 + firstFrame: 76.4 + lastFrame: 91.6 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0.5 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 1 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.01 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 0 + importBlendShapes: 0 + importCameras: 0 + importLights: 0 + fileIdsGeneration: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 4 + normalCalculationMode: 0 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: + - boneName: Hips + humanName: Hips + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftUpLeg + humanName: LeftUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightUpLeg + humanName: RightUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftLeg + humanName: LeftLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightLeg + humanName: RightLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftFoot + humanName: LeftFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightFoot + humanName: RightFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Spine + humanName: Spine + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Chest + humanName: Chest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Neck + humanName: Neck + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Head + humanName: Head + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftShoulder + humanName: LeftShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightShoulder + humanName: RightShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftArm + humanName: LeftUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightArm + humanName: RightUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftForeArm + humanName: LeftLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightForeArm + humanName: RightLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHand + humanName: LeftHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHand + humanName: RightHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftToes + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightToes + humanName: RightToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftEye + humanName: LeftEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightEye + humanName: RightEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Jaw + humanName: Jaw + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb1 + humanName: Left Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb2 + humanName: Left Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb3 + humanName: Left Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex1 + humanName: Left Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex2 + humanName: Left Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex3 + humanName: Left Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle1 + humanName: Left Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle2 + humanName: Left Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle3 + humanName: Left Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing1 + humanName: Left Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing2 + humanName: Left Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing3 + humanName: Left Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky1 + humanName: Left Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky2 + humanName: Left Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky3 + humanName: Left Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb1 + humanName: Right Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb2 + humanName: Right Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb3 + humanName: Right Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex1 + humanName: Right Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex2 + humanName: Right Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex3 + humanName: Right Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle1 + humanName: Right Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle2 + humanName: Right Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle3 + humanName: Right Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing1 + humanName: Right Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing2 + humanName: Right Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing3 + humanName: Right Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky1 + humanName: Right Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky2 + humanName: Right Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky3 + humanName: Right Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + skeleton: + - name: HumanoidRunTurnSharp(Clone) + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Hips + parentName: + position: {x: -0.00000011920929, y: 0.9782808, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftUpLeg + parentName: + position: {x: -0.0754495, y: -0.04566402, z: 7.105427e-17} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLeg + parentName: + position: {x: -0.020550499, y: -0.40912998, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftFoot + parentName: + position: {x: -0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftToes + parentName: + position: {x: -0.007487, y: -0.0731673, z: 0.14542712} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightUpLeg + parentName: + position: {x: 0.075449534, y: -0.04566399, z: -1.0658141e-16} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLeg + parentName: + position: {x: 0.020550467, y: -0.40913, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightFoot + parentName: + position: {x: 0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightToes + parentName: + position: {x: 0.007487, y: -0.0731673, z: 0.1454275} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Spine + parentName: + position: {x: -3.410605e-15, y: 0.092263184, z: 0.015771331} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Chest + parentName: + position: {x: 2.842171e-16, y: 0.16254029, z: -0.0016560555} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftShoulder + parentName: + position: {x: -0.038285997, y: 0.2216225, z: -0.017063085} + rotation: {x: -0.021474043, y: -0.06493063, z: 0.14930119, w: 0.9864239} + scale: {x: 1, y: 1, z: 1} + - name: LeftArm + parentName: + position: {x: -0.10050205, y: 0.000000001125083, z: -1.9039106e-10} + rotation: {x: 0.058244172, y: 0.05419668, z: -0.14314686, w: 0.9864986} + scale: {x: 1, y: 1, z: 1} + - name: LeftForeArm + parentName: + position: {x: -0.2540493, y: -1.05876266e-10, z: 1.092728e-10} + rotation: {x: 0.3707351, y: 0.030799724, z: -0.0050508287, w: 0.92821413} + scale: {x: 1, y: 1, z: 1} + - name: LeftHand + parentName: + position: {x: -0.24638927, y: -1.1868835e-10, z: 1.8880257e-11} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex1 + parentName: + position: {x: -0.0751258, y: -0.0078414045, z: 0.032652643} + rotation: {x: 0.028524831, y: 0.062274814, z: 0.08119071, w: 0.99434215} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex2 + parentName: + position: {x: -0.03979728, y: 0.000049808412, z: 0.0011857506} + rotation: {x: -0.112918295, y: 0.014729916, z: 0.020079946, w: 0.99329215} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex3 + parentName: + position: {x: -0.027968477, y: -0.000000006414153, z: -0.00000005143231} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle1 + parentName: + position: {x: -0.076023825, y: -0.0018851344, z: 0.010141229} + rotation: {x: -0.02978136, y: 0.06981173, z: 0.079031006, w: 0.9939786} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle2 + parentName: + position: {x: -0.044280436, y: 0.0000047988515, z: -0.00042540033} + rotation: {x: -0.03165837, y: -0.0052109635, z: 0.013137785, w: 0.9993989} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle3 + parentName: + position: {x: -0.033964828, y: -0.000000012183272, z: 0.0000000037516936} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky1 + parentName: + position: {x: -0.06565995, y: -0.007825106, z: -0.032251246} + rotation: {x: -0.09422668, y: 0.07610369, z: 0.07818782, w: 0.9895536} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky2 + parentName: + position: {x: -0.030805448, y: -0.00003087458, z: -0.0014480774} + rotation: {x: -0.072170354, y: -0.026308578, z: 0.013469003, w: 0.9969543} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky3 + parentName: + position: {x: -0.023064027, y: -0.0000064025894, z: 0.000000018199485} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing1 + parentName: + position: {x: -0.07030211, y: -0.0037453093, z: -0.011411792} + rotation: {x: 0.015338194, y: 0.09181243, z: 0.07322767, w: 0.99296176} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing2 + parentName: + position: {x: -0.043135457, y: -0.000020882293, z: -0.0022351781} + rotation: {x: -0.13446547, y: -0.02609472, z: 0.008736443, w: 0.9905361} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing3 + parentName: + position: {x: -0.030835565, y: 1.5912661e-10, z: -0.000000016456518} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb1 + parentName: + position: {x: -0.014231241, y: -0.012377825, z: 0.025531668} + rotation: {x: -0.26494613, y: -0.07836991, z: -0.14428584, w: 0.9501807} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb2 + parentName: + position: {x: -0.016374, y: -0.00529, z: 0.023491409} + rotation: {x: -0.026062079, y: 0.09668672, z: 0.003607094, w: 0.9949671} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb3 + parentName: + position: {x: -0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Neck + parentName: + position: {x: -0, y: 0.2590093, z: -0.032413255} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Head + parentName: + position: {x: 5.684342e-16, y: 0.08307038, z: 0.0113267815} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Jaw + parentName: + position: {x: 1.7347234e-20, y: 0.0111267585, z: 0.010327543} + rotation: {x: 0.21924005, y: -0, z: -0, w: 0.975671} + scale: {x: 1, y: 1, z: 1} + - name: JawEND + parentName: + position: {x: -1.7347234e-20, y: -0.04828876, z: 0.07185171} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipCorner + parentName: + position: {x: -0.032843262, y: -0.01657876, z: 0.066121764} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipLower + parentName: + position: {x: -0.014250817, y: -0.02168876, z: 0.08224063} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipCorner + parentName: + position: {x: 0.03284, y: -0.01657876, z: 0.066118784} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipLower + parentName: + position: {x: 0.014250817, y: -0.02168876, z: 0.082238786} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueBack + parentName: + position: {x: -1.7347234e-20, y: -0.022869369, z: 0.010095409} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueTip + parentName: + position: {x: -1.7347234e-20, y: -0.023278812, z: 0.03832271} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftCheek + parentName: + position: {x: -0.054244027, y: 0.03370195, z: 0.0594304} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEye + parentName: + position: {x: -0.020848233, y: 0.0825027, z: 0.055427432} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidLower + parentName: + position: {x: -0.035618957, y: 0.06507366, z: 0.07623474} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidUpper + parentName: + position: {x: -0.034406897, y: 0.10060814, z: 0.08020531} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftInnerBrow + parentName: + position: {x: -0.012062691, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftIOuterBrow + parentName: + position: {x: -0.05503987, y: 0.11482529, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipUpper + parentName: + position: {x: -0.014501322, y: -0.005111811, z: 0.09461884} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftNostril + parentName: + position: {x: -0.0179, y: 0.026312828, z: 0.0908674} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightCheek + parentName: + position: {x: 0.054239996, y: 0.033702828, z: 0.0594274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEye + parentName: + position: {x: 0.020849999, y: 0.08250283, z: 0.0554274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidLower + parentName: + position: {x: 0.03562, y: 0.06507283, z: 0.0762374} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidUpper + parentName: + position: {x: 0.03441, y: 0.10061283, z: 0.08020739} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightInnerBrow + parentName: + position: {x: 0.012062687, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightIOuterBrow + parentName: + position: {x: 0.055040002, y: 0.11482283, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipUpper + parentName: + position: {x: 0.014501322, y: -0.0051071714, z: 0.094617404} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightNostril + parentName: + position: {x: 0.0179, y: 0.026308905, z: 0.09087062} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightShoulder + parentName: + position: {x: 0.038286015, y: 0.22162114, z: -0.017063085} + rotation: {x: 0.16183096, y: 0.98647934, z: -0.006535823, w: -0.025031496} + scale: {x: 1, y: 1, z: 1} + - name: RightArm + parentName: + position: {x: -0.100501455, y: -0.0000024966455, z: -0.00000005228366} + rotation: {x: 0.14020552, y: 0.9871734, z: -0.05051891, w: 0.0572624} + scale: {x: 1, y: 1, z: 1} + - name: RightForeArm + parentName: + position: {x: 0.25342825, y: 0.006011353, z: -0.016704524} + rotation: {x: 0.22509512, y: 0.025767986, z: -0.028735533, w: 0.9735721} + scale: {x: 1, y: 1, z: 1} + - name: RightHand + parentName: + position: {x: 0.2453737, y: 0.021641772, z: 0.005550465} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex1 + parentName: + position: {x: 0.0747695, y: -0.0012430538, z: 0.034344498} + rotation: {x: 0.038643204, y: 0.0996978, z: -0.03964579, w: 0.9934764} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex2 + parentName: + position: {x: 0.0370584, y: 0.00072612107, z: 0.014538894} + rotation: {x: -0.11574298, y: 0.025980618, z: 0.037404086, w: 0.9922346} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex3 + parentName: + position: {x: 0.025225038, y: -0.0049664653, z: 0.011012146} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle1 + parentName: + position: {x: 0.075647645, y: 0.0047914027, z: 0.011853182} + rotation: {x: -0.022765018, y: -0.0045331693, z: -0.03960778, w: 0.99894565} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle2 + parentName: + position: {x: 0.043809064, y: 0.00019418815, z: 0.006454936} + rotation: {x: -0.038134214, y: -0.04383779, z: 0.09739021, w: 0.9935488} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle3 + parentName: + position: {x: 0.03307247, y: -0.007547537, z: 0.0016898462} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky1 + parentName: + position: {x: 0.06680334, y: -0.0019941085, z: -0.030756146} + rotation: {x: -0.09668191, y: -0.25542954, z: 0.0025470548, w: 0.96197814} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky2 + parentName: + position: {x: 0.028530842, y: -0.001397143, z: -0.011623796} + rotation: {x: -0.00017062847, y: -0.009661348, z: -0.0053624013, w: 0.99993896} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky3 + parentName: + position: {x: 0.02142686, y: -0.00055350893, z: -0.008516608} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing1 + parentName: + position: {x: 0.070598476, y: 0.0024570965, z: -0.009821458} + rotation: {x: 0.017640922, y: -0.13380052, z: -0.014286719, w: 0.9907483} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing2 + parentName: + position: {x: 0.042887185, y: -0.0013753821, z: -0.0049458584} + rotation: {x: 0.00048448512, y: -0.021289764, z: 0.06986148, w: 0.9973294} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing3 + parentName: + position: {x: 0.029500604, y: -0.0076929354, z: -0.004622256} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb1 + parentName: + position: {x: 0.014684916, y: -0.011104942, z: 0.025858097} + rotation: {x: -0.1890519, y: 0.010896767, z: 0.12501797, w: 0.9739154} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb2 + parentName: + position: {x: 0.016374, y: -0.00529, z: 0.02349136} + rotation: {x: -0.02606281, y: -0.09669011, z: -0.0036071225, w: 0.99496675} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb3 + parentName: + position: {x: 0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 0.01 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidStandTurn.fbx b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidStandTurn.fbx new file mode 100644 index 000000000..ec67bcdd7 Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidStandTurn.fbx differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidStandTurn.fbx.meta b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidStandTurn.fbx.meta new file mode 100644 index 000000000..06779db0c --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidStandTurn.fbx.meta @@ -0,0 +1,2922 @@ +fileFormatVersion: 2 +guid: 6fb3851da6a6f5948ab6892bee8ba920 +labels: +- ObiCloth +- ObiRope +- ObiSoftbody +ModelImporter: + serializedVersion: 19301 + internalIDToNameTable: + - first: + 1: 100000 + second: //RootNode + - first: + 1: 100002 + second: Character_Ctrl:Reference + - first: + 1: 100004 + second: Chest + - first: + 1: 100006 + second: ChestEndEffector + - first: + 1: 100008 + second: ChestOriginEffector + - first: + 1: 100010 + second: chestProxy_geo + - first: + 1: 100012 + second: Head + - first: + 1: 100014 + second: Head 1 + - first: + 1: 100016 + second: HeadEffector + - first: + 1: 100018 + second: headProxy_geo + - first: + 1: 100020 + second: HeadTop_End + - first: + 1: 100022 + second: Hips + - first: + 1: 100024 + second: Hips 1 + - first: + 1: 100026 + second: HipsEffector + - first: + 1: 100028 + second: Jaw + - first: + 1: 100030 + second: JawEND + - first: + 1: 100032 + second: jawProxy_geo + - first: + 1: 100034 + second: l_ankleProxy_geo + - first: + 1: 100036 + second: l_ballProxy_geo + - first: + 1: 100038 + second: l_clavicleProxy_geo + - first: + 1: 100040 + second: l_erbowProxy_geo + - first: + 1: 100042 + second: l_hipProxy_geo + - first: + 1: 100044 + second: l_indexProxy_01_geo + - first: + 1: 100046 + second: l_indexProxy_02_geo + - first: + 1: 100048 + second: l_indexProxy_03_geo + - first: + 1: 100050 + second: l_kneeProxy_geo + - first: + 1: 100052 + second: l_middleProxy_01_geo + - first: + 1: 100054 + second: l_middleProxy_02_geo + - first: + 1: 100056 + second: l_middleProxy_03_geo + - first: + 1: 100058 + second: l_pinkyProxy_01_geo + - first: + 1: 100060 + second: l_pinkyProxy_02_geo + - first: + 1: 100062 + second: l_pinkyProxy_03_geo + - first: + 1: 100064 + second: l_ringProxy_01_geo + - first: + 1: 100066 + second: l_ringProxy_02_geo + - first: + 1: 100068 + second: l_ringProxy_03_geo + - first: + 1: 100070 + second: l_shourderProxy_geo + - first: + 1: 100072 + second: l_thumbProxy_01_geo + - first: + 1: 100074 + second: l_thumbProxy_02_geo + - first: + 1: 100076 + second: l_thumbProxy_03_geo + - first: + 1: 100078 + second: l_UNI_eye + - first: + 1: 100080 + second: l_wristProxy_geo + - first: + 1: 100082 + second: LeftAnkleEffector + - first: + 1: 100084 + second: LeftArm + - first: + 1: 100086 + second: LeftArm 1 + - first: + 1: 100088 + second: LeftCheek + - first: + 1: 100090 + second: LeftElbowEffector + - first: + 1: 100092 + second: LeftEye + - first: + 1: 100094 + second: LeftEyelidLower + - first: + 1: 100096 + second: LeftEyelidUpper + - first: + 1: 100098 + second: LeftFoot + - first: + 1: 100100 + second: LeftFoot 1 + - first: + 1: 100102 + second: LeftForeArm + - first: + 1: 100104 + second: LeftForeArm 1 + - first: + 1: 100106 + second: LeftHand + - first: + 1: 100108 + second: LeftHand 1 + - first: + 1: 100110 + second: LeftHandIndex1 + - first: + 1: 100112 + second: LeftHandIndex13 + - first: + 1: 100114 + second: LeftHandIndex17 + - first: + 1: 100116 + second: LeftHandIndex2 + - first: + 1: 100118 + second: LeftHandIndex3 + - first: + 1: 100120 + second: LeftHandIndex4 + - first: + 1: 100122 + second: LeftHandIndex5 + - first: + 1: 100124 + second: LeftHandIndex6 + - first: + 1: 100126 + second: LeftHandIndexEffector + - first: + 1: 100128 + second: LeftHandMiddle1 + - first: + 1: 100130 + second: LeftHandMiddle13 + - first: + 1: 100132 + second: LeftHandMiddle17 + - first: + 1: 100134 + second: LeftHandMiddle2 + - first: + 1: 100136 + second: LeftHandMiddle3 + - first: + 1: 100138 + second: LeftHandMiddle4 + - first: + 1: 100140 + second: LeftHandMiddle5 + - first: + 1: 100142 + second: LeftHandMiddle6 + - first: + 1: 100144 + second: LeftHandMiddleEffector + - first: + 1: 100146 + second: LeftHandPinky1 + - first: + 1: 100148 + second: LeftHandPinky13 + - first: + 1: 100150 + second: LeftHandPinky17 + - first: + 1: 100152 + second: LeftHandPinky2 + - first: + 1: 100154 + second: LeftHandPinky3 + - first: + 1: 100156 + second: LeftHandPinky4 + - first: + 1: 100158 + second: LeftHandPinky5 + - first: + 1: 100160 + second: LeftHandPinky6 + - first: + 1: 100162 + second: LeftHandPinkyEffector + - first: + 1: 100164 + second: LeftHandRing1 + - first: + 1: 100166 + second: LeftHandRing13 + - first: + 1: 100168 + second: LeftHandRing17 + - first: + 1: 100170 + second: LeftHandRing2 + - first: + 1: 100172 + second: LeftHandRing3 + - first: + 1: 100174 + second: LeftHandRing4 + - first: + 1: 100176 + second: LeftHandRing5 + - first: + 1: 100178 + second: LeftHandRing6 + - first: + 1: 100180 + second: LeftHandRingEffector + - first: + 1: 100182 + second: LeftHandThumb1 + - first: + 1: 100184 + second: LeftHandThumb13 + - first: + 1: 100186 + second: LeftHandThumb17 + - first: + 1: 100188 + second: LeftHandThumb2 + - first: + 1: 100190 + second: LeftHandThumb3 + - first: + 1: 100192 + second: LeftHandThumb4 + - first: + 1: 100194 + second: LeftHandThumb5 + - first: + 1: 100196 + second: LeftHandThumb6 + - first: + 1: 100198 + second: LeftHandThumbEffector + - first: + 1: 100200 + second: LeftHipEffector + - first: + 1: 100202 + second: LeftInnerBrow + - first: + 1: 100204 + second: LeftIOuterBrow + - first: + 1: 100206 + second: LeftKneeEffector + - first: + 1: 100208 + second: LeftLeg + - first: + 1: 100210 + second: LeftLeg 1 + - first: + 1: 100212 + second: LeftLipCorner + - first: + 1: 100214 + second: LeftLipLower + - first: + 1: 100216 + second: LeftLipUpper + - first: + 1: 100218 + second: LeftNostril + - first: + 1: 100220 + second: LeftShoulder + - first: + 1: 100222 + second: LeftShoulder 1 + - first: + 1: 100224 + second: LeftShoulderEffector + - first: + 1: 100226 + second: LeftToes + - first: + 1: 100228 + second: LeftUpLeg + - first: + 1: 100230 + second: LeftUpLeg 1 + - first: + 1: 100232 + second: LeftWristEffector + - first: + 1: 100234 + second: LToeBase_End2 + - first: + 1: 100236 + second: LToeBase_End3 + - first: + 1: 100238 + second: Neck + - first: + 1: 100240 + second: Neck 1 + - first: + 1: 100242 + second: neckProxy_geo + - first: + 1: 100244 + second: pelvisProxy_geo + - first: + 1: 100246 + second: r_ankleProxy_geo + - first: + 1: 100248 + second: r_ballProxy_geo + - first: + 1: 100250 + second: r_clavicleProxy_geo + - first: + 1: 100252 + second: r_erbowProxy_geo + - first: + 1: 100254 + second: r_hipProxy_geo + - first: + 1: 100256 + second: r_indexProxy_01_geo + - first: + 1: 100258 + second: r_indexProxy_02_geo + - first: + 1: 100260 + second: r_indexProxy_03_geo + - first: + 1: 100262 + second: r_kneeProxy_geo + - first: + 1: 100264 + second: r_middleProxy_01_geo + - first: + 1: 100266 + second: r_middleProxy_02_geo + - first: + 1: 100268 + second: r_middleProxy_03_geo + - first: + 1: 100270 + second: r_pinkyProxy_01_geo + - first: + 1: 100272 + second: r_pinkyProxy_02_geo + - first: + 1: 100274 + second: r_pinkyProxy_03_geo + - first: + 1: 100276 + second: r_ringProxy_01_geo + - first: + 1: 100278 + second: r_ringProxy_02_geo + - first: + 1: 100280 + second: r_ringProxy_03_geo + - first: + 1: 100282 + second: r_shourderProxy_geo + - first: + 1: 100284 + second: r_thumbProxy_01_geo + - first: + 1: 100286 + second: r_thumbProxy_02_geo + - first: + 1: 100288 + second: r_thumbProxy_03_geo + - first: + 1: 100290 + second: r_UNI_eye + - first: + 1: 100292 + second: r_wristProxy_geo + - first: + 1: 100294 + second: Reference + - first: + 1: 100296 + second: RightAnkleEffector + - first: + 1: 100298 + second: RightArm + - first: + 1: 100300 + second: RightArm 1 + - first: + 1: 100302 + second: RightCheek + - first: + 1: 100304 + second: RightElbowEffector + - first: + 1: 100306 + second: RightEye + - first: + 1: 100308 + second: RightEyelidLower + - first: + 1: 100310 + second: RightEyelidUpper + - first: + 1: 100312 + second: RightFoot + - first: + 1: 100314 + second: RightFoot 1 + - first: + 1: 100316 + second: RightForeArm + - first: + 1: 100318 + second: RightForeArm 1 + - first: + 1: 100320 + second: RightHand + - first: + 1: 100322 + second: RightHand 1 + - first: + 1: 100324 + second: RightHandIndex1 + - first: + 1: 100326 + second: RightHandIndex2 + - first: + 1: 100328 + second: RightHandIndex3 + - first: + 1: 100330 + second: RightHandIndex4 + - first: + 1: 100332 + second: RightHandIndex5 + - first: + 1: 100334 + second: RightHandIndex6 + - first: + 1: 100336 + second: RightHandIndexEffector + - first: + 1: 100338 + second: RightHandMiddle1 + - first: + 1: 100340 + second: RightHandMiddle2 + - first: + 1: 100342 + second: RightHandMiddle3 + - first: + 1: 100344 + second: RightHandMiddle4 + - first: + 1: 100346 + second: RightHandMiddle5 + - first: + 1: 100348 + second: RightHandMiddle6 + - first: + 1: 100350 + second: RightHandMiddleEffector + - first: + 1: 100352 + second: RightHandPinky1 + - first: + 1: 100354 + second: RightHandPinky2 + - first: + 1: 100356 + second: RightHandPinky3 + - first: + 1: 100358 + second: RightHandPinky4 + - first: + 1: 100360 + second: RightHandPinky5 + - first: + 1: 100362 + second: RightHandPinky6 + - first: + 1: 100364 + second: RightHandPinkyEffector + - first: + 1: 100366 + second: RightHandRing1 + - first: + 1: 100368 + second: RightHandRing2 + - first: + 1: 100370 + second: RightHandRing3 + - first: + 1: 100372 + second: RightHandRing4 + - first: + 1: 100374 + second: RightHandRing5 + - first: + 1: 100376 + second: RightHandRing6 + - first: + 1: 100378 + second: RightHandRingEffector + - first: + 1: 100380 + second: RightHandThumb1 + - first: + 1: 100382 + second: RightHandThumb2 + - first: + 1: 100384 + second: RightHandThumb3 + - first: + 1: 100386 + second: RightHandThumb4 + - first: + 1: 100388 + second: RightHandThumb5 + - first: + 1: 100390 + second: RightHandThumb6 + - first: + 1: 100392 + second: RightHandThumbEffector + - first: + 1: 100394 + second: RightHipEffector + - first: + 1: 100396 + second: RightInnerBrow + - first: + 1: 100398 + second: RightIOuterBrow + - first: + 1: 100400 + second: RightKneeEffector + - first: + 1: 100402 + second: RightLeg + - first: + 1: 100404 + second: RightLeg 1 + - first: + 1: 100406 + second: RightLipCorner + - first: + 1: 100408 + second: RightLipLower + - first: + 1: 100410 + second: RightLipUpper + - first: + 1: 100412 + second: RightNostril + - first: + 1: 100414 + second: RightShoulder + - first: + 1: 100416 + second: RightShoulder 1 + - first: + 1: 100418 + second: RightShoulderEffector + - first: + 1: 100420 + second: RightToes + - first: + 1: 100422 + second: RightUpLeg + - first: + 1: 100424 + second: RightUpLeg 1 + - first: + 1: 100426 + second: RightWristEffector + - first: + 1: 100428 + second: Spine + - first: + 1: 100430 + second: Spine 1 + - first: + 1: 100432 + second: Spine1 + - first: + 1: 100434 + second: spineProxy_geo + - first: + 1: 100436 + second: TongueBack + - first: + 1: 100438 + second: TongueTip + - first: + 1: 100440 + second: UNI_01_Lower_teethProxy + - first: + 1: 100442 + second: UNI_01_TongueBaseProxy + - first: + 1: 100444 + second: UNI_01_TongueTipProxy + - first: + 1: 100446 + second: UNI_01_Upper_teethProxy + - first: + 4: 400000 + second: //RootNode + - first: + 4: 400002 + second: Character_Ctrl:Reference + - first: + 4: 400004 + second: Chest + - first: + 4: 400006 + second: ChestEndEffector + - first: + 4: 400008 + second: ChestOriginEffector + - first: + 4: 400010 + second: chestProxy_geo + - first: + 4: 400012 + second: Head + - first: + 4: 400014 + second: Head 1 + - first: + 4: 400016 + second: HeadEffector + - first: + 4: 400018 + second: headProxy_geo + - first: + 4: 400020 + second: HeadTop_End + - first: + 4: 400022 + second: Hips + - first: + 4: 400024 + second: Hips 1 + - first: + 4: 400026 + second: HipsEffector + - first: + 4: 400028 + second: Jaw + - first: + 4: 400030 + second: JawEND + - first: + 4: 400032 + second: jawProxy_geo + - first: + 4: 400034 + second: l_ankleProxy_geo + - first: + 4: 400036 + second: l_ballProxy_geo + - first: + 4: 400038 + second: l_clavicleProxy_geo + - first: + 4: 400040 + second: l_erbowProxy_geo + - first: + 4: 400042 + second: l_hipProxy_geo + - first: + 4: 400044 + second: l_indexProxy_01_geo + - first: + 4: 400046 + second: l_indexProxy_02_geo + - first: + 4: 400048 + second: l_indexProxy_03_geo + - first: + 4: 400050 + second: l_kneeProxy_geo + - first: + 4: 400052 + second: l_middleProxy_01_geo + - first: + 4: 400054 + second: l_middleProxy_02_geo + - first: + 4: 400056 + second: l_middleProxy_03_geo + - first: + 4: 400058 + second: l_pinkyProxy_01_geo + - first: + 4: 400060 + second: l_pinkyProxy_02_geo + - first: + 4: 400062 + second: l_pinkyProxy_03_geo + - first: + 4: 400064 + second: l_ringProxy_01_geo + - first: + 4: 400066 + second: l_ringProxy_02_geo + - first: + 4: 400068 + second: l_ringProxy_03_geo + - first: + 4: 400070 + second: l_shourderProxy_geo + - first: + 4: 400072 + second: l_thumbProxy_01_geo + - first: + 4: 400074 + second: l_thumbProxy_02_geo + - first: + 4: 400076 + second: l_thumbProxy_03_geo + - first: + 4: 400078 + second: l_UNI_eye + - first: + 4: 400080 + second: l_wristProxy_geo + - first: + 4: 400082 + second: LeftAnkleEffector + - first: + 4: 400084 + second: LeftArm + - first: + 4: 400086 + second: LeftArm 1 + - first: + 4: 400088 + second: LeftCheek + - first: + 4: 400090 + second: LeftElbowEffector + - first: + 4: 400092 + second: LeftEye + - first: + 4: 400094 + second: LeftEyelidLower + - first: + 4: 400096 + second: LeftEyelidUpper + - first: + 4: 400098 + second: LeftFoot + - first: + 4: 400100 + second: LeftFoot 1 + - first: + 4: 400102 + second: LeftForeArm + - first: + 4: 400104 + second: LeftForeArm 1 + - first: + 4: 400106 + second: LeftHand + - first: + 4: 400108 + second: LeftHand 1 + - first: + 4: 400110 + second: LeftHandIndex1 + - first: + 4: 400112 + second: LeftHandIndex13 + - first: + 4: 400114 + second: LeftHandIndex17 + - first: + 4: 400116 + second: LeftHandIndex2 + - first: + 4: 400118 + second: LeftHandIndex3 + - first: + 4: 400120 + second: LeftHandIndex4 + - first: + 4: 400122 + second: LeftHandIndex5 + - first: + 4: 400124 + second: LeftHandIndex6 + - first: + 4: 400126 + second: LeftHandIndexEffector + - first: + 4: 400128 + second: LeftHandMiddle1 + - first: + 4: 400130 + second: LeftHandMiddle13 + - first: + 4: 400132 + second: LeftHandMiddle17 + - first: + 4: 400134 + second: LeftHandMiddle2 + - first: + 4: 400136 + second: LeftHandMiddle3 + - first: + 4: 400138 + second: LeftHandMiddle4 + - first: + 4: 400140 + second: LeftHandMiddle5 + - first: + 4: 400142 + second: LeftHandMiddle6 + - first: + 4: 400144 + second: LeftHandMiddleEffector + - first: + 4: 400146 + second: LeftHandPinky1 + - first: + 4: 400148 + second: LeftHandPinky13 + - first: + 4: 400150 + second: LeftHandPinky17 + - first: + 4: 400152 + second: LeftHandPinky2 + - first: + 4: 400154 + second: LeftHandPinky3 + - first: + 4: 400156 + second: LeftHandPinky4 + - first: + 4: 400158 + second: LeftHandPinky5 + - first: + 4: 400160 + second: LeftHandPinky6 + - first: + 4: 400162 + second: LeftHandPinkyEffector + - first: + 4: 400164 + second: LeftHandRing1 + - first: + 4: 400166 + second: LeftHandRing13 + - first: + 4: 400168 + second: LeftHandRing17 + - first: + 4: 400170 + second: LeftHandRing2 + - first: + 4: 400172 + second: LeftHandRing3 + - first: + 4: 400174 + second: LeftHandRing4 + - first: + 4: 400176 + second: LeftHandRing5 + - first: + 4: 400178 + second: LeftHandRing6 + - first: + 4: 400180 + second: LeftHandRingEffector + - first: + 4: 400182 + second: LeftHandThumb1 + - first: + 4: 400184 + second: LeftHandThumb13 + - first: + 4: 400186 + second: LeftHandThumb17 + - first: + 4: 400188 + second: LeftHandThumb2 + - first: + 4: 400190 + second: LeftHandThumb3 + - first: + 4: 400192 + second: LeftHandThumb4 + - first: + 4: 400194 + second: LeftHandThumb5 + - first: + 4: 400196 + second: LeftHandThumb6 + - first: + 4: 400198 + second: LeftHandThumbEffector + - first: + 4: 400200 + second: LeftHipEffector + - first: + 4: 400202 + second: LeftInnerBrow + - first: + 4: 400204 + second: LeftIOuterBrow + - first: + 4: 400206 + second: LeftKneeEffector + - first: + 4: 400208 + second: LeftLeg + - first: + 4: 400210 + second: LeftLeg 1 + - first: + 4: 400212 + second: LeftLipCorner + - first: + 4: 400214 + second: LeftLipLower + - first: + 4: 400216 + second: LeftLipUpper + - first: + 4: 400218 + second: LeftNostril + - first: + 4: 400220 + second: LeftShoulder + - first: + 4: 400222 + second: LeftShoulder 1 + - first: + 4: 400224 + second: LeftShoulderEffector + - first: + 4: 400226 + second: LeftToes + - first: + 4: 400228 + second: LeftUpLeg + - first: + 4: 400230 + second: LeftUpLeg 1 + - first: + 4: 400232 + second: LeftWristEffector + - first: + 4: 400234 + second: LToeBase_End2 + - first: + 4: 400236 + second: LToeBase_End3 + - first: + 4: 400238 + second: Neck + - first: + 4: 400240 + second: Neck 1 + - first: + 4: 400242 + second: neckProxy_geo + - first: + 4: 400244 + second: pelvisProxy_geo + - first: + 4: 400246 + second: r_ankleProxy_geo + - first: + 4: 400248 + second: r_ballProxy_geo + - first: + 4: 400250 + second: r_clavicleProxy_geo + - first: + 4: 400252 + second: r_erbowProxy_geo + - first: + 4: 400254 + second: r_hipProxy_geo + - first: + 4: 400256 + second: r_indexProxy_01_geo + - first: + 4: 400258 + second: r_indexProxy_02_geo + - first: + 4: 400260 + second: r_indexProxy_03_geo + - first: + 4: 400262 + second: r_kneeProxy_geo + - first: + 4: 400264 + second: r_middleProxy_01_geo + - first: + 4: 400266 + second: r_middleProxy_02_geo + - first: + 4: 400268 + second: r_middleProxy_03_geo + - first: + 4: 400270 + second: r_pinkyProxy_01_geo + - first: + 4: 400272 + second: r_pinkyProxy_02_geo + - first: + 4: 400274 + second: r_pinkyProxy_03_geo + - first: + 4: 400276 + second: r_ringProxy_01_geo + - first: + 4: 400278 + second: r_ringProxy_02_geo + - first: + 4: 400280 + second: r_ringProxy_03_geo + - first: + 4: 400282 + second: r_shourderProxy_geo + - first: + 4: 400284 + second: r_thumbProxy_01_geo + - first: + 4: 400286 + second: r_thumbProxy_02_geo + - first: + 4: 400288 + second: r_thumbProxy_03_geo + - first: + 4: 400290 + second: r_UNI_eye + - first: + 4: 400292 + second: r_wristProxy_geo + - first: + 4: 400294 + second: Reference + - first: + 4: 400296 + second: RightAnkleEffector + - first: + 4: 400298 + second: RightArm + - first: + 4: 400300 + second: RightArm 1 + - first: + 4: 400302 + second: RightCheek + - first: + 4: 400304 + second: RightElbowEffector + - first: + 4: 400306 + second: RightEye + - first: + 4: 400308 + second: RightEyelidLower + - first: + 4: 400310 + second: RightEyelidUpper + - first: + 4: 400312 + second: RightFoot + - first: + 4: 400314 + second: RightFoot 1 + - first: + 4: 400316 + second: RightForeArm + - first: + 4: 400318 + second: RightForeArm 1 + - first: + 4: 400320 + second: RightHand + - first: + 4: 400322 + second: RightHand 1 + - first: + 4: 400324 + second: RightHandIndex1 + - first: + 4: 400326 + second: RightHandIndex2 + - first: + 4: 400328 + second: RightHandIndex3 + - first: + 4: 400330 + second: RightHandIndex4 + - first: + 4: 400332 + second: RightHandIndex5 + - first: + 4: 400334 + second: RightHandIndex6 + - first: + 4: 400336 + second: RightHandIndexEffector + - first: + 4: 400338 + second: RightHandMiddle1 + - first: + 4: 400340 + second: RightHandMiddle2 + - first: + 4: 400342 + second: RightHandMiddle3 + - first: + 4: 400344 + second: RightHandMiddle4 + - first: + 4: 400346 + second: RightHandMiddle5 + - first: + 4: 400348 + second: RightHandMiddle6 + - first: + 4: 400350 + second: RightHandMiddleEffector + - first: + 4: 400352 + second: RightHandPinky1 + - first: + 4: 400354 + second: RightHandPinky2 + - first: + 4: 400356 + second: RightHandPinky3 + - first: + 4: 400358 + second: RightHandPinky4 + - first: + 4: 400360 + second: RightHandPinky5 + - first: + 4: 400362 + second: RightHandPinky6 + - first: + 4: 400364 + second: RightHandPinkyEffector + - first: + 4: 400366 + second: RightHandRing1 + - first: + 4: 400368 + second: RightHandRing2 + - first: + 4: 400370 + second: RightHandRing3 + - first: + 4: 400372 + second: RightHandRing4 + - first: + 4: 400374 + second: RightHandRing5 + - first: + 4: 400376 + second: RightHandRing6 + - first: + 4: 400378 + second: RightHandRingEffector + - first: + 4: 400380 + second: RightHandThumb1 + - first: + 4: 400382 + second: RightHandThumb2 + - first: + 4: 400384 + second: RightHandThumb3 + - first: + 4: 400386 + second: RightHandThumb4 + - first: + 4: 400388 + second: RightHandThumb5 + - first: + 4: 400390 + second: RightHandThumb6 + - first: + 4: 400392 + second: RightHandThumbEffector + - first: + 4: 400394 + second: RightHipEffector + - first: + 4: 400396 + second: RightInnerBrow + - first: + 4: 400398 + second: RightIOuterBrow + - first: + 4: 400400 + second: RightKneeEffector + - first: + 4: 400402 + second: RightLeg + - first: + 4: 400404 + second: RightLeg 1 + - first: + 4: 400406 + second: RightLipCorner + - first: + 4: 400408 + second: RightLipLower + - first: + 4: 400410 + second: RightLipUpper + - first: + 4: 400412 + second: RightNostril + - first: + 4: 400414 + second: RightShoulder + - first: + 4: 400416 + second: RightShoulder 1 + - first: + 4: 400418 + second: RightShoulderEffector + - first: + 4: 400420 + second: RightToes + - first: + 4: 400422 + second: RightUpLeg + - first: + 4: 400424 + second: RightUpLeg 1 + - first: + 4: 400426 + second: RightWristEffector + - first: + 4: 400428 + second: Spine + - first: + 4: 400430 + second: Spine 1 + - first: + 4: 400432 + second: Spine1 + - first: + 4: 400434 + second: spineProxy_geo + - first: + 4: 400436 + second: TongueBack + - first: + 4: 400438 + second: TongueTip + - first: + 4: 400440 + second: UNI_01_Lower_teethProxy + - first: + 4: 400442 + second: UNI_01_TongueBaseProxy + - first: + 4: 400444 + second: UNI_01_TongueTipProxy + - first: + 4: 400446 + second: UNI_01_Upper_teethProxy + - first: + 23: 2300000 + second: chestProxy_geo + - first: + 23: 2300002 + second: headProxy_geo + - first: + 23: 2300004 + second: jawProxy_geo + - first: + 23: 2300006 + second: l_ankleProxy_geo + - first: + 23: 2300008 + second: l_ballProxy_geo + - first: + 23: 2300010 + second: l_clavicleProxy_geo + - first: + 23: 2300012 + second: l_erbowProxy_geo + - first: + 23: 2300014 + second: l_hipProxy_geo + - first: + 23: 2300016 + second: l_indexProxy_01_geo + - first: + 23: 2300018 + second: l_indexProxy_02_geo + - first: + 23: 2300020 + second: l_indexProxy_03_geo + - first: + 23: 2300022 + second: l_kneeProxy_geo + - first: + 23: 2300024 + second: l_middleProxy_01_geo + - first: + 23: 2300026 + second: l_middleProxy_02_geo + - first: + 23: 2300028 + second: l_middleProxy_03_geo + - first: + 23: 2300030 + second: l_pinkyProxy_01_geo + - first: + 23: 2300032 + second: l_pinkyProxy_02_geo + - first: + 23: 2300034 + second: l_pinkyProxy_03_geo + - first: + 23: 2300036 + second: l_ringProxy_01_geo + - first: + 23: 2300038 + second: l_ringProxy_02_geo + - first: + 23: 2300040 + second: l_ringProxy_03_geo + - first: + 23: 2300042 + second: l_shourderProxy_geo + - first: + 23: 2300044 + second: l_thumbProxy_01_geo + - first: + 23: 2300046 + second: l_thumbProxy_02_geo + - first: + 23: 2300048 + second: l_thumbProxy_03_geo + - first: + 23: 2300050 + second: l_UNI_eye + - first: + 23: 2300052 + second: l_wristProxy_geo + - first: + 23: 2300054 + second: neckProxy_geo + - first: + 23: 2300056 + second: pelvisProxy_geo + - first: + 23: 2300058 + second: r_ankleProxy_geo + - first: + 23: 2300060 + second: r_ballProxy_geo + - first: + 23: 2300062 + second: r_clavicleProxy_geo + - first: + 23: 2300064 + second: r_erbowProxy_geo + - first: + 23: 2300066 + second: r_hipProxy_geo + - first: + 23: 2300068 + second: r_indexProxy_01_geo + - first: + 23: 2300070 + second: r_indexProxy_02_geo + - first: + 23: 2300072 + second: r_indexProxy_03_geo + - first: + 23: 2300074 + second: r_kneeProxy_geo + - first: + 23: 2300076 + second: r_middleProxy_01_geo + - first: + 23: 2300078 + second: r_middleProxy_02_geo + - first: + 23: 2300080 + second: r_middleProxy_03_geo + - first: + 23: 2300082 + second: r_pinkyProxy_01_geo + - first: + 23: 2300084 + second: r_pinkyProxy_02_geo + - first: + 23: 2300086 + second: r_pinkyProxy_03_geo + - first: + 23: 2300088 + second: r_ringProxy_01_geo + - first: + 23: 2300090 + second: r_ringProxy_02_geo + - first: + 23: 2300092 + second: r_ringProxy_03_geo + - first: + 23: 2300094 + second: r_shourderProxy_geo + - first: + 23: 2300096 + second: r_thumbProxy_01_geo + - first: + 23: 2300098 + second: r_thumbProxy_02_geo + - first: + 23: 2300100 + second: r_thumbProxy_03_geo + - first: + 23: 2300102 + second: r_UNI_eye + - first: + 23: 2300104 + second: r_wristProxy_geo + - first: + 23: 2300106 + second: spineProxy_geo + - first: + 23: 2300108 + second: UNI_01_Lower_teethProxy + - first: + 23: 2300110 + second: UNI_01_TongueBaseProxy + - first: + 23: 2300112 + second: UNI_01_TongueTipProxy + - first: + 23: 2300114 + second: UNI_01_Upper_teethProxy + - first: + 33: 3300000 + second: chestProxy_geo + - first: + 33: 3300002 + second: headProxy_geo + - first: + 33: 3300004 + second: jawProxy_geo + - first: + 33: 3300006 + second: l_ankleProxy_geo + - first: + 33: 3300008 + second: l_ballProxy_geo + - first: + 33: 3300010 + second: l_clavicleProxy_geo + - first: + 33: 3300012 + second: l_erbowProxy_geo + - first: + 33: 3300014 + second: l_hipProxy_geo + - first: + 33: 3300016 + second: l_indexProxy_01_geo + - first: + 33: 3300018 + second: l_indexProxy_02_geo + - first: + 33: 3300020 + second: l_indexProxy_03_geo + - first: + 33: 3300022 + second: l_kneeProxy_geo + - first: + 33: 3300024 + second: l_middleProxy_01_geo + - first: + 33: 3300026 + second: l_middleProxy_02_geo + - first: + 33: 3300028 + second: l_middleProxy_03_geo + - first: + 33: 3300030 + second: l_pinkyProxy_01_geo + - first: + 33: 3300032 + second: l_pinkyProxy_02_geo + - first: + 33: 3300034 + second: l_pinkyProxy_03_geo + - first: + 33: 3300036 + second: l_ringProxy_01_geo + - first: + 33: 3300038 + second: l_ringProxy_02_geo + - first: + 33: 3300040 + second: l_ringProxy_03_geo + - first: + 33: 3300042 + second: l_shourderProxy_geo + - first: + 33: 3300044 + second: l_thumbProxy_01_geo + - first: + 33: 3300046 + second: l_thumbProxy_02_geo + - first: + 33: 3300048 + second: l_thumbProxy_03_geo + - first: + 33: 3300050 + second: l_UNI_eye + - first: + 33: 3300052 + second: l_wristProxy_geo + - first: + 33: 3300054 + second: neckProxy_geo + - first: + 33: 3300056 + second: pelvisProxy_geo + - first: + 33: 3300058 + second: r_ankleProxy_geo + - first: + 33: 3300060 + second: r_ballProxy_geo + - first: + 33: 3300062 + second: r_clavicleProxy_geo + - first: + 33: 3300064 + second: r_erbowProxy_geo + - first: + 33: 3300066 + second: r_hipProxy_geo + - first: + 33: 3300068 + second: r_indexProxy_01_geo + - first: + 33: 3300070 + second: r_indexProxy_02_geo + - first: + 33: 3300072 + second: r_indexProxy_03_geo + - first: + 33: 3300074 + second: r_kneeProxy_geo + - first: + 33: 3300076 + second: r_middleProxy_01_geo + - first: + 33: 3300078 + second: r_middleProxy_02_geo + - first: + 33: 3300080 + second: r_middleProxy_03_geo + - first: + 33: 3300082 + second: r_pinkyProxy_01_geo + - first: + 33: 3300084 + second: r_pinkyProxy_02_geo + - first: + 33: 3300086 + second: r_pinkyProxy_03_geo + - first: + 33: 3300088 + second: r_ringProxy_01_geo + - first: + 33: 3300090 + second: r_ringProxy_02_geo + - first: + 33: 3300092 + second: r_ringProxy_03_geo + - first: + 33: 3300094 + second: r_shourderProxy_geo + - first: + 33: 3300096 + second: r_thumbProxy_01_geo + - first: + 33: 3300098 + second: r_thumbProxy_02_geo + - first: + 33: 3300100 + second: r_thumbProxy_03_geo + - first: + 33: 3300102 + second: r_UNI_eye + - first: + 33: 3300104 + second: r_wristProxy_geo + - first: + 33: 3300106 + second: spineProxy_geo + - first: + 33: 3300108 + second: UNI_01_Lower_teethProxy + - first: + 33: 3300110 + second: UNI_01_TongueBaseProxy + - first: + 33: 3300112 + second: UNI_01_TongueTipProxy + - first: + 33: 3300114 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300000 + second: l_UNI_eye + - first: + 43: 4300002 + second: r_UNI_eye + - first: + 43: 4300004 + second: UNI_01_TongueBaseProxy + - first: + 43: 4300006 + second: UNI_01_TongueTipProxy + - first: + 43: 4300008 + second: UNI_01_Lower_teethProxy + - first: + 43: 4300010 + second: jawProxy_geo + - first: + 43: 4300012 + second: headProxy_geo + - first: + 43: 4300014 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300016 + second: neckProxy_geo + - first: + 43: 4300018 + second: r_pinkyProxy_03_geo + - first: + 43: 4300020 + second: r_pinkyProxy_02_geo + - first: + 43: 4300022 + second: r_pinkyProxy_01_geo + - first: + 43: 4300024 + second: r_ringProxy_03_geo + - first: + 43: 4300026 + second: r_ringProxy_02_geo + - first: + 43: 4300028 + second: r_ringProxy_01_geo + - first: + 43: 4300030 + second: r_middleProxy_03_geo + - first: + 43: 4300032 + second: r_middleProxy_02_geo + - first: + 43: 4300034 + second: r_middleProxy_01_geo + - first: + 43: 4300036 + second: r_indexProxy_03_geo + - first: + 43: 4300038 + second: r_indexProxy_02_geo + - first: + 43: 4300040 + second: r_indexProxy_01_geo + - first: + 43: 4300042 + second: r_thumbProxy_03_geo + - first: + 43: 4300044 + second: r_thumbProxy_02_geo + - first: + 43: 4300046 + second: r_thumbProxy_01_geo + - first: + 43: 4300048 + second: r_wristProxy_geo + - first: + 43: 4300050 + second: r_erbowProxy_geo + - first: + 43: 4300052 + second: r_shourderProxy_geo + - first: + 43: 4300054 + second: r_clavicleProxy_geo + - first: + 43: 4300056 + second: chestProxy_geo + - first: + 43: 4300058 + second: l_pinkyProxy_03_geo + - first: + 43: 4300060 + second: l_pinkyProxy_02_geo + - first: + 43: 4300062 + second: l_pinkyProxy_01_geo + - first: + 43: 4300064 + second: l_ringProxy_03_geo + - first: + 43: 4300066 + second: l_ringProxy_02_geo + - first: + 43: 4300068 + second: l_ringProxy_01_geo + - first: + 43: 4300070 + second: l_middleProxy_03_geo + - first: + 43: 4300072 + second: l_middleProxy_02_geo + - first: + 43: 4300074 + second: l_middleProxy_01_geo + - first: + 43: 4300076 + second: l_indexProxy_03_geo + - first: + 43: 4300078 + second: l_indexProxy_02_geo + - first: + 43: 4300080 + second: l_indexProxy_01_geo + - first: + 43: 4300082 + second: l_thumbProxy_03_geo + - first: + 43: 4300084 + second: l_thumbProxy_02_geo + - first: + 43: 4300086 + second: l_thumbProxy_01_geo + - first: + 43: 4300088 + second: l_wristProxy_geo + - first: + 43: 4300090 + second: l_erbowProxy_geo + - first: + 43: 4300092 + second: l_shourderProxy_geo + - first: + 43: 4300094 + second: l_clavicleProxy_geo + - first: + 43: 4300096 + second: spineProxy_geo + - first: + 43: 4300098 + second: r_ballProxy_geo + - first: + 43: 4300100 + second: r_ankleProxy_geo + - first: + 43: 4300102 + second: r_kneeProxy_geo + - first: + 43: 4300104 + second: r_hipProxy_geo + - first: + 43: 4300106 + second: pelvisProxy_geo + - first: + 43: 4300108 + second: l_ballProxy_geo + - first: + 43: 4300110 + second: l_ankleProxy_geo + - first: + 43: 4300112 + second: l_kneeProxy_geo + - first: + 43: 4300114 + second: l_hipProxy_geo + - first: + 74: 7400000 + second: StandQuarterTurnRight + - first: + 74: 7400002 + second: Stand Turn Right A + - first: + 74: 7400004 + second: Stand Turn Right C + - first: + 74: 7400006 + second: StandHalfTurnRight + - first: + 74: 7400008 + second: Stand Turn Left A + - first: + 74: 7400010 + second: StandQuarterTurnLeft + - first: + 74: 7400012 + second: Stand Turn Left C + - first: + 74: 7400014 + second: StandHalfTurnLeft + - first: + 95: 9500000 + second: //RootNode + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 1 + materialSearch: 2 + materialLocation: 0 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 0 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: + - serializedVersion: 16 + name: StandQuarterTurnRight + takeName: _97_TO_100_a_U1_M_P_idle_NeutralTO45IdleTONeutralIdle__Fb_p45_No_0_PJ_2 + internalID: 0 + firstFrame: 284 + lastFrame: 315 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: StandHalfTurnRight + takeName: _97_TO_100_a_U1_M_P_idle_NeutralTO45IdleTONeutralIdle__Fb_p45_No_0_PJ_2 + internalID: 0 + firstFrame: 622 + lastFrame: 659 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: StandQuarterTurnLeft + takeName: _97_TO_100_a_U1_M_P_idle_NeutralTO45IdleTONeutralIdle__Fb_p45_No_0_PJ_2 + internalID: 0 + firstFrame: 284 + lastFrame: 315 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 1 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: StandHalfTurnLeft + takeName: _97_TO_100_a_U1_M_P_idle_NeutralTO45IdleTONeutralIdle__Fb_p45_No_0_PJ_2 + internalID: 0 + firstFrame: 622 + lastFrame: 659 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 1 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.01 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 0 + importBlendShapes: 0 + importCameras: 0 + importLights: 0 + fileIdsGeneration: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 4 + normalCalculationMode: 0 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: + - boneName: Hips + humanName: Hips + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftUpLeg + humanName: LeftUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightUpLeg + humanName: RightUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftLeg + humanName: LeftLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightLeg + humanName: RightLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftFoot + humanName: LeftFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightFoot + humanName: RightFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Spine + humanName: Spine + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Chest + humanName: Chest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Neck + humanName: Neck + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Head + humanName: Head + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftShoulder + humanName: LeftShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightShoulder + humanName: RightShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftArm + humanName: LeftUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightArm + humanName: RightUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftForeArm + humanName: LeftLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightForeArm + humanName: RightLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHand + humanName: LeftHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHand + humanName: RightHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftToes + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightToes + humanName: RightToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftEye + humanName: LeftEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightEye + humanName: RightEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Jaw + humanName: Jaw + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb1 + humanName: Left Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb2 + humanName: Left Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb3 + humanName: Left Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex1 + humanName: Left Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex2 + humanName: Left Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex3 + humanName: Left Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle1 + humanName: Left Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle2 + humanName: Left Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle3 + humanName: Left Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing1 + humanName: Left Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing2 + humanName: Left Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing3 + humanName: Left Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky1 + humanName: Left Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky2 + humanName: Left Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky3 + humanName: Left Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb1 + humanName: Right Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb2 + humanName: Right Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb3 + humanName: Right Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex1 + humanName: Right Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex2 + humanName: Right Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex3 + humanName: Right Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle1 + humanName: Right Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle2 + humanName: Right Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle3 + humanName: Right Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing1 + humanName: Right Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing2 + humanName: Right Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing3 + humanName: Right Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky1 + humanName: Right Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky2 + humanName: Right Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky3 + humanName: Right Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + skeleton: + - name: HumanoidStandTurn(Clone) + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Hips + parentName: + position: {x: 0.0022110448, y: 0.96055585, z: 0.007749859} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftUpLeg + parentName: + position: {x: -0.0754495, y: -0.04566402, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLeg + parentName: + position: {x: -0.020550499, y: -0.40912998, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftFoot + parentName: + position: {x: -0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftToes + parentName: + position: {x: -0.007487, y: -0.0731673, z: 0.14542712} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightUpLeg + parentName: + position: {x: 0.075449534, y: -0.04566399, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLeg + parentName: + position: {x: 0.020550467, y: -0.40913, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightFoot + parentName: + position: {x: 0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightToes + parentName: + position: {x: 0.007487, y: -0.0731673, z: 0.1454275} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Spine + parentName: + position: {x: 2.646978e-25, y: 0.092263184, z: 0.015771331} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Chest + parentName: + position: {x: -0, y: 0.16254029, z: -0.0016560555} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftShoulder + parentName: + position: {x: -0.038285997, y: 0.2216225, z: -0.017063085} + rotation: {x: -0.02318112, y: -0.04124112, z: 0.15546224, w: 0.98670834} + scale: {x: 1, y: 1, z: 1} + - name: LeftArm + parentName: + position: {x: -0.10050205, y: 5.684342e-16, z: -3.330669e-18} + rotation: {x: 0.088617675, y: 0.027651822, z: -0.14293042, w: 0.9853696} + scale: {x: 1, y: 1, z: 1} + - name: LeftForeArm + parentName: + position: {x: -0.2540493, y: 5.684342e-16, z: 1.11022296e-17} + rotation: {x: 0.12483408, y: 0.03135819, z: 0.0028125686, w: 0.991678} + scale: {x: 1, y: 1, z: 1} + - name: LeftHand + parentName: + position: {x: -0.24638927, y: 0, z: -1.9984014e-16} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex1 + parentName: + position: {x: -0.0751258, y: -0.0078414045, z: 0.032652643} + rotation: {x: 0.00607836, y: -0.016752739, z: 0.05687309, w: 0.99822235} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex2 + parentName: + position: {x: -0.03979728, y: 0.000049808405, z: 0.0011857504} + rotation: {x: -0.06754092, y: 0.015236676, z: 0.03271781, w: 0.9970635} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex3 + parentName: + position: {x: -0.027968477, y: -0.000000006281225, z: -0.00000005171866} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle1 + parentName: + position: {x: -0.076023825, y: -0.0018851344, z: 0.010141229} + rotation: {x: -0.0037826817, y: 0.04479477, z: 0.08818958, w: 0.9950888} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle2 + parentName: + position: {x: -0.044280436, y: 0.000004798874, z: -0.00042540013} + rotation: {x: -0.012599095, y: -0.007551358, z: 0.031477936, w: 0.99939656} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle3 + parentName: + position: {x: -0.033964828, y: -0.000000012197929, z: 0.0000000037564827} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky1 + parentName: + position: {x: -0.06565995, y: -0.007825106, z: -0.032251246} + rotation: {x: -0.066117726, y: 0.08169516, z: 0.09312711, w: 0.9900918} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky2 + parentName: + position: {x: -0.030805448, y: -0.000030874573, z: -0.0014480775} + rotation: {x: 0.046947513, y: -0.021169629, z: 0.03768727, w: 0.9979617} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky3 + parentName: + position: {x: -0.023064027, y: -0.0000064025808, z: 0.000000018332095} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing1 + parentName: + position: {x: -0.07030211, y: -0.0037453093, z: -0.011411792} + rotation: {x: -0.02018004, y: 0.072301336, z: 0.09005975, w: 0.99310356} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing2 + parentName: + position: {x: -0.043135457, y: -0.000020882308, z: -0.0022351784} + rotation: {x: 0.018289158, y: -0.025606606, z: 0.033972267, w: 0.99892735} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing3 + parentName: + position: {x: -0.030835565, y: 7.7103546e-11, z: -0.00000001649327} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb1 + parentName: + position: {x: -0.014231241, y: -0.012377825, z: 0.025531668} + rotation: {x: -0.10211815, y: -0.050943498, z: -0.10264302, w: 0.9881503} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb2 + parentName: + position: {x: -0.016374, y: -0.00529, z: 0.023491409} + rotation: {x: -0.026063586, y: 0.09669004, z: 0.0036063446, w: 0.9949667} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb3 + parentName: + position: {x: -0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Neck + parentName: + position: {x: -0, y: 0.2590093, z: -0.032413255} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Head + parentName: + position: {x: -2.646978e-25, y: 0.08307038, z: 0.0113267815} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Jaw + parentName: + position: {x: 1.7347234e-20, y: 0.0111267585, z: 0.010327543} + rotation: {x: 0.21924005, y: -0, z: -0, w: 0.975671} + scale: {x: 1, y: 1, z: 1} + - name: JawEND + parentName: + position: {x: -1.7347234e-20, y: -0.04828876, z: 0.07185171} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipCorner + parentName: + position: {x: -0.032843262, y: -0.01657876, z: 0.066121764} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipLower + parentName: + position: {x: -0.014250817, y: -0.02168876, z: 0.08224063} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipCorner + parentName: + position: {x: 0.03284, y: -0.01657876, z: 0.066118784} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipLower + parentName: + position: {x: 0.014250817, y: -0.02168876, z: 0.082238786} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueBack + parentName: + position: {x: -1.7347234e-20, y: -0.022869369, z: 0.010095409} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueTip + parentName: + position: {x: -1.7347234e-20, y: -0.023278812, z: 0.03832271} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftCheek + parentName: + position: {x: -0.054244027, y: 0.03370195, z: 0.0594304} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEye + parentName: + position: {x: -0.020848233, y: 0.0825027, z: 0.055427432} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidLower + parentName: + position: {x: -0.035618957, y: 0.06507366, z: 0.07623474} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidUpper + parentName: + position: {x: -0.034406897, y: 0.10060814, z: 0.08020531} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftInnerBrow + parentName: + position: {x: -0.012062691, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftIOuterBrow + parentName: + position: {x: -0.05503987, y: 0.11482529, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipUpper + parentName: + position: {x: -0.014501322, y: -0.005111811, z: 0.09461884} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftNostril + parentName: + position: {x: -0.0179, y: 0.026312828, z: 0.0908674} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightCheek + parentName: + position: {x: 0.054239996, y: 0.033702828, z: 0.0594274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEye + parentName: + position: {x: 0.020849999, y: 0.08250283, z: 0.0554274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidLower + parentName: + position: {x: 0.03562, y: 0.06507283, z: 0.0762374} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidUpper + parentName: + position: {x: 0.03441, y: 0.10061283, z: 0.08020739} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightInnerBrow + parentName: + position: {x: 0.012062687, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightIOuterBrow + parentName: + position: {x: 0.055040002, y: 0.11482283, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipUpper + parentName: + position: {x: 0.014501322, y: -0.0051071714, z: 0.094617404} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightNostril + parentName: + position: {x: 0.0179, y: 0.026308905, z: 0.09087062} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightShoulder + parentName: + position: {x: 0.038286015, y: 0.22162114, z: -0.017063085} + rotation: {x: 0.15661523, y: 0.9872962, z: -0.01414324, w: -0.022756584} + scale: {x: 1, y: 1, z: 1} + - name: RightArm + parentName: + position: {x: -0.100501455, y: -0.0000024995522, z: -0.000000051557407} + rotation: {x: 0.12895867, y: 0.98859113, z: -0.059131783, w: 0.050603244} + scale: {x: 1, y: 1, z: 1} + - name: RightForeArm + parentName: + position: {x: 0.25342825, y: 0.006011353, z: -0.016704524} + rotation: {x: 0.17300232, y: 0.018497756, z: -0.026410272, w: 0.98439354} + scale: {x: 1, y: 1, z: 1} + - name: RightHand + parentName: + position: {x: 0.2453737, y: 0.021641772, z: 0.005550465} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex1 + parentName: + position: {x: 0.0747695, y: -0.0012430536, z: 0.034344498} + rotation: {x: -0.004232009, y: 0.16211927, z: -0.04068243, w: 0.9859232} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex2 + parentName: + position: {x: 0.0370584, y: 0.00072612107, z: 0.014538894} + rotation: {x: -0.077583596, y: 0.022349847, z: 0.040921364, w: 0.99589497} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex3 + parentName: + position: {x: 0.025225038, y: -0.0049664653, z: 0.011012146} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle1 + parentName: + position: {x: 0.075647645, y: 0.0047914027, z: 0.011853182} + rotation: {x: -0.001773981, y: 0.014349261, z: -0.047807496, w: 0.998752} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle2 + parentName: + position: {x: 0.043809064, y: 0.00019418815, z: 0.006454936} + rotation: {x: -0.018871933, y: -0.044111393, z: 0.08294796, w: 0.9953983} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle3 + parentName: + position: {x: 0.03307247, y: -0.007547537, z: 0.0016898462} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky1 + parentName: + position: {x: 0.06680334, y: -0.0019941088, z: -0.030756146} + rotation: {x: -0.062029414, y: -0.2586125, z: -0.016704157, w: 0.9638428} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky2 + parentName: + position: {x: 0.028530842, y: -0.001397143, z: -0.011623796} + rotation: {x: 0.029857632, y: 0.00079790846, z: -0.06166529, w: 0.9976499} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky3 + parentName: + position: {x: 0.02142686, y: -0.00055350893, z: -0.008516608} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing1 + parentName: + position: {x: 0.070598476, y: 0.0024570965, z: -0.009821458} + rotation: {x: -0.014760392, y: -0.11599648, z: -0.029717194, w: 0.9926953} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing2 + parentName: + position: {x: 0.042887185, y: -0.0013753821, z: -0.004945858} + rotation: {x: 0.020764627, y: -0.021557711, z: 0.07558714, w: 0.9966899} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing3 + parentName: + position: {x: 0.029500604, y: -0.0076929354, z: -0.004622256} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb1 + parentName: + position: {x: 0.014684916, y: -0.011104942, z: 0.025858095} + rotation: {x: -0.11998693, y: 0.033679135, z: 0.14882779, w: 0.98097867} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb2 + parentName: + position: {x: 0.016374, y: -0.00529, z: 0.02349136} + rotation: {x: -0.026063347, y: -0.09669071, z: -0.003606943, w: 0.9949667} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb3 + parentName: + position: {x: 0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 0.01 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalk.fbx b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalk.fbx new file mode 100644 index 000000000..7f7a2c5b3 Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalk.fbx differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalk.fbx.meta b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalk.fbx.meta new file mode 100644 index 000000000..9a171ad57 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalk.fbx.meta @@ -0,0 +1,2358 @@ +fileFormatVersion: 2 +guid: b1a5e04ae51004842aba06704a6c2903 +labels: +- ObiCloth +- ObiRope +- ObiSoftbody +ModelImporter: + serializedVersion: 19301 + internalIDToNameTable: + - first: + 1: 100000 + second: Chest + - first: + 1: 100002 + second: chestProxy_geo + - first: + 1: 100004 + second: //RootNode + - first: + 1: 100006 + second: Head + - first: + 1: 100008 + second: headProxy_geo + - first: + 1: 100010 + second: HeadTop_End + - first: + 1: 100012 + second: Hips + - first: + 1: 100014 + second: Jaw + - first: + 1: 100016 + second: JawEND + - first: + 1: 100018 + second: jawProxy_geo + - first: + 1: 100020 + second: l_ankleProxy_geo + - first: + 1: 100022 + second: l_ballProxy_geo + - first: + 1: 100024 + second: l_clavicleProxy_geo + - first: + 1: 100026 + second: l_erbowProxy_geo + - first: + 1: 100028 + second: l_hipProxy_geo + - first: + 1: 100030 + second: l_indexProxy_01_geo + - first: + 1: 100032 + second: l_indexProxy_02_geo + - first: + 1: 100034 + second: l_indexProxy_03_geo + - first: + 1: 100036 + second: l_kneeProxy_geo + - first: + 1: 100038 + second: l_middleProxy_01_geo + - first: + 1: 100040 + second: l_middleProxy_02_geo + - first: + 1: 100042 + second: l_middleProxy_03_geo + - first: + 1: 100044 + second: l_pinkyProxy_01_geo + - first: + 1: 100046 + second: l_pinkyProxy_02_geo + - first: + 1: 100048 + second: l_pinkyProxy_03_geo + - first: + 1: 100050 + second: l_ringProxy_01_geo + - first: + 1: 100052 + second: l_ringProxy_02_geo + - first: + 1: 100054 + second: l_ringProxy_03_geo + - first: + 1: 100056 + second: l_shourderProxy_geo + - first: + 1: 100058 + second: l_thumbProxy_01_geo + - first: + 1: 100060 + second: l_thumbProxy_02_geo + - first: + 1: 100062 + second: l_thumbProxy_03_geo + - first: + 1: 100064 + second: l_UNI_eye + - first: + 1: 100066 + second: l_wristProxy_geo + - first: + 1: 100068 + second: LeftArm + - first: + 1: 100070 + second: LeftCheek + - first: + 1: 100072 + second: LeftEye + - first: + 1: 100074 + second: LeftEyelidLower + - first: + 1: 100076 + second: LeftEyelidUpper + - first: + 1: 100078 + second: LeftFoot + - first: + 1: 100080 + second: LeftForeArm + - first: + 1: 100082 + second: LeftHand + - first: + 1: 100084 + second: LeftHandIndex1 + - first: + 1: 100086 + second: LeftHandIndex13 + - first: + 1: 100088 + second: LeftHandIndex17 + - first: + 1: 100090 + second: LeftHandIndex2 + - first: + 1: 100092 + second: LeftHandIndex3 + - first: + 1: 100094 + second: LeftHandMiddle1 + - first: + 1: 100096 + second: LeftHandMiddle13 + - first: + 1: 100098 + second: LeftHandMiddle17 + - first: + 1: 100100 + second: LeftHandMiddle2 + - first: + 1: 100102 + second: LeftHandMiddle3 + - first: + 1: 100104 + second: LeftHandPinky1 + - first: + 1: 100106 + second: LeftHandPinky13 + - first: + 1: 100108 + second: LeftHandPinky17 + - first: + 1: 100110 + second: LeftHandPinky2 + - first: + 1: 100112 + second: LeftHandPinky3 + - first: + 1: 100114 + second: LeftHandRing1 + - first: + 1: 100116 + second: LeftHandRing13 + - first: + 1: 100118 + second: LeftHandRing17 + - first: + 1: 100120 + second: LeftHandRing2 + - first: + 1: 100122 + second: LeftHandRing3 + - first: + 1: 100124 + second: LeftHandThumb1 + - first: + 1: 100126 + second: LeftHandThumb13 + - first: + 1: 100128 + second: LeftHandThumb17 + - first: + 1: 100130 + second: LeftHandThumb2 + - first: + 1: 100132 + second: LeftHandThumb3 + - first: + 1: 100134 + second: LeftInnerBrow + - first: + 1: 100136 + second: LeftIOuterBrow + - first: + 1: 100138 + second: LeftLeg + - first: + 1: 100140 + second: LeftLipCorner + - first: + 1: 100142 + second: LeftLipLower + - first: + 1: 100144 + second: LeftLipUpper + - first: + 1: 100146 + second: LeftNostril + - first: + 1: 100148 + second: LeftShoulder + - first: + 1: 100150 + second: LeftToes + - first: + 1: 100152 + second: LeftUpLeg + - first: + 1: 100154 + second: LToeBase_End2 + - first: + 1: 100156 + second: LToeBase_End3 + - first: + 1: 100158 + second: Neck + - first: + 1: 100160 + second: neckProxy_geo + - first: + 1: 100162 + second: pelvisProxy_geo + - first: + 1: 100164 + second: r_ankleProxy_geo + - first: + 1: 100166 + second: r_ballProxy_geo + - first: + 1: 100168 + second: r_clavicleProxy_geo + - first: + 1: 100170 + second: r_erbowProxy_geo + - first: + 1: 100172 + second: r_hipProxy_geo + - first: + 1: 100174 + second: r_indexProxy_01_geo + - first: + 1: 100176 + second: r_indexProxy_02_geo + - first: + 1: 100178 + second: r_indexProxy_03_geo + - first: + 1: 100180 + second: r_kneeProxy_geo + - first: + 1: 100182 + second: r_middleProxy_01_geo + - first: + 1: 100184 + second: r_middleProxy_02_geo + - first: + 1: 100186 + second: r_middleProxy_03_geo + - first: + 1: 100188 + second: r_pinkyProxy_01_geo + - first: + 1: 100190 + second: r_pinkyProxy_02_geo + - first: + 1: 100192 + second: r_pinkyProxy_03_geo + - first: + 1: 100194 + second: r_ringProxy_01_geo + - first: + 1: 100196 + second: r_ringProxy_02_geo + - first: + 1: 100198 + second: r_ringProxy_03_geo + - first: + 1: 100200 + second: r_shourderProxy_geo + - first: + 1: 100202 + second: r_thumbProxy_01_geo + - first: + 1: 100204 + second: r_thumbProxy_02_geo + - first: + 1: 100206 + second: r_thumbProxy_03_geo + - first: + 1: 100208 + second: r_UNI_eye + - first: + 1: 100210 + second: r_wristProxy_geo + - first: + 1: 100212 + second: Reference + - first: + 1: 100214 + second: RightArm + - first: + 1: 100216 + second: RightCheek + - first: + 1: 100218 + second: RightEye + - first: + 1: 100220 + second: RightEyelidLower + - first: + 1: 100222 + second: RightEyelidUpper + - first: + 1: 100224 + second: RightFoot + - first: + 1: 100226 + second: RightForeArm + - first: + 1: 100228 + second: RightHand + - first: + 1: 100230 + second: RightHandIndex1 + - first: + 1: 100232 + second: RightHandIndex2 + - first: + 1: 100234 + second: RightHandIndex3 + - first: + 1: 100236 + second: RightHandMiddle1 + - first: + 1: 100238 + second: RightHandMiddle2 + - first: + 1: 100240 + second: RightHandMiddle3 + - first: + 1: 100242 + second: RightHandPinky1 + - first: + 1: 100244 + second: RightHandPinky2 + - first: + 1: 100246 + second: RightHandPinky3 + - first: + 1: 100248 + second: RightHandRing1 + - first: + 1: 100250 + second: RightHandRing2 + - first: + 1: 100252 + second: RightHandRing3 + - first: + 1: 100254 + second: RightHandThumb1 + - first: + 1: 100256 + second: RightHandThumb2 + - first: + 1: 100258 + second: RightHandThumb3 + - first: + 1: 100260 + second: RightInnerBrow + - first: + 1: 100262 + second: RightIOuterBrow + - first: + 1: 100264 + second: RightLeg + - first: + 1: 100266 + second: RightLipCorner + - first: + 1: 100268 + second: RightLipLower + - first: + 1: 100270 + second: RightLipUpper + - first: + 1: 100272 + second: RightNostril + - first: + 1: 100274 + second: RightShoulder + - first: + 1: 100276 + second: RightToes + - first: + 1: 100278 + second: RightUpLeg + - first: + 1: 100280 + second: Spine + - first: + 1: 100282 + second: spineProxy_geo + - first: + 1: 100284 + second: TongueBack + - first: + 1: 100286 + second: TongueTip + - first: + 1: 100288 + second: UNI_01_Lower_teethProxy + - first: + 1: 100290 + second: UNI_01_TongueBaseProxy + - first: + 1: 100292 + second: UNI_01_TongueTipProxy + - first: + 1: 100294 + second: UNI_01_Upper_teethProxy + - first: + 4: 400000 + second: Chest + - first: + 4: 400002 + second: chestProxy_geo + - first: + 4: 400004 + second: //RootNode + - first: + 4: 400006 + second: Head + - first: + 4: 400008 + second: headProxy_geo + - first: + 4: 400010 + second: HeadTop_End + - first: + 4: 400012 + second: Hips + - first: + 4: 400014 + second: Jaw + - first: + 4: 400016 + second: JawEND + - first: + 4: 400018 + second: jawProxy_geo + - first: + 4: 400020 + second: l_ankleProxy_geo + - first: + 4: 400022 + second: l_ballProxy_geo + - first: + 4: 400024 + second: l_clavicleProxy_geo + - first: + 4: 400026 + second: l_erbowProxy_geo + - first: + 4: 400028 + second: l_hipProxy_geo + - first: + 4: 400030 + second: l_indexProxy_01_geo + - first: + 4: 400032 + second: l_indexProxy_02_geo + - first: + 4: 400034 + second: l_indexProxy_03_geo + - first: + 4: 400036 + second: l_kneeProxy_geo + - first: + 4: 400038 + second: l_middleProxy_01_geo + - first: + 4: 400040 + second: l_middleProxy_02_geo + - first: + 4: 400042 + second: l_middleProxy_03_geo + - first: + 4: 400044 + second: l_pinkyProxy_01_geo + - first: + 4: 400046 + second: l_pinkyProxy_02_geo + - first: + 4: 400048 + second: l_pinkyProxy_03_geo + - first: + 4: 400050 + second: l_ringProxy_01_geo + - first: + 4: 400052 + second: l_ringProxy_02_geo + - first: + 4: 400054 + second: l_ringProxy_03_geo + - first: + 4: 400056 + second: l_shourderProxy_geo + - first: + 4: 400058 + second: l_thumbProxy_01_geo + - first: + 4: 400060 + second: l_thumbProxy_02_geo + - first: + 4: 400062 + second: l_thumbProxy_03_geo + - first: + 4: 400064 + second: l_UNI_eye + - first: + 4: 400066 + second: l_wristProxy_geo + - first: + 4: 400068 + second: LeftArm + - first: + 4: 400070 + second: LeftCheek + - first: + 4: 400072 + second: LeftEye + - first: + 4: 400074 + second: LeftEyelidLower + - first: + 4: 400076 + second: LeftEyelidUpper + - first: + 4: 400078 + second: LeftFoot + - first: + 4: 400080 + second: LeftForeArm + - first: + 4: 400082 + second: LeftHand + - first: + 4: 400084 + second: LeftHandIndex1 + - first: + 4: 400086 + second: LeftHandIndex13 + - first: + 4: 400088 + second: LeftHandIndex17 + - first: + 4: 400090 + second: LeftHandIndex2 + - first: + 4: 400092 + second: LeftHandIndex3 + - first: + 4: 400094 + second: LeftHandMiddle1 + - first: + 4: 400096 + second: LeftHandMiddle13 + - first: + 4: 400098 + second: LeftHandMiddle17 + - first: + 4: 400100 + second: LeftHandMiddle2 + - first: + 4: 400102 + second: LeftHandMiddle3 + - first: + 4: 400104 + second: LeftHandPinky1 + - first: + 4: 400106 + second: LeftHandPinky13 + - first: + 4: 400108 + second: LeftHandPinky17 + - first: + 4: 400110 + second: LeftHandPinky2 + - first: + 4: 400112 + second: LeftHandPinky3 + - first: + 4: 400114 + second: LeftHandRing1 + - first: + 4: 400116 + second: LeftHandRing13 + - first: + 4: 400118 + second: LeftHandRing17 + - first: + 4: 400120 + second: LeftHandRing2 + - first: + 4: 400122 + second: LeftHandRing3 + - first: + 4: 400124 + second: LeftHandThumb1 + - first: + 4: 400126 + second: LeftHandThumb13 + - first: + 4: 400128 + second: LeftHandThumb17 + - first: + 4: 400130 + second: LeftHandThumb2 + - first: + 4: 400132 + second: LeftHandThumb3 + - first: + 4: 400134 + second: LeftInnerBrow + - first: + 4: 400136 + second: LeftIOuterBrow + - first: + 4: 400138 + second: LeftLeg + - first: + 4: 400140 + second: LeftLipCorner + - first: + 4: 400142 + second: LeftLipLower + - first: + 4: 400144 + second: LeftLipUpper + - first: + 4: 400146 + second: LeftNostril + - first: + 4: 400148 + second: LeftShoulder + - first: + 4: 400150 + second: LeftToes + - first: + 4: 400152 + second: LeftUpLeg + - first: + 4: 400154 + second: LToeBase_End2 + - first: + 4: 400156 + second: LToeBase_End3 + - first: + 4: 400158 + second: Neck + - first: + 4: 400160 + second: neckProxy_geo + - first: + 4: 400162 + second: pelvisProxy_geo + - first: + 4: 400164 + second: r_ankleProxy_geo + - first: + 4: 400166 + second: r_ballProxy_geo + - first: + 4: 400168 + second: r_clavicleProxy_geo + - first: + 4: 400170 + second: r_erbowProxy_geo + - first: + 4: 400172 + second: r_hipProxy_geo + - first: + 4: 400174 + second: r_indexProxy_01_geo + - first: + 4: 400176 + second: r_indexProxy_02_geo + - first: + 4: 400178 + second: r_indexProxy_03_geo + - first: + 4: 400180 + second: r_kneeProxy_geo + - first: + 4: 400182 + second: r_middleProxy_01_geo + - first: + 4: 400184 + second: r_middleProxy_02_geo + - first: + 4: 400186 + second: r_middleProxy_03_geo + - first: + 4: 400188 + second: r_pinkyProxy_01_geo + - first: + 4: 400190 + second: r_pinkyProxy_02_geo + - first: + 4: 400192 + second: r_pinkyProxy_03_geo + - first: + 4: 400194 + second: r_ringProxy_01_geo + - first: + 4: 400196 + second: r_ringProxy_02_geo + - first: + 4: 400198 + second: r_ringProxy_03_geo + - first: + 4: 400200 + second: r_shourderProxy_geo + - first: + 4: 400202 + second: r_thumbProxy_01_geo + - first: + 4: 400204 + second: r_thumbProxy_02_geo + - first: + 4: 400206 + second: r_thumbProxy_03_geo + - first: + 4: 400208 + second: r_UNI_eye + - first: + 4: 400210 + second: r_wristProxy_geo + - first: + 4: 400212 + second: Reference + - first: + 4: 400214 + second: RightArm + - first: + 4: 400216 + second: RightCheek + - first: + 4: 400218 + second: RightEye + - first: + 4: 400220 + second: RightEyelidLower + - first: + 4: 400222 + second: RightEyelidUpper + - first: + 4: 400224 + second: RightFoot + - first: + 4: 400226 + second: RightForeArm + - first: + 4: 400228 + second: RightHand + - first: + 4: 400230 + second: RightHandIndex1 + - first: + 4: 400232 + second: RightHandIndex2 + - first: + 4: 400234 + second: RightHandIndex3 + - first: + 4: 400236 + second: RightHandMiddle1 + - first: + 4: 400238 + second: RightHandMiddle2 + - first: + 4: 400240 + second: RightHandMiddle3 + - first: + 4: 400242 + second: RightHandPinky1 + - first: + 4: 400244 + second: RightHandPinky2 + - first: + 4: 400246 + second: RightHandPinky3 + - first: + 4: 400248 + second: RightHandRing1 + - first: + 4: 400250 + second: RightHandRing2 + - first: + 4: 400252 + second: RightHandRing3 + - first: + 4: 400254 + second: RightHandThumb1 + - first: + 4: 400256 + second: RightHandThumb2 + - first: + 4: 400258 + second: RightHandThumb3 + - first: + 4: 400260 + second: RightInnerBrow + - first: + 4: 400262 + second: RightIOuterBrow + - first: + 4: 400264 + second: RightLeg + - first: + 4: 400266 + second: RightLipCorner + - first: + 4: 400268 + second: RightLipLower + - first: + 4: 400270 + second: RightLipUpper + - first: + 4: 400272 + second: RightNostril + - first: + 4: 400274 + second: RightShoulder + - first: + 4: 400276 + second: RightToes + - first: + 4: 400278 + second: RightUpLeg + - first: + 4: 400280 + second: Spine + - first: + 4: 400282 + second: spineProxy_geo + - first: + 4: 400284 + second: TongueBack + - first: + 4: 400286 + second: TongueTip + - first: + 4: 400288 + second: UNI_01_Lower_teethProxy + - first: + 4: 400290 + second: UNI_01_TongueBaseProxy + - first: + 4: 400292 + second: UNI_01_TongueTipProxy + - first: + 4: 400294 + second: UNI_01_Upper_teethProxy + - first: + 23: 2300000 + second: chestProxy_geo + - first: + 23: 2300002 + second: headProxy_geo + - first: + 23: 2300004 + second: jawProxy_geo + - first: + 23: 2300006 + second: l_ankleProxy_geo + - first: + 23: 2300008 + second: l_ballProxy_geo + - first: + 23: 2300010 + second: l_clavicleProxy_geo + - first: + 23: 2300012 + second: l_erbowProxy_geo + - first: + 23: 2300014 + second: l_hipProxy_geo + - first: + 23: 2300016 + second: l_indexProxy_01_geo + - first: + 23: 2300018 + second: l_indexProxy_02_geo + - first: + 23: 2300020 + second: l_indexProxy_03_geo + - first: + 23: 2300022 + second: l_kneeProxy_geo + - first: + 23: 2300024 + second: l_middleProxy_01_geo + - first: + 23: 2300026 + second: l_middleProxy_02_geo + - first: + 23: 2300028 + second: l_middleProxy_03_geo + - first: + 23: 2300030 + second: l_pinkyProxy_01_geo + - first: + 23: 2300032 + second: l_pinkyProxy_02_geo + - first: + 23: 2300034 + second: l_pinkyProxy_03_geo + - first: + 23: 2300036 + second: l_ringProxy_01_geo + - first: + 23: 2300038 + second: l_ringProxy_02_geo + - first: + 23: 2300040 + second: l_ringProxy_03_geo + - first: + 23: 2300042 + second: l_shourderProxy_geo + - first: + 23: 2300044 + second: l_thumbProxy_01_geo + - first: + 23: 2300046 + second: l_thumbProxy_02_geo + - first: + 23: 2300048 + second: l_thumbProxy_03_geo + - first: + 23: 2300050 + second: l_UNI_eye + - first: + 23: 2300052 + second: l_wristProxy_geo + - first: + 23: 2300054 + second: neckProxy_geo + - first: + 23: 2300056 + second: pelvisProxy_geo + - first: + 23: 2300058 + second: r_ankleProxy_geo + - first: + 23: 2300060 + second: r_ballProxy_geo + - first: + 23: 2300062 + second: r_clavicleProxy_geo + - first: + 23: 2300064 + second: r_erbowProxy_geo + - first: + 23: 2300066 + second: r_hipProxy_geo + - first: + 23: 2300068 + second: r_indexProxy_01_geo + - first: + 23: 2300070 + second: r_indexProxy_02_geo + - first: + 23: 2300072 + second: r_indexProxy_03_geo + - first: + 23: 2300074 + second: r_kneeProxy_geo + - first: + 23: 2300076 + second: r_middleProxy_01_geo + - first: + 23: 2300078 + second: r_middleProxy_02_geo + - first: + 23: 2300080 + second: r_middleProxy_03_geo + - first: + 23: 2300082 + second: r_pinkyProxy_01_geo + - first: + 23: 2300084 + second: r_pinkyProxy_02_geo + - first: + 23: 2300086 + second: r_pinkyProxy_03_geo + - first: + 23: 2300088 + second: r_ringProxy_01_geo + - first: + 23: 2300090 + second: r_ringProxy_02_geo + - first: + 23: 2300092 + second: r_ringProxy_03_geo + - first: + 23: 2300094 + second: r_shourderProxy_geo + - first: + 23: 2300096 + second: r_thumbProxy_01_geo + - first: + 23: 2300098 + second: r_thumbProxy_02_geo + - first: + 23: 2300100 + second: r_thumbProxy_03_geo + - first: + 23: 2300102 + second: r_UNI_eye + - first: + 23: 2300104 + second: r_wristProxy_geo + - first: + 23: 2300106 + second: spineProxy_geo + - first: + 23: 2300108 + second: UNI_01_Lower_teethProxy + - first: + 23: 2300110 + second: UNI_01_TongueBaseProxy + - first: + 23: 2300112 + second: UNI_01_TongueTipProxy + - first: + 23: 2300114 + second: UNI_01_Upper_teethProxy + - first: + 33: 3300000 + second: chestProxy_geo + - first: + 33: 3300002 + second: headProxy_geo + - first: + 33: 3300004 + second: jawProxy_geo + - first: + 33: 3300006 + second: l_ankleProxy_geo + - first: + 33: 3300008 + second: l_ballProxy_geo + - first: + 33: 3300010 + second: l_clavicleProxy_geo + - first: + 33: 3300012 + second: l_erbowProxy_geo + - first: + 33: 3300014 + second: l_hipProxy_geo + - first: + 33: 3300016 + second: l_indexProxy_01_geo + - first: + 33: 3300018 + second: l_indexProxy_02_geo + - first: + 33: 3300020 + second: l_indexProxy_03_geo + - first: + 33: 3300022 + second: l_kneeProxy_geo + - first: + 33: 3300024 + second: l_middleProxy_01_geo + - first: + 33: 3300026 + second: l_middleProxy_02_geo + - first: + 33: 3300028 + second: l_middleProxy_03_geo + - first: + 33: 3300030 + second: l_pinkyProxy_01_geo + - first: + 33: 3300032 + second: l_pinkyProxy_02_geo + - first: + 33: 3300034 + second: l_pinkyProxy_03_geo + - first: + 33: 3300036 + second: l_ringProxy_01_geo + - first: + 33: 3300038 + second: l_ringProxy_02_geo + - first: + 33: 3300040 + second: l_ringProxy_03_geo + - first: + 33: 3300042 + second: l_shourderProxy_geo + - first: + 33: 3300044 + second: l_thumbProxy_01_geo + - first: + 33: 3300046 + second: l_thumbProxy_02_geo + - first: + 33: 3300048 + second: l_thumbProxy_03_geo + - first: + 33: 3300050 + second: l_UNI_eye + - first: + 33: 3300052 + second: l_wristProxy_geo + - first: + 33: 3300054 + second: neckProxy_geo + - first: + 33: 3300056 + second: pelvisProxy_geo + - first: + 33: 3300058 + second: r_ankleProxy_geo + - first: + 33: 3300060 + second: r_ballProxy_geo + - first: + 33: 3300062 + second: r_clavicleProxy_geo + - first: + 33: 3300064 + second: r_erbowProxy_geo + - first: + 33: 3300066 + second: r_hipProxy_geo + - first: + 33: 3300068 + second: r_indexProxy_01_geo + - first: + 33: 3300070 + second: r_indexProxy_02_geo + - first: + 33: 3300072 + second: r_indexProxy_03_geo + - first: + 33: 3300074 + second: r_kneeProxy_geo + - first: + 33: 3300076 + second: r_middleProxy_01_geo + - first: + 33: 3300078 + second: r_middleProxy_02_geo + - first: + 33: 3300080 + second: r_middleProxy_03_geo + - first: + 33: 3300082 + second: r_pinkyProxy_01_geo + - first: + 33: 3300084 + second: r_pinkyProxy_02_geo + - first: + 33: 3300086 + second: r_pinkyProxy_03_geo + - first: + 33: 3300088 + second: r_ringProxy_01_geo + - first: + 33: 3300090 + second: r_ringProxy_02_geo + - first: + 33: 3300092 + second: r_ringProxy_03_geo + - first: + 33: 3300094 + second: r_shourderProxy_geo + - first: + 33: 3300096 + second: r_thumbProxy_01_geo + - first: + 33: 3300098 + second: r_thumbProxy_02_geo + - first: + 33: 3300100 + second: r_thumbProxy_03_geo + - first: + 33: 3300102 + second: r_UNI_eye + - first: + 33: 3300104 + second: r_wristProxy_geo + - first: + 33: 3300106 + second: spineProxy_geo + - first: + 33: 3300108 + second: UNI_01_Lower_teethProxy + - first: + 33: 3300110 + second: UNI_01_TongueBaseProxy + - first: + 33: 3300112 + second: UNI_01_TongueTipProxy + - first: + 33: 3300114 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300000 + second: l_UNI_eye + - first: + 43: 4300002 + second: r_UNI_eye + - first: + 43: 4300004 + second: UNI_01_TongueBaseProxy + - first: + 43: 4300006 + second: UNI_01_TongueTipProxy + - first: + 43: 4300008 + second: UNI_01_Lower_teethProxy + - first: + 43: 4300010 + second: jawProxy_geo + - first: + 43: 4300012 + second: headProxy_geo + - first: + 43: 4300014 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300016 + second: neckProxy_geo + - first: + 43: 4300018 + second: r_pinkyProxy_03_geo + - first: + 43: 4300020 + second: r_pinkyProxy_02_geo + - first: + 43: 4300022 + second: r_pinkyProxy_01_geo + - first: + 43: 4300024 + second: r_ringProxy_03_geo + - first: + 43: 4300026 + second: r_ringProxy_02_geo + - first: + 43: 4300028 + second: r_ringProxy_01_geo + - first: + 43: 4300030 + second: r_middleProxy_03_geo + - first: + 43: 4300032 + second: r_middleProxy_02_geo + - first: + 43: 4300034 + second: r_middleProxy_01_geo + - first: + 43: 4300036 + second: r_indexProxy_03_geo + - first: + 43: 4300038 + second: r_indexProxy_02_geo + - first: + 43: 4300040 + second: r_indexProxy_01_geo + - first: + 43: 4300042 + second: r_thumbProxy_03_geo + - first: + 43: 4300044 + second: r_thumbProxy_02_geo + - first: + 43: 4300046 + second: r_thumbProxy_01_geo + - first: + 43: 4300048 + second: r_wristProxy_geo + - first: + 43: 4300050 + second: r_erbowProxy_geo + - first: + 43: 4300052 + second: r_shourderProxy_geo + - first: + 43: 4300054 + second: r_clavicleProxy_geo + - first: + 43: 4300056 + second: chestProxy_geo + - first: + 43: 4300058 + second: l_pinkyProxy_03_geo + - first: + 43: 4300060 + second: l_pinkyProxy_02_geo + - first: + 43: 4300062 + second: l_pinkyProxy_01_geo + - first: + 43: 4300064 + second: l_ringProxy_03_geo + - first: + 43: 4300066 + second: l_ringProxy_02_geo + - first: + 43: 4300068 + second: l_ringProxy_01_geo + - first: + 43: 4300070 + second: l_middleProxy_03_geo + - first: + 43: 4300072 + second: l_middleProxy_02_geo + - first: + 43: 4300074 + second: l_middleProxy_01_geo + - first: + 43: 4300076 + second: l_indexProxy_03_geo + - first: + 43: 4300078 + second: l_indexProxy_02_geo + - first: + 43: 4300080 + second: l_indexProxy_01_geo + - first: + 43: 4300082 + second: l_thumbProxy_03_geo + - first: + 43: 4300084 + second: l_thumbProxy_02_geo + - first: + 43: 4300086 + second: l_thumbProxy_01_geo + - first: + 43: 4300088 + second: l_wristProxy_geo + - first: + 43: 4300090 + second: l_erbowProxy_geo + - first: + 43: 4300092 + second: l_shourderProxy_geo + - first: + 43: 4300094 + second: l_clavicleProxy_geo + - first: + 43: 4300096 + second: spineProxy_geo + - first: + 43: 4300098 + second: r_ballProxy_geo + - first: + 43: 4300100 + second: r_ankleProxy_geo + - first: + 43: 4300102 + second: r_kneeProxy_geo + - first: + 43: 4300104 + second: r_hipProxy_geo + - first: + 43: 4300106 + second: pelvisProxy_geo + - first: + 43: 4300108 + second: l_ballProxy_geo + - first: + 43: 4300110 + second: l_ankleProxy_geo + - first: + 43: 4300112 + second: l_kneeProxy_geo + - first: + 43: 4300114 + second: l_hipProxy_geo + - first: + 74: 7400000 + second: HumanoidWalk + - first: + 95: 9500000 + second: //RootNode + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 1 + materialSearch: 2 + materialLocation: 0 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 0 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: + - serializedVersion: 16 + name: HumanoidWalk + takeName: _1_a_U1_M_P_WalkForward_NtrlFaceFwd__Fb_p0_No_0_PJ_3 + internalID: 0 + firstFrame: 215.2 + lastFrame: 244.9 + wrapMode: 0 + orientationOffsetY: 3.3 + level: 0 + cycleOffset: -0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.01 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 0 + importBlendShapes: 0 + importCameras: 0 + importLights: 0 + fileIdsGeneration: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 4 + normalCalculationMode: 0 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: + - boneName: Hips + humanName: Hips + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftUpLeg + humanName: LeftUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightUpLeg + humanName: RightUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftLeg + humanName: LeftLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightLeg + humanName: RightLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftFoot + humanName: LeftFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightFoot + humanName: RightFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Spine + humanName: Spine + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Chest + humanName: Chest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Neck + humanName: Neck + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Head + humanName: Head + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftShoulder + humanName: LeftShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightShoulder + humanName: RightShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftArm + humanName: LeftUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightArm + humanName: RightUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftForeArm + humanName: LeftLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightForeArm + humanName: RightLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHand + humanName: LeftHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHand + humanName: RightHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftToes + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightToes + humanName: RightToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftEye + humanName: LeftEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightEye + humanName: RightEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Jaw + humanName: Jaw + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb1 + humanName: Left Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb2 + humanName: Left Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb3 + humanName: Left Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex1 + humanName: Left Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex2 + humanName: Left Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex3 + humanName: Left Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle1 + humanName: Left Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle2 + humanName: Left Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle3 + humanName: Left Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing1 + humanName: Left Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing2 + humanName: Left Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing3 + humanName: Left Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky1 + humanName: Left Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky2 + humanName: Left Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky3 + humanName: Left Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb1 + humanName: Right Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb2 + humanName: Right Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb3 + humanName: Right Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex1 + humanName: Right Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex2 + humanName: Right Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex3 + humanName: Right Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle1 + humanName: Right Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle2 + humanName: Right Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle3 + humanName: Right Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing1 + humanName: Right Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing2 + humanName: Right Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing3 + humanName: Right Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky1 + humanName: Right Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky2 + humanName: Right Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky3 + humanName: Right Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + skeleton: + - name: HumanoidWalk(Clone) + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Hips + parentName: + position: {x: -0.000000016763806, y: 0.9555335, z: 0.07758622} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftUpLeg + parentName: + position: {x: -0.0754495, y: -0.04566402, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLeg + parentName: + position: {x: -0.020550499, y: -0.40912998, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftFoot + parentName: + position: {x: -0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftToes + parentName: + position: {x: -0.007487, y: -0.0731673, z: 0.14542712} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightUpLeg + parentName: + position: {x: 0.075449534, y: -0.04566399, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLeg + parentName: + position: {x: 0.020550467, y: -0.40913, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightFoot + parentName: + position: {x: 0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightToes + parentName: + position: {x: 0.007487, y: -0.0731673, z: 0.1454275} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Spine + parentName: + position: {x: 2.646978e-25, y: 0.092263184, z: 0.015771331} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Chest + parentName: + position: {x: -0, y: 0.16254029, z: -0.0016560555} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftShoulder + parentName: + position: {x: -0.038285997, y: 0.2216225, z: -0.017063085} + rotation: {x: -0.030223321, y: -0.07990193, z: 0.14446756, w: 0.9858151} + scale: {x: 1, y: 1, z: 1} + - name: LeftArm + parentName: + position: {x: -0.10050205, y: 5.684342e-16, z: -3.330669e-18} + rotation: {x: 0.008133877, y: 0.0757869, z: -0.1321358, w: 0.98829675} + scale: {x: 1, y: 1, z: 1} + - name: LeftForeArm + parentName: + position: {x: -0.2540493, y: 5.684342e-16, z: 1.11022296e-17} + rotation: {x: 0.2781269, y: 0.03635174, z: -0.015607543, w: 0.9597293} + scale: {x: 1, y: 1, z: 1} + - name: LeftHand + parentName: + position: {x: -0.24638927, y: 0, z: -1.9984014e-16} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex1 + parentName: + position: {x: -0.0751258, y: -0.0078414045, z: 0.032652643} + rotation: {x: 0.06495643, y: 0.05091051, z: 0.058088716, w: 0.9948942} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex2 + parentName: + position: {x: -0.03979728, y: 0.000049808405, z: 0.0011857504} + rotation: {x: -0.06737132, y: 0.015346782, z: 0.033307686, w: 0.9970538} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex3 + parentName: + position: {x: -0.027968477, y: -0.000000006281225, z: -0.00000005171866} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle1 + parentName: + position: {x: -0.076023825, y: -0.0018851344, z: 0.010141229} + rotation: {x: -0.09939486, y: 0.04107085, z: 0.09351314, w: 0.9897925} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle2 + parentName: + position: {x: -0.044280436, y: 0.000004798874, z: -0.00042540013} + rotation: {x: -0.012435689, y: -0.0076595433, z: 0.031807605, w: 0.9993873} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle3 + parentName: + position: {x: -0.033964828, y: -0.000000012197929, z: 0.0000000037564827} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky1 + parentName: + position: {x: -0.06565995, y: -0.007825106, z: -0.032251246} + rotation: {x: -0.28387696, y: 0.036568172, z: 0.087664604, w: 0.95414436} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky2 + parentName: + position: {x: -0.030805448, y: -0.000030874573, z: -0.0014480775} + rotation: {x: 0.047048137, y: -0.021200087, z: 0.037495792, w: 0.9979635} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky3 + parentName: + position: {x: -0.023064027, y: -0.0000064025808, z: 0.000000018332095} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing1 + parentName: + position: {x: -0.07030211, y: -0.0037453093, z: -0.011411792} + rotation: {x: -0.10562233, y: 0.056129266, z: 0.08703209, w: 0.988999} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing2 + parentName: + position: {x: -0.043135457, y: -0.000020882308, z: -0.0022351784} + rotation: {x: 0.018426064, y: -0.02561071, z: 0.033295766, w: 0.99894744} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing3 + parentName: + position: {x: -0.030835565, y: 7.7103546e-11, z: -0.00000001649327} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb1 + parentName: + position: {x: -0.014231241, y: -0.012377825, z: 0.025531668} + rotation: {x: -0.14225604, y: -0.055378057, z: -0.12830889, w: 0.979915} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb2 + parentName: + position: {x: -0.016374, y: -0.00529, z: 0.023491409} + rotation: {x: -0.02606398, y: 0.096689634, z: 0.003605904, w: 0.9949668} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb3 + parentName: + position: {x: -0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Neck + parentName: + position: {x: -0, y: 0.2590093, z: -0.032413255} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Head + parentName: + position: {x: -2.646978e-25, y: 0.08307038, z: 0.0113267815} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Jaw + parentName: + position: {x: 1.7347234e-20, y: 0.0111267585, z: 0.010327543} + rotation: {x: 0.21924005, y: -0, z: -0, w: 0.975671} + scale: {x: 1, y: 1, z: 1} + - name: JawEND + parentName: + position: {x: -1.7347234e-20, y: -0.04828876, z: 0.07185171} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipCorner + parentName: + position: {x: -0.032843262, y: -0.01657876, z: 0.066121764} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipLower + parentName: + position: {x: -0.014250817, y: -0.02168876, z: 0.08224063} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipCorner + parentName: + position: {x: 0.03284, y: -0.01657876, z: 0.066118784} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipLower + parentName: + position: {x: 0.014250817, y: -0.02168876, z: 0.082238786} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueBack + parentName: + position: {x: -1.7347234e-20, y: -0.022869369, z: 0.010095409} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueTip + parentName: + position: {x: -1.7347234e-20, y: -0.023278812, z: 0.03832271} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftCheek + parentName: + position: {x: -0.054244027, y: 0.03370195, z: 0.0594304} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEye + parentName: + position: {x: -0.020848233, y: 0.0825027, z: 0.055427432} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidLower + parentName: + position: {x: -0.035618957, y: 0.06507366, z: 0.07623474} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidUpper + parentName: + position: {x: -0.034406897, y: 0.10060814, z: 0.08020531} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftInnerBrow + parentName: + position: {x: -0.012062691, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftIOuterBrow + parentName: + position: {x: -0.05503987, y: 0.11482529, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipUpper + parentName: + position: {x: -0.014501322, y: -0.005111811, z: 0.09461884} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftNostril + parentName: + position: {x: -0.0179, y: 0.026312828, z: 0.0908674} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightCheek + parentName: + position: {x: 0.054239996, y: 0.033702828, z: 0.0594274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEye + parentName: + position: {x: 0.020849999, y: 0.08250283, z: 0.0554274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidLower + parentName: + position: {x: 0.03562, y: 0.06507283, z: 0.0762374} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidUpper + parentName: + position: {x: 0.03441, y: 0.10061283, z: 0.08020739} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightInnerBrow + parentName: + position: {x: 0.012062687, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightIOuterBrow + parentName: + position: {x: 0.055040002, y: 0.11482283, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipUpper + parentName: + position: {x: 0.014501322, y: -0.0051071714, z: 0.094617404} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightNostril + parentName: + position: {x: 0.0179, y: 0.026308905, z: 0.09087062} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightShoulder + parentName: + position: {x: 0.038286015, y: 0.22162114, z: -0.017063085} + rotation: {x: 0.15105928, y: 0.98671633, z: -0.021163033, w: -0.055894263} + scale: {x: 1, y: 1, z: 1} + - name: RightArm + parentName: + position: {x: -0.100501455, y: -0.0000024995522, z: -0.000000051557407} + rotation: {x: 0.12567478, y: 0.98442847, z: 0.062543266, w: 0.105805375} + scale: {x: 1, y: 1, z: 1} + - name: RightForeArm + parentName: + position: {x: 0.25342825, y: 0.006011353, z: -0.016704524} + rotation: {x: 0.26110226, y: 0.01888748, z: -0.030674139, w: 0.96463877} + scale: {x: 1, y: 1, z: 1} + - name: RightHand + parentName: + position: {x: 0.2453737, y: 0.021641772, z: 0.005550465} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex1 + parentName: + position: {x: 0.0747695, y: -0.0012430536, z: 0.034344498} + rotation: {x: 0.06961239, y: 0.11270627, z: -0.010377135, w: 0.99113256} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex2 + parentName: + position: {x: 0.0370584, y: 0.00072612107, z: 0.014538894} + rotation: {x: -0.068798974, y: 0.021605203, z: 0.042188462, w: 0.99650395} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex3 + parentName: + position: {x: 0.025225038, y: -0.0049664653, z: 0.011012146} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle1 + parentName: + position: {x: 0.075647645, y: 0.0047914027, z: 0.011853182} + rotation: {x: -0.092045546, y: 0.020684198, z: -0.060492296, w: 0.9937004} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle2 + parentName: + position: {x: 0.043809064, y: 0.00019418815, z: 0.006454936} + rotation: {x: -0.016959926, y: -0.04367115, z: 0.0809238, w: 0.99561864} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle3 + parentName: + position: {x: 0.03307247, y: -0.007547537, z: 0.0016898462} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky1 + parentName: + position: {x: 0.06680334, y: -0.0019941088, z: -0.030756146} + rotation: {x: -0.28647894, y: -0.21416986, z: 0.021083327, w: 0.9336042} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky2 + parentName: + position: {x: 0.028530842, y: -0.001397143, z: -0.011623796} + rotation: {x: 0.029356524, y: 0.0005622971, z: -0.062125385, w: 0.99763644} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky3 + parentName: + position: {x: 0.02142686, y: -0.00055350893, z: -0.008516608} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing1 + parentName: + position: {x: 0.070598476, y: 0.0024570965, z: -0.009821458} + rotation: {x: -0.10453735, y: -0.1014307, z: -0.025803583, w: 0.9889985} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing2 + parentName: + position: {x: 0.042887185, y: -0.0013753821, z: -0.004945858} + rotation: {x: 0.020977763, y: -0.021642664, z: 0.07535203, w: 0.9967014} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing3 + parentName: + position: {x: 0.029500604, y: -0.0076929354, z: -0.004622256} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb1 + parentName: + position: {x: 0.014684916, y: -0.011104942, z: 0.025858095} + rotation: {x: -0.09941147, y: 0.023245553, z: 0.13084193, w: 0.98613256} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb2 + parentName: + position: {x: 0.016374, y: -0.00529, z: 0.02349136} + rotation: {x: -0.02606267, y: -0.09668537, z: -0.0036059343, w: 0.9949672} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb3 + parentName: + position: {x: 0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 0.01 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalkTurn.fbx b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalkTurn.fbx new file mode 100644 index 000000000..1a84a3dd7 Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalkTurn.fbx differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalkTurn.fbx.meta b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalkTurn.fbx.meta new file mode 100644 index 000000000..e961c46db --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalkTurn.fbx.meta @@ -0,0 +1,2390 @@ +fileFormatVersion: 2 +guid: 1c52c953c83c2254a9fa72d50250f028 +labels: +- ObiCloth +- ObiRope +- ObiSoftbody +ModelImporter: + serializedVersion: 19301 + internalIDToNameTable: + - first: + 1: 100000 + second: Chest + - first: + 1: 100002 + second: chestProxy_geo + - first: + 1: 100004 + second: //RootNode + - first: + 1: 100006 + second: Head + - first: + 1: 100008 + second: headProxy_geo + - first: + 1: 100010 + second: HeadTop_End + - first: + 1: 100012 + second: Hips + - first: + 1: 100014 + second: Jaw + - first: + 1: 100016 + second: JawEND + - first: + 1: 100018 + second: jawProxy_geo + - first: + 1: 100020 + second: l_ankleProxy_geo + - first: + 1: 100022 + second: l_ballProxy_geo + - first: + 1: 100024 + second: l_clavicleProxy_geo + - first: + 1: 100026 + second: l_erbowProxy_geo + - first: + 1: 100028 + second: l_hipProxy_geo + - first: + 1: 100030 + second: l_indexProxy_01_geo + - first: + 1: 100032 + second: l_indexProxy_02_geo + - first: + 1: 100034 + second: l_indexProxy_03_geo + - first: + 1: 100036 + second: l_kneeProxy_geo + - first: + 1: 100038 + second: l_middleProxy_01_geo + - first: + 1: 100040 + second: l_middleProxy_02_geo + - first: + 1: 100042 + second: l_middleProxy_03_geo + - first: + 1: 100044 + second: l_pinkyProxy_01_geo + - first: + 1: 100046 + second: l_pinkyProxy_02_geo + - first: + 1: 100048 + second: l_pinkyProxy_03_geo + - first: + 1: 100050 + second: l_ringProxy_01_geo + - first: + 1: 100052 + second: l_ringProxy_02_geo + - first: + 1: 100054 + second: l_ringProxy_03_geo + - first: + 1: 100056 + second: l_shourderProxy_geo + - first: + 1: 100058 + second: l_thumbProxy_01_geo + - first: + 1: 100060 + second: l_thumbProxy_02_geo + - first: + 1: 100062 + second: l_thumbProxy_03_geo + - first: + 1: 100064 + second: l_UNI_eye + - first: + 1: 100066 + second: l_wristProxy_geo + - first: + 1: 100068 + second: LeftArm + - first: + 1: 100070 + second: LeftCheek + - first: + 1: 100072 + second: LeftEye + - first: + 1: 100074 + second: LeftEyelidLower + - first: + 1: 100076 + second: LeftEyelidUpper + - first: + 1: 100078 + second: LeftFoot + - first: + 1: 100080 + second: LeftForeArm + - first: + 1: 100082 + second: LeftHand + - first: + 1: 100084 + second: LeftHandIndex1 + - first: + 1: 100086 + second: LeftHandIndex13 + - first: + 1: 100088 + second: LeftHandIndex17 + - first: + 1: 100090 + second: LeftHandIndex2 + - first: + 1: 100092 + second: LeftHandIndex3 + - first: + 1: 100094 + second: LeftHandMiddle1 + - first: + 1: 100096 + second: LeftHandMiddle13 + - first: + 1: 100098 + second: LeftHandMiddle17 + - first: + 1: 100100 + second: LeftHandMiddle2 + - first: + 1: 100102 + second: LeftHandMiddle3 + - first: + 1: 100104 + second: LeftHandPinky1 + - first: + 1: 100106 + second: LeftHandPinky13 + - first: + 1: 100108 + second: LeftHandPinky17 + - first: + 1: 100110 + second: LeftHandPinky2 + - first: + 1: 100112 + second: LeftHandPinky3 + - first: + 1: 100114 + second: LeftHandRing1 + - first: + 1: 100116 + second: LeftHandRing13 + - first: + 1: 100118 + second: LeftHandRing17 + - first: + 1: 100120 + second: LeftHandRing2 + - first: + 1: 100122 + second: LeftHandRing3 + - first: + 1: 100124 + second: LeftHandThumb1 + - first: + 1: 100126 + second: LeftHandThumb13 + - first: + 1: 100128 + second: LeftHandThumb17 + - first: + 1: 100130 + second: LeftHandThumb2 + - first: + 1: 100132 + second: LeftHandThumb3 + - first: + 1: 100134 + second: LeftInnerBrow + - first: + 1: 100136 + second: LeftIOuterBrow + - first: + 1: 100138 + second: LeftLeg + - first: + 1: 100140 + second: LeftLipCorner + - first: + 1: 100142 + second: LeftLipLower + - first: + 1: 100144 + second: LeftLipUpper + - first: + 1: 100146 + second: LeftNostril + - first: + 1: 100148 + second: LeftShoulder + - first: + 1: 100150 + second: LeftToes + - first: + 1: 100152 + second: LeftUpLeg + - first: + 1: 100154 + second: LToeBase_End2 + - first: + 1: 100156 + second: LToeBase_End3 + - first: + 1: 100158 + second: Neck + - first: + 1: 100160 + second: neckProxy_geo + - first: + 1: 100162 + second: pelvisProxy_geo + - first: + 1: 100164 + second: r_ankleProxy_geo + - first: + 1: 100166 + second: r_ballProxy_geo + - first: + 1: 100168 + second: r_clavicleProxy_geo + - first: + 1: 100170 + second: r_erbowProxy_geo + - first: + 1: 100172 + second: r_hipProxy_geo + - first: + 1: 100174 + second: r_indexProxy_01_geo + - first: + 1: 100176 + second: r_indexProxy_02_geo + - first: + 1: 100178 + second: r_indexProxy_03_geo + - first: + 1: 100180 + second: r_kneeProxy_geo + - first: + 1: 100182 + second: r_middleProxy_01_geo + - first: + 1: 100184 + second: r_middleProxy_02_geo + - first: + 1: 100186 + second: r_middleProxy_03_geo + - first: + 1: 100188 + second: r_pinkyProxy_01_geo + - first: + 1: 100190 + second: r_pinkyProxy_02_geo + - first: + 1: 100192 + second: r_pinkyProxy_03_geo + - first: + 1: 100194 + second: r_ringProxy_01_geo + - first: + 1: 100196 + second: r_ringProxy_02_geo + - first: + 1: 100198 + second: r_ringProxy_03_geo + - first: + 1: 100200 + second: r_shourderProxy_geo + - first: + 1: 100202 + second: r_thumbProxy_01_geo + - first: + 1: 100204 + second: r_thumbProxy_02_geo + - first: + 1: 100206 + second: r_thumbProxy_03_geo + - first: + 1: 100208 + second: r_UNI_eye + - first: + 1: 100210 + second: r_wristProxy_geo + - first: + 1: 100212 + second: Reference + - first: + 1: 100214 + second: RightArm + - first: + 1: 100216 + second: RightCheek + - first: + 1: 100218 + second: RightEye + - first: + 1: 100220 + second: RightEyelidLower + - first: + 1: 100222 + second: RightEyelidUpper + - first: + 1: 100224 + second: RightFoot + - first: + 1: 100226 + second: RightForeArm + - first: + 1: 100228 + second: RightHand + - first: + 1: 100230 + second: RightHandIndex1 + - first: + 1: 100232 + second: RightHandIndex2 + - first: + 1: 100234 + second: RightHandIndex3 + - first: + 1: 100236 + second: RightHandMiddle1 + - first: + 1: 100238 + second: RightHandMiddle2 + - first: + 1: 100240 + second: RightHandMiddle3 + - first: + 1: 100242 + second: RightHandPinky1 + - first: + 1: 100244 + second: RightHandPinky2 + - first: + 1: 100246 + second: RightHandPinky3 + - first: + 1: 100248 + second: RightHandRing1 + - first: + 1: 100250 + second: RightHandRing2 + - first: + 1: 100252 + second: RightHandRing3 + - first: + 1: 100254 + second: RightHandThumb1 + - first: + 1: 100256 + second: RightHandThumb2 + - first: + 1: 100258 + second: RightHandThumb3 + - first: + 1: 100260 + second: RightInnerBrow + - first: + 1: 100262 + second: RightIOuterBrow + - first: + 1: 100264 + second: RightLeg + - first: + 1: 100266 + second: RightLipCorner + - first: + 1: 100268 + second: RightLipLower + - first: + 1: 100270 + second: RightLipUpper + - first: + 1: 100272 + second: RightNostril + - first: + 1: 100274 + second: RightShoulder + - first: + 1: 100276 + second: RightToes + - first: + 1: 100278 + second: RightUpLeg + - first: + 1: 100280 + second: Spine + - first: + 1: 100282 + second: spineProxy_geo + - first: + 1: 100284 + second: TongueBack + - first: + 1: 100286 + second: TongueTip + - first: + 1: 100288 + second: UNI_01_Lower_teethProxy + - first: + 1: 100290 + second: UNI_01_TongueBaseProxy + - first: + 1: 100292 + second: UNI_01_TongueTipProxy + - first: + 1: 100294 + second: UNI_01_Upper_teethProxy + - first: + 4: 400000 + second: Chest + - first: + 4: 400002 + second: chestProxy_geo + - first: + 4: 400004 + second: //RootNode + - first: + 4: 400006 + second: Head + - first: + 4: 400008 + second: headProxy_geo + - first: + 4: 400010 + second: HeadTop_End + - first: + 4: 400012 + second: Hips + - first: + 4: 400014 + second: Jaw + - first: + 4: 400016 + second: JawEND + - first: + 4: 400018 + second: jawProxy_geo + - first: + 4: 400020 + second: l_ankleProxy_geo + - first: + 4: 400022 + second: l_ballProxy_geo + - first: + 4: 400024 + second: l_clavicleProxy_geo + - first: + 4: 400026 + second: l_erbowProxy_geo + - first: + 4: 400028 + second: l_hipProxy_geo + - first: + 4: 400030 + second: l_indexProxy_01_geo + - first: + 4: 400032 + second: l_indexProxy_02_geo + - first: + 4: 400034 + second: l_indexProxy_03_geo + - first: + 4: 400036 + second: l_kneeProxy_geo + - first: + 4: 400038 + second: l_middleProxy_01_geo + - first: + 4: 400040 + second: l_middleProxy_02_geo + - first: + 4: 400042 + second: l_middleProxy_03_geo + - first: + 4: 400044 + second: l_pinkyProxy_01_geo + - first: + 4: 400046 + second: l_pinkyProxy_02_geo + - first: + 4: 400048 + second: l_pinkyProxy_03_geo + - first: + 4: 400050 + second: l_ringProxy_01_geo + - first: + 4: 400052 + second: l_ringProxy_02_geo + - first: + 4: 400054 + second: l_ringProxy_03_geo + - first: + 4: 400056 + second: l_shourderProxy_geo + - first: + 4: 400058 + second: l_thumbProxy_01_geo + - first: + 4: 400060 + second: l_thumbProxy_02_geo + - first: + 4: 400062 + second: l_thumbProxy_03_geo + - first: + 4: 400064 + second: l_UNI_eye + - first: + 4: 400066 + second: l_wristProxy_geo + - first: + 4: 400068 + second: LeftArm + - first: + 4: 400070 + second: LeftCheek + - first: + 4: 400072 + second: LeftEye + - first: + 4: 400074 + second: LeftEyelidLower + - first: + 4: 400076 + second: LeftEyelidUpper + - first: + 4: 400078 + second: LeftFoot + - first: + 4: 400080 + second: LeftForeArm + - first: + 4: 400082 + second: LeftHand + - first: + 4: 400084 + second: LeftHandIndex1 + - first: + 4: 400086 + second: LeftHandIndex13 + - first: + 4: 400088 + second: LeftHandIndex17 + - first: + 4: 400090 + second: LeftHandIndex2 + - first: + 4: 400092 + second: LeftHandIndex3 + - first: + 4: 400094 + second: LeftHandMiddle1 + - first: + 4: 400096 + second: LeftHandMiddle13 + - first: + 4: 400098 + second: LeftHandMiddle17 + - first: + 4: 400100 + second: LeftHandMiddle2 + - first: + 4: 400102 + second: LeftHandMiddle3 + - first: + 4: 400104 + second: LeftHandPinky1 + - first: + 4: 400106 + second: LeftHandPinky13 + - first: + 4: 400108 + second: LeftHandPinky17 + - first: + 4: 400110 + second: LeftHandPinky2 + - first: + 4: 400112 + second: LeftHandPinky3 + - first: + 4: 400114 + second: LeftHandRing1 + - first: + 4: 400116 + second: LeftHandRing13 + - first: + 4: 400118 + second: LeftHandRing17 + - first: + 4: 400120 + second: LeftHandRing2 + - first: + 4: 400122 + second: LeftHandRing3 + - first: + 4: 400124 + second: LeftHandThumb1 + - first: + 4: 400126 + second: LeftHandThumb13 + - first: + 4: 400128 + second: LeftHandThumb17 + - first: + 4: 400130 + second: LeftHandThumb2 + - first: + 4: 400132 + second: LeftHandThumb3 + - first: + 4: 400134 + second: LeftInnerBrow + - first: + 4: 400136 + second: LeftIOuterBrow + - first: + 4: 400138 + second: LeftLeg + - first: + 4: 400140 + second: LeftLipCorner + - first: + 4: 400142 + second: LeftLipLower + - first: + 4: 400144 + second: LeftLipUpper + - first: + 4: 400146 + second: LeftNostril + - first: + 4: 400148 + second: LeftShoulder + - first: + 4: 400150 + second: LeftToes + - first: + 4: 400152 + second: LeftUpLeg + - first: + 4: 400154 + second: LToeBase_End2 + - first: + 4: 400156 + second: LToeBase_End3 + - first: + 4: 400158 + second: Neck + - first: + 4: 400160 + second: neckProxy_geo + - first: + 4: 400162 + second: pelvisProxy_geo + - first: + 4: 400164 + second: r_ankleProxy_geo + - first: + 4: 400166 + second: r_ballProxy_geo + - first: + 4: 400168 + second: r_clavicleProxy_geo + - first: + 4: 400170 + second: r_erbowProxy_geo + - first: + 4: 400172 + second: r_hipProxy_geo + - first: + 4: 400174 + second: r_indexProxy_01_geo + - first: + 4: 400176 + second: r_indexProxy_02_geo + - first: + 4: 400178 + second: r_indexProxy_03_geo + - first: + 4: 400180 + second: r_kneeProxy_geo + - first: + 4: 400182 + second: r_middleProxy_01_geo + - first: + 4: 400184 + second: r_middleProxy_02_geo + - first: + 4: 400186 + second: r_middleProxy_03_geo + - first: + 4: 400188 + second: r_pinkyProxy_01_geo + - first: + 4: 400190 + second: r_pinkyProxy_02_geo + - first: + 4: 400192 + second: r_pinkyProxy_03_geo + - first: + 4: 400194 + second: r_ringProxy_01_geo + - first: + 4: 400196 + second: r_ringProxy_02_geo + - first: + 4: 400198 + second: r_ringProxy_03_geo + - first: + 4: 400200 + second: r_shourderProxy_geo + - first: + 4: 400202 + second: r_thumbProxy_01_geo + - first: + 4: 400204 + second: r_thumbProxy_02_geo + - first: + 4: 400206 + second: r_thumbProxy_03_geo + - first: + 4: 400208 + second: r_UNI_eye + - first: + 4: 400210 + second: r_wristProxy_geo + - first: + 4: 400212 + second: Reference + - first: + 4: 400214 + second: RightArm + - first: + 4: 400216 + second: RightCheek + - first: + 4: 400218 + second: RightEye + - first: + 4: 400220 + second: RightEyelidLower + - first: + 4: 400222 + second: RightEyelidUpper + - first: + 4: 400224 + second: RightFoot + - first: + 4: 400226 + second: RightForeArm + - first: + 4: 400228 + second: RightHand + - first: + 4: 400230 + second: RightHandIndex1 + - first: + 4: 400232 + second: RightHandIndex2 + - first: + 4: 400234 + second: RightHandIndex3 + - first: + 4: 400236 + second: RightHandMiddle1 + - first: + 4: 400238 + second: RightHandMiddle2 + - first: + 4: 400240 + second: RightHandMiddle3 + - first: + 4: 400242 + second: RightHandPinky1 + - first: + 4: 400244 + second: RightHandPinky2 + - first: + 4: 400246 + second: RightHandPinky3 + - first: + 4: 400248 + second: RightHandRing1 + - first: + 4: 400250 + second: RightHandRing2 + - first: + 4: 400252 + second: RightHandRing3 + - first: + 4: 400254 + second: RightHandThumb1 + - first: + 4: 400256 + second: RightHandThumb2 + - first: + 4: 400258 + second: RightHandThumb3 + - first: + 4: 400260 + second: RightInnerBrow + - first: + 4: 400262 + second: RightIOuterBrow + - first: + 4: 400264 + second: RightLeg + - first: + 4: 400266 + second: RightLipCorner + - first: + 4: 400268 + second: RightLipLower + - first: + 4: 400270 + second: RightLipUpper + - first: + 4: 400272 + second: RightNostril + - first: + 4: 400274 + second: RightShoulder + - first: + 4: 400276 + second: RightToes + - first: + 4: 400278 + second: RightUpLeg + - first: + 4: 400280 + second: Spine + - first: + 4: 400282 + second: spineProxy_geo + - first: + 4: 400284 + second: TongueBack + - first: + 4: 400286 + second: TongueTip + - first: + 4: 400288 + second: UNI_01_Lower_teethProxy + - first: + 4: 400290 + second: UNI_01_TongueBaseProxy + - first: + 4: 400292 + second: UNI_01_TongueTipProxy + - first: + 4: 400294 + second: UNI_01_Upper_teethProxy + - first: + 23: 2300000 + second: chestProxy_geo + - first: + 23: 2300002 + second: headProxy_geo + - first: + 23: 2300004 + second: jawProxy_geo + - first: + 23: 2300006 + second: l_ankleProxy_geo + - first: + 23: 2300008 + second: l_ballProxy_geo + - first: + 23: 2300010 + second: l_clavicleProxy_geo + - first: + 23: 2300012 + second: l_erbowProxy_geo + - first: + 23: 2300014 + second: l_hipProxy_geo + - first: + 23: 2300016 + second: l_indexProxy_01_geo + - first: + 23: 2300018 + second: l_indexProxy_02_geo + - first: + 23: 2300020 + second: l_indexProxy_03_geo + - first: + 23: 2300022 + second: l_kneeProxy_geo + - first: + 23: 2300024 + second: l_middleProxy_01_geo + - first: + 23: 2300026 + second: l_middleProxy_02_geo + - first: + 23: 2300028 + second: l_middleProxy_03_geo + - first: + 23: 2300030 + second: l_pinkyProxy_01_geo + - first: + 23: 2300032 + second: l_pinkyProxy_02_geo + - first: + 23: 2300034 + second: l_pinkyProxy_03_geo + - first: + 23: 2300036 + second: l_ringProxy_01_geo + - first: + 23: 2300038 + second: l_ringProxy_02_geo + - first: + 23: 2300040 + second: l_ringProxy_03_geo + - first: + 23: 2300042 + second: l_shourderProxy_geo + - first: + 23: 2300044 + second: l_thumbProxy_01_geo + - first: + 23: 2300046 + second: l_thumbProxy_02_geo + - first: + 23: 2300048 + second: l_thumbProxy_03_geo + - first: + 23: 2300050 + second: l_UNI_eye + - first: + 23: 2300052 + second: l_wristProxy_geo + - first: + 23: 2300054 + second: neckProxy_geo + - first: + 23: 2300056 + second: pelvisProxy_geo + - first: + 23: 2300058 + second: r_ankleProxy_geo + - first: + 23: 2300060 + second: r_ballProxy_geo + - first: + 23: 2300062 + second: r_clavicleProxy_geo + - first: + 23: 2300064 + second: r_erbowProxy_geo + - first: + 23: 2300066 + second: r_hipProxy_geo + - first: + 23: 2300068 + second: r_indexProxy_01_geo + - first: + 23: 2300070 + second: r_indexProxy_02_geo + - first: + 23: 2300072 + second: r_indexProxy_03_geo + - first: + 23: 2300074 + second: r_kneeProxy_geo + - first: + 23: 2300076 + second: r_middleProxy_01_geo + - first: + 23: 2300078 + second: r_middleProxy_02_geo + - first: + 23: 2300080 + second: r_middleProxy_03_geo + - first: + 23: 2300082 + second: r_pinkyProxy_01_geo + - first: + 23: 2300084 + second: r_pinkyProxy_02_geo + - first: + 23: 2300086 + second: r_pinkyProxy_03_geo + - first: + 23: 2300088 + second: r_ringProxy_01_geo + - first: + 23: 2300090 + second: r_ringProxy_02_geo + - first: + 23: 2300092 + second: r_ringProxy_03_geo + - first: + 23: 2300094 + second: r_shourderProxy_geo + - first: + 23: 2300096 + second: r_thumbProxy_01_geo + - first: + 23: 2300098 + second: r_thumbProxy_02_geo + - first: + 23: 2300100 + second: r_thumbProxy_03_geo + - first: + 23: 2300102 + second: r_UNI_eye + - first: + 23: 2300104 + second: r_wristProxy_geo + - first: + 23: 2300106 + second: spineProxy_geo + - first: + 23: 2300108 + second: UNI_01_Lower_teethProxy + - first: + 23: 2300110 + second: UNI_01_TongueBaseProxy + - first: + 23: 2300112 + second: UNI_01_TongueTipProxy + - first: + 23: 2300114 + second: UNI_01_Upper_teethProxy + - first: + 33: 3300000 + second: chestProxy_geo + - first: + 33: 3300002 + second: headProxy_geo + - first: + 33: 3300004 + second: jawProxy_geo + - first: + 33: 3300006 + second: l_ankleProxy_geo + - first: + 33: 3300008 + second: l_ballProxy_geo + - first: + 33: 3300010 + second: l_clavicleProxy_geo + - first: + 33: 3300012 + second: l_erbowProxy_geo + - first: + 33: 3300014 + second: l_hipProxy_geo + - first: + 33: 3300016 + second: l_indexProxy_01_geo + - first: + 33: 3300018 + second: l_indexProxy_02_geo + - first: + 33: 3300020 + second: l_indexProxy_03_geo + - first: + 33: 3300022 + second: l_kneeProxy_geo + - first: + 33: 3300024 + second: l_middleProxy_01_geo + - first: + 33: 3300026 + second: l_middleProxy_02_geo + - first: + 33: 3300028 + second: l_middleProxy_03_geo + - first: + 33: 3300030 + second: l_pinkyProxy_01_geo + - first: + 33: 3300032 + second: l_pinkyProxy_02_geo + - first: + 33: 3300034 + second: l_pinkyProxy_03_geo + - first: + 33: 3300036 + second: l_ringProxy_01_geo + - first: + 33: 3300038 + second: l_ringProxy_02_geo + - first: + 33: 3300040 + second: l_ringProxy_03_geo + - first: + 33: 3300042 + second: l_shourderProxy_geo + - first: + 33: 3300044 + second: l_thumbProxy_01_geo + - first: + 33: 3300046 + second: l_thumbProxy_02_geo + - first: + 33: 3300048 + second: l_thumbProxy_03_geo + - first: + 33: 3300050 + second: l_UNI_eye + - first: + 33: 3300052 + second: l_wristProxy_geo + - first: + 33: 3300054 + second: neckProxy_geo + - first: + 33: 3300056 + second: pelvisProxy_geo + - first: + 33: 3300058 + second: r_ankleProxy_geo + - first: + 33: 3300060 + second: r_ballProxy_geo + - first: + 33: 3300062 + second: r_clavicleProxy_geo + - first: + 33: 3300064 + second: r_erbowProxy_geo + - first: + 33: 3300066 + second: r_hipProxy_geo + - first: + 33: 3300068 + second: r_indexProxy_01_geo + - first: + 33: 3300070 + second: r_indexProxy_02_geo + - first: + 33: 3300072 + second: r_indexProxy_03_geo + - first: + 33: 3300074 + second: r_kneeProxy_geo + - first: + 33: 3300076 + second: r_middleProxy_01_geo + - first: + 33: 3300078 + second: r_middleProxy_02_geo + - first: + 33: 3300080 + second: r_middleProxy_03_geo + - first: + 33: 3300082 + second: r_pinkyProxy_01_geo + - first: + 33: 3300084 + second: r_pinkyProxy_02_geo + - first: + 33: 3300086 + second: r_pinkyProxy_03_geo + - first: + 33: 3300088 + second: r_ringProxy_01_geo + - first: + 33: 3300090 + second: r_ringProxy_02_geo + - first: + 33: 3300092 + second: r_ringProxy_03_geo + - first: + 33: 3300094 + second: r_shourderProxy_geo + - first: + 33: 3300096 + second: r_thumbProxy_01_geo + - first: + 33: 3300098 + second: r_thumbProxy_02_geo + - first: + 33: 3300100 + second: r_thumbProxy_03_geo + - first: + 33: 3300102 + second: r_UNI_eye + - first: + 33: 3300104 + second: r_wristProxy_geo + - first: + 33: 3300106 + second: spineProxy_geo + - first: + 33: 3300108 + second: UNI_01_Lower_teethProxy + - first: + 33: 3300110 + second: UNI_01_TongueBaseProxy + - first: + 33: 3300112 + second: UNI_01_TongueTipProxy + - first: + 33: 3300114 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300000 + second: l_UNI_eye + - first: + 43: 4300002 + second: r_UNI_eye + - first: + 43: 4300004 + second: UNI_01_TongueBaseProxy + - first: + 43: 4300006 + second: UNI_01_TongueTipProxy + - first: + 43: 4300008 + second: UNI_01_Lower_teethProxy + - first: + 43: 4300010 + second: jawProxy_geo + - first: + 43: 4300012 + second: headProxy_geo + - first: + 43: 4300014 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300016 + second: neckProxy_geo + - first: + 43: 4300018 + second: r_pinkyProxy_03_geo + - first: + 43: 4300020 + second: r_pinkyProxy_02_geo + - first: + 43: 4300022 + second: r_pinkyProxy_01_geo + - first: + 43: 4300024 + second: r_ringProxy_03_geo + - first: + 43: 4300026 + second: r_ringProxy_02_geo + - first: + 43: 4300028 + second: r_ringProxy_01_geo + - first: + 43: 4300030 + second: r_middleProxy_03_geo + - first: + 43: 4300032 + second: r_middleProxy_02_geo + - first: + 43: 4300034 + second: r_middleProxy_01_geo + - first: + 43: 4300036 + second: r_indexProxy_03_geo + - first: + 43: 4300038 + second: r_indexProxy_02_geo + - first: + 43: 4300040 + second: r_indexProxy_01_geo + - first: + 43: 4300042 + second: r_thumbProxy_03_geo + - first: + 43: 4300044 + second: r_thumbProxy_02_geo + - first: + 43: 4300046 + second: r_thumbProxy_01_geo + - first: + 43: 4300048 + second: r_wristProxy_geo + - first: + 43: 4300050 + second: r_erbowProxy_geo + - first: + 43: 4300052 + second: r_shourderProxy_geo + - first: + 43: 4300054 + second: r_clavicleProxy_geo + - first: + 43: 4300056 + second: chestProxy_geo + - first: + 43: 4300058 + second: l_pinkyProxy_03_geo + - first: + 43: 4300060 + second: l_pinkyProxy_02_geo + - first: + 43: 4300062 + second: l_pinkyProxy_01_geo + - first: + 43: 4300064 + second: l_ringProxy_03_geo + - first: + 43: 4300066 + second: l_ringProxy_02_geo + - first: + 43: 4300068 + second: l_ringProxy_01_geo + - first: + 43: 4300070 + second: l_middleProxy_03_geo + - first: + 43: 4300072 + second: l_middleProxy_02_geo + - first: + 43: 4300074 + second: l_middleProxy_01_geo + - first: + 43: 4300076 + second: l_indexProxy_03_geo + - first: + 43: 4300078 + second: l_indexProxy_02_geo + - first: + 43: 4300080 + second: l_indexProxy_01_geo + - first: + 43: 4300082 + second: l_thumbProxy_03_geo + - first: + 43: 4300084 + second: l_thumbProxy_02_geo + - first: + 43: 4300086 + second: l_thumbProxy_01_geo + - first: + 43: 4300088 + second: l_wristProxy_geo + - first: + 43: 4300090 + second: l_erbowProxy_geo + - first: + 43: 4300092 + second: l_shourderProxy_geo + - first: + 43: 4300094 + second: l_clavicleProxy_geo + - first: + 43: 4300096 + second: spineProxy_geo + - first: + 43: 4300098 + second: r_ballProxy_geo + - first: + 43: 4300100 + second: r_ankleProxy_geo + - first: + 43: 4300102 + second: r_kneeProxy_geo + - first: + 43: 4300104 + second: r_hipProxy_geo + - first: + 43: 4300106 + second: pelvisProxy_geo + - first: + 43: 4300108 + second: l_ballProxy_geo + - first: + 43: 4300110 + second: l_ankleProxy_geo + - first: + 43: 4300112 + second: l_kneeProxy_geo + - first: + 43: 4300114 + second: l_hipProxy_geo + - first: + 74: 7400000 + second: HumanoidWalkRight + - first: + 74: 7400002 + second: HumanoidWalkLeft + - first: + 95: 9500000 + second: //RootNode + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 1 + materialSearch: 2 + materialLocation: 0 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 0 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: + - serializedVersion: 16 + name: HumanoidWalkRight + takeName: _7_a_U1_M_P_WalkForwardTurnRight_NtrlMedium__Fb_Dia2m_No_0_PJ_1 + internalID: 0 + firstFrame: 90.6 + lastFrame: 122.100006 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidWalkLeft + takeName: _7_a_U1_M_P_WalkForwardTurnRight_NtrlMedium__Fb_Dia2m_No_0_PJ_1 + internalID: 0 + firstFrame: 90.6 + lastFrame: 122.100006 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0.5 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 1 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.01 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 0 + importBlendShapes: 0 + importCameras: 0 + importLights: 0 + fileIdsGeneration: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 4 + normalCalculationMode: 0 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: + - boneName: Hips + humanName: Hips + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftUpLeg + humanName: LeftUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightUpLeg + humanName: RightUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftLeg + humanName: LeftLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightLeg + humanName: RightLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftFoot + humanName: LeftFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightFoot + humanName: RightFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Spine + humanName: Spine + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Chest + humanName: Chest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Neck + humanName: Neck + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Head + humanName: Head + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftShoulder + humanName: LeftShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightShoulder + humanName: RightShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftArm + humanName: LeftUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightArm + humanName: RightUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftForeArm + humanName: LeftLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightForeArm + humanName: RightLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHand + humanName: LeftHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHand + humanName: RightHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftToes + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightToes + humanName: RightToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftEye + humanName: LeftEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightEye + humanName: RightEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Jaw + humanName: Jaw + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb1 + humanName: Left Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb2 + humanName: Left Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb3 + humanName: Left Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex1 + humanName: Left Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex2 + humanName: Left Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex3 + humanName: Left Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle1 + humanName: Left Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle2 + humanName: Left Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle3 + humanName: Left Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing1 + humanName: Left Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing2 + humanName: Left Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing3 + humanName: Left Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky1 + humanName: Left Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky2 + humanName: Left Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky3 + humanName: Left Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb1 + humanName: Right Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb2 + humanName: Right Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb3 + humanName: Right Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex1 + humanName: Right Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex2 + humanName: Right Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex3 + humanName: Right Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle1 + humanName: Right Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle2 + humanName: Right Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle3 + humanName: Right Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing1 + humanName: Right Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing2 + humanName: Right Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing3 + humanName: Right Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky1 + humanName: Right Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky2 + humanName: Right Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky3 + humanName: Right Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + skeleton: + - name: WalkTurn(Clone) + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Hips + parentName: + position: {x: 0, y: 0.9782808, z: -0.045451436} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftUpLeg + parentName: + position: {x: -0.0754495, y: -0.04566402, z: -2.3092638e-16} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLeg + parentName: + position: {x: -0.020550499, y: -0.40912998, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftFoot + parentName: + position: {x: -0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftToes + parentName: + position: {x: -0.007487, y: -0.0731673, z: 0.14542712} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightUpLeg + parentName: + position: {x: 0.075449534, y: -0.04566399, z: -1.3322676e-16} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLeg + parentName: + position: {x: 0.020550467, y: -0.40913, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightFoot + parentName: + position: {x: 0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightToes + parentName: + position: {x: 0.007487, y: -0.0731673, z: 0.1454275} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Spine + parentName: + position: {x: 1.7053025e-15, y: 0.092263184, z: 0.015771331} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Chest + parentName: + position: {x: 1.7053025e-15, y: 0.16254029, z: -0.0016560555} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftShoulder + parentName: + position: {x: -0.038285997, y: 0.2216225, z: -0.017063085} + rotation: {x: -0.014780899, y: -0.053877532, z: 0.15670198, w: 0.98606455} + scale: {x: 1, y: 1, z: 1} + - name: LeftArm + parentName: + position: {x: -0.10050205, y: 0.0000000011250816, z: -1.9039127e-10} + rotation: {x: 0.03141278, y: 0.043795884, z: -0.14558221, w: 0.9878771} + scale: {x: 1, y: 1, z: 1} + - name: LeftForeArm + parentName: + position: {x: -0.2540493, y: -1.055497e-10, z: 1.0919795e-10} + rotation: {x: 0.2138381, y: 0.030593958, z: -0.020187572, w: 0.9761812} + scale: {x: 1, y: 1, z: 1} + - name: LeftHand + parentName: + position: {x: -0.24638927, y: -1.1472764e-10, z: 1.3349108e-11} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex1 + parentName: + position: {x: -0.0751258, y: -0.0078414045, z: 0.032652643} + rotation: {x: -0.03558774, y: 0.020389726, z: 0.089161284, w: 0.99517244} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex2 + parentName: + position: {x: -0.03979728, y: 0.000049808412, z: 0.0011857506} + rotation: {x: -0.067650035, y: 0.014701021, z: 0.028210353, w: 0.99720186} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex3 + parentName: + position: {x: -0.027968477, y: -0.000000006416343, z: -0.00000005143489} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle1 + parentName: + position: {x: -0.076023825, y: -0.0018851344, z: 0.010141229} + rotation: {x: -0.020244015, y: 0.055550523, z: 0.08745734, w: 0.9944121} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle2 + parentName: + position: {x: -0.044280436, y: 0.00000479887, z: -0.00042540062} + rotation: {x: -0.0149214305, y: -0.0065138866, z: 0.027123254, w: 0.9994995} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle3 + parentName: + position: {x: -0.033964828, y: -0.000000012184269, z: 0.000000003752577} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky1 + parentName: + position: {x: -0.06565995, y: -0.007825106, z: -0.032251246} + rotation: {x: -0.049060635, y: 0.076078266, z: 0.08648037, w: 0.99213225} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky2 + parentName: + position: {x: -0.030805448, y: -0.000030874577, z: -0.0014480774} + rotation: {x: 0.049549215, y: -0.021816673, z: 0.03286592, w: 0.9979924} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky3 + parentName: + position: {x: -0.023064027, y: -0.0000064026085, z: 0.000000017908386} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing1 + parentName: + position: {x: -0.07030211, y: -0.0037453093, z: -0.011411792} + rotation: {x: -0.016150942, y: 0.075054824, z: 0.085394524, w: 0.993385} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing2 + parentName: + position: {x: -0.043135457, y: -0.000020882293, z: -0.0022351781} + rotation: {x: 0.01906182, y: -0.025674986, z: 0.02892741, w: 0.9990699} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing3 + parentName: + position: {x: -0.030835565, y: 1.581688e-10, z: -0.000000016455479} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb1 + parentName: + position: {x: -0.014231241, y: -0.012377825, z: 0.025531668} + rotation: {x: -0.1294202, y: -0.055187356, z: -0.11992889, w: 0.98276234} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb2 + parentName: + position: {x: -0.016374, y: -0.00529, z: 0.023491409} + rotation: {x: -0.026062468, y: 0.0966898, z: 0.0036073886, w: 0.99496675} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb3 + parentName: + position: {x: -0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Neck + parentName: + position: {x: -2.8421708e-15, y: 0.25900927, z: -0.032413255} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Head + parentName: + position: {x: -5.684342e-16, y: 0.08307038, z: 0.0113267815} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Jaw + parentName: + position: {x: 1.7347234e-20, y: 0.0111267585, z: 0.010327543} + rotation: {x: 0.21924005, y: -0, z: -0, w: 0.975671} + scale: {x: 1, y: 1, z: 1} + - name: JawEND + parentName: + position: {x: -1.7347234e-20, y: -0.04828876, z: 0.07185171} + rotation: {x: 3.469447e-18, y: -3.2526065e-18, z: -1.1284746e-35, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipCorner + parentName: + position: {x: -0.032843262, y: -0.01657876, z: 0.066121764} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipLower + parentName: + position: {x: -0.014250817, y: -0.02168876, z: 0.08224063} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipCorner + parentName: + position: {x: 0.03284, y: -0.01657876, z: 0.066118784} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipLower + parentName: + position: {x: 0.014250817, y: -0.02168876, z: 0.082238786} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueBack + parentName: + position: {x: -1.7347234e-20, y: -0.022869369, z: 0.010095409} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueTip + parentName: + position: {x: -1.7347234e-20, y: -0.023278812, z: 0.03832271} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftCheek + parentName: + position: {x: -0.054244027, y: 0.03370195, z: 0.0594304} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEye + parentName: + position: {x: -0.020848233, y: 0.0825027, z: 0.055427432} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidLower + parentName: + position: {x: -0.035618957, y: 0.06507366, z: 0.07623474} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidUpper + parentName: + position: {x: -0.034406897, y: 0.10060814, z: 0.08020531} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftInnerBrow + parentName: + position: {x: -0.012062691, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftIOuterBrow + parentName: + position: {x: -0.05503987, y: 0.11482529, z: 0.061777398} + rotation: {x: 3.469447e-18, y: -3.2526065e-18, z: -1.1284746e-35, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipUpper + parentName: + position: {x: -0.014501322, y: -0.005111811, z: 0.09461884} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftNostril + parentName: + position: {x: -0.0179, y: 0.026312828, z: 0.0908674} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightCheek + parentName: + position: {x: 0.054239996, y: 0.033702828, z: 0.0594274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEye + parentName: + position: {x: 0.020849999, y: 0.08250283, z: 0.0554274} + rotation: {x: 3.469447e-18, y: -3.2526065e-18, z: -1.1284746e-35, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidLower + parentName: + position: {x: 0.03562, y: 0.06507283, z: 0.0762374} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidUpper + parentName: + position: {x: 0.03441, y: 0.10061283, z: 0.08020739} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightInnerBrow + parentName: + position: {x: 0.012062687, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightIOuterBrow + parentName: + position: {x: 0.055040002, y: 0.11482283, z: 0.061777398} + rotation: {x: 3.469447e-18, y: -3.2526065e-18, z: -1.1284746e-35, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipUpper + parentName: + position: {x: 0.014501322, y: -0.0051071714, z: 0.094617404} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightNostril + parentName: + position: {x: 0.0179, y: 0.026308905, z: 0.09087062} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightShoulder + parentName: + position: {x: 0.038286015, y: 0.22162113, z: -0.017063085} + rotation: {x: 0.16122636, y: 0.9867778, z: -0.0002643192, w: -0.016603537} + scale: {x: 1, y: 1, z: 1} + - name: RightArm + parentName: + position: {x: -0.100501455, y: -0.0000024966455, z: -0.00000005228366} + rotation: {x: 0.13713856, y: 0.9851734, z: 0.07691797, w: 0.06862926} + scale: {x: 1, y: 1, z: 1} + - name: RightForeArm + parentName: + position: {x: 0.25342825, y: 0.006011353, z: -0.016704524} + rotation: {x: 0.23739819, y: 0.023930306, z: -0.013097738, w: 0.9710293} + scale: {x: 1, y: 1, z: 1} + - name: RightHand + parentName: + position: {x: 0.2453737, y: 0.021641772, z: 0.005550465} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex1 + parentName: + position: {x: 0.0747695, y: -0.0012430536, z: 0.034344498} + rotation: {x: -0.019314297, y: 0.1444856, z: -0.055293795, w: 0.987772} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex2 + parentName: + position: {x: 0.0370584, y: 0.00072612107, z: 0.014538894} + rotation: {x: -0.062630616, y: 0.021789895, z: 0.049249142, w: 0.9965828} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex3 + parentName: + position: {x: 0.025225038, y: -0.0049664653, z: 0.011012146} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle1 + parentName: + position: {x: 0.075647645, y: 0.0047914027, z: 0.011853182} + rotation: {x: -0.008315965, y: 0.013731318, z: -0.04642232, w: 0.99879295} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle2 + parentName: + position: {x: 0.043809064, y: 0.00019418815, z: 0.006454936} + rotation: {x: -0.018755376, y: -0.044460867, z: 0.0846684, w: 0.99524003} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle3 + parentName: + position: {x: 0.03307247, y: -0.007547537, z: 0.0016898462} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky1 + parentName: + position: {x: 0.06680334, y: -0.0019941085, z: -0.030756146} + rotation: {x: -0.0065329643, y: -0.25065178, z: -0.016728282, w: 0.9679107} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky2 + parentName: + position: {x: 0.028530842, y: -0.001397143, z: -0.011623796} + rotation: {x: 0.033051, y: 0.0009490215, z: -0.0588754, w: 0.9977176} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky3 + parentName: + position: {x: 0.02142686, y: -0.00055350893, z: -0.008516608} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing1 + parentName: + position: {x: 0.070598476, y: 0.0024570967, z: -0.009821458} + rotation: {x: -0.012160714, y: -0.11751543, z: -0.025448363, w: 0.9926705} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing2 + parentName: + position: {x: 0.042887185, y: -0.0013753821, z: -0.0049458584} + rotation: {x: 0.022298764, y: -0.021766106, z: 0.07946584, w: 0.9963505} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing3 + parentName: + position: {x: 0.029500604, y: -0.0076929354, z: -0.004622256} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb1 + parentName: + position: {x: 0.014684916, y: -0.011104942, z: 0.025858095} + rotation: {x: -0.10160934, y: 0.031173073, z: 0.1044878, w: 0.98883075} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb2 + parentName: + position: {x: 0.016374, y: -0.00529, z: 0.02349136} + rotation: {x: -0.026062857, y: -0.096691586, z: -0.003607643, w: 0.99496657} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb3 + parentName: + position: {x: 0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 0.01 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalkTurnSharp.fbx b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalkTurnSharp.fbx new file mode 100644 index 000000000..39425acdc Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalkTurnSharp.fbx differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalkTurnSharp.fbx.meta b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalkTurnSharp.fbx.meta new file mode 100644 index 000000000..e677c2921 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Animations/HumanoidWalkTurnSharp.fbx.meta @@ -0,0 +1,2390 @@ +fileFormatVersion: 2 +guid: bb141fc9a700c9c4ca7e6dadb8acf24b +labels: +- ObiCloth +- ObiRope +- ObiSoftbody +ModelImporter: + serializedVersion: 19301 + internalIDToNameTable: + - first: + 1: 100000 + second: Chest + - first: + 1: 100002 + second: chestProxy_geo + - first: + 1: 100004 + second: //RootNode + - first: + 1: 100006 + second: Head + - first: + 1: 100008 + second: headProxy_geo + - first: + 1: 100010 + second: HeadTop_End + - first: + 1: 100012 + second: Hips + - first: + 1: 100014 + second: Jaw + - first: + 1: 100016 + second: JawEND + - first: + 1: 100018 + second: jawProxy_geo + - first: + 1: 100020 + second: l_ankleProxy_geo + - first: + 1: 100022 + second: l_ballProxy_geo + - first: + 1: 100024 + second: l_clavicleProxy_geo + - first: + 1: 100026 + second: l_erbowProxy_geo + - first: + 1: 100028 + second: l_hipProxy_geo + - first: + 1: 100030 + second: l_indexProxy_01_geo + - first: + 1: 100032 + second: l_indexProxy_02_geo + - first: + 1: 100034 + second: l_indexProxy_03_geo + - first: + 1: 100036 + second: l_kneeProxy_geo + - first: + 1: 100038 + second: l_middleProxy_01_geo + - first: + 1: 100040 + second: l_middleProxy_02_geo + - first: + 1: 100042 + second: l_middleProxy_03_geo + - first: + 1: 100044 + second: l_pinkyProxy_01_geo + - first: + 1: 100046 + second: l_pinkyProxy_02_geo + - first: + 1: 100048 + second: l_pinkyProxy_03_geo + - first: + 1: 100050 + second: l_ringProxy_01_geo + - first: + 1: 100052 + second: l_ringProxy_02_geo + - first: + 1: 100054 + second: l_ringProxy_03_geo + - first: + 1: 100056 + second: l_shourderProxy_geo + - first: + 1: 100058 + second: l_thumbProxy_01_geo + - first: + 1: 100060 + second: l_thumbProxy_02_geo + - first: + 1: 100062 + second: l_thumbProxy_03_geo + - first: + 1: 100064 + second: l_UNI_eye + - first: + 1: 100066 + second: l_wristProxy_geo + - first: + 1: 100068 + second: LeftArm + - first: + 1: 100070 + second: LeftCheek + - first: + 1: 100072 + second: LeftEye + - first: + 1: 100074 + second: LeftEyelidLower + - first: + 1: 100076 + second: LeftEyelidUpper + - first: + 1: 100078 + second: LeftFoot + - first: + 1: 100080 + second: LeftForeArm + - first: + 1: 100082 + second: LeftHand + - first: + 1: 100084 + second: LeftHandIndex1 + - first: + 1: 100086 + second: LeftHandIndex13 + - first: + 1: 100088 + second: LeftHandIndex17 + - first: + 1: 100090 + second: LeftHandIndex2 + - first: + 1: 100092 + second: LeftHandIndex3 + - first: + 1: 100094 + second: LeftHandMiddle1 + - first: + 1: 100096 + second: LeftHandMiddle13 + - first: + 1: 100098 + second: LeftHandMiddle17 + - first: + 1: 100100 + second: LeftHandMiddle2 + - first: + 1: 100102 + second: LeftHandMiddle3 + - first: + 1: 100104 + second: LeftHandPinky1 + - first: + 1: 100106 + second: LeftHandPinky13 + - first: + 1: 100108 + second: LeftHandPinky17 + - first: + 1: 100110 + second: LeftHandPinky2 + - first: + 1: 100112 + second: LeftHandPinky3 + - first: + 1: 100114 + second: LeftHandRing1 + - first: + 1: 100116 + second: LeftHandRing13 + - first: + 1: 100118 + second: LeftHandRing17 + - first: + 1: 100120 + second: LeftHandRing2 + - first: + 1: 100122 + second: LeftHandRing3 + - first: + 1: 100124 + second: LeftHandThumb1 + - first: + 1: 100126 + second: LeftHandThumb13 + - first: + 1: 100128 + second: LeftHandThumb17 + - first: + 1: 100130 + second: LeftHandThumb2 + - first: + 1: 100132 + second: LeftHandThumb3 + - first: + 1: 100134 + second: LeftInnerBrow + - first: + 1: 100136 + second: LeftIOuterBrow + - first: + 1: 100138 + second: LeftLeg + - first: + 1: 100140 + second: LeftLipCorner + - first: + 1: 100142 + second: LeftLipLower + - first: + 1: 100144 + second: LeftLipUpper + - first: + 1: 100146 + second: LeftNostril + - first: + 1: 100148 + second: LeftShoulder + - first: + 1: 100150 + second: LeftToes + - first: + 1: 100152 + second: LeftUpLeg + - first: + 1: 100154 + second: LToeBase_End2 + - first: + 1: 100156 + second: LToeBase_End3 + - first: + 1: 100158 + second: Neck + - first: + 1: 100160 + second: neckProxy_geo + - first: + 1: 100162 + second: pelvisProxy_geo + - first: + 1: 100164 + second: r_ankleProxy_geo + - first: + 1: 100166 + second: r_ballProxy_geo + - first: + 1: 100168 + second: r_clavicleProxy_geo + - first: + 1: 100170 + second: r_erbowProxy_geo + - first: + 1: 100172 + second: r_hipProxy_geo + - first: + 1: 100174 + second: r_indexProxy_01_geo + - first: + 1: 100176 + second: r_indexProxy_02_geo + - first: + 1: 100178 + second: r_indexProxy_03_geo + - first: + 1: 100180 + second: r_kneeProxy_geo + - first: + 1: 100182 + second: r_middleProxy_01_geo + - first: + 1: 100184 + second: r_middleProxy_02_geo + - first: + 1: 100186 + second: r_middleProxy_03_geo + - first: + 1: 100188 + second: r_pinkyProxy_01_geo + - first: + 1: 100190 + second: r_pinkyProxy_02_geo + - first: + 1: 100192 + second: r_pinkyProxy_03_geo + - first: + 1: 100194 + second: r_ringProxy_01_geo + - first: + 1: 100196 + second: r_ringProxy_02_geo + - first: + 1: 100198 + second: r_ringProxy_03_geo + - first: + 1: 100200 + second: r_shourderProxy_geo + - first: + 1: 100202 + second: r_thumbProxy_01_geo + - first: + 1: 100204 + second: r_thumbProxy_02_geo + - first: + 1: 100206 + second: r_thumbProxy_03_geo + - first: + 1: 100208 + second: r_UNI_eye + - first: + 1: 100210 + second: r_wristProxy_geo + - first: + 1: 100212 + second: Reference + - first: + 1: 100214 + second: RightArm + - first: + 1: 100216 + second: RightCheek + - first: + 1: 100218 + second: RightEye + - first: + 1: 100220 + second: RightEyelidLower + - first: + 1: 100222 + second: RightEyelidUpper + - first: + 1: 100224 + second: RightFoot + - first: + 1: 100226 + second: RightForeArm + - first: + 1: 100228 + second: RightHand + - first: + 1: 100230 + second: RightHandIndex1 + - first: + 1: 100232 + second: RightHandIndex2 + - first: + 1: 100234 + second: RightHandIndex3 + - first: + 1: 100236 + second: RightHandMiddle1 + - first: + 1: 100238 + second: RightHandMiddle2 + - first: + 1: 100240 + second: RightHandMiddle3 + - first: + 1: 100242 + second: RightHandPinky1 + - first: + 1: 100244 + second: RightHandPinky2 + - first: + 1: 100246 + second: RightHandPinky3 + - first: + 1: 100248 + second: RightHandRing1 + - first: + 1: 100250 + second: RightHandRing2 + - first: + 1: 100252 + second: RightHandRing3 + - first: + 1: 100254 + second: RightHandThumb1 + - first: + 1: 100256 + second: RightHandThumb2 + - first: + 1: 100258 + second: RightHandThumb3 + - first: + 1: 100260 + second: RightInnerBrow + - first: + 1: 100262 + second: RightIOuterBrow + - first: + 1: 100264 + second: RightLeg + - first: + 1: 100266 + second: RightLipCorner + - first: + 1: 100268 + second: RightLipLower + - first: + 1: 100270 + second: RightLipUpper + - first: + 1: 100272 + second: RightNostril + - first: + 1: 100274 + second: RightShoulder + - first: + 1: 100276 + second: RightToes + - first: + 1: 100278 + second: RightUpLeg + - first: + 1: 100280 + second: Spine + - first: + 1: 100282 + second: spineProxy_geo + - first: + 1: 100284 + second: TongueBack + - first: + 1: 100286 + second: TongueTip + - first: + 1: 100288 + second: UNI_01_Lower_teethProxy + - first: + 1: 100290 + second: UNI_01_TongueBaseProxy + - first: + 1: 100292 + second: UNI_01_TongueTipProxy + - first: + 1: 100294 + second: UNI_01_Upper_teethProxy + - first: + 4: 400000 + second: Chest + - first: + 4: 400002 + second: chestProxy_geo + - first: + 4: 400004 + second: //RootNode + - first: + 4: 400006 + second: Head + - first: + 4: 400008 + second: headProxy_geo + - first: + 4: 400010 + second: HeadTop_End + - first: + 4: 400012 + second: Hips + - first: + 4: 400014 + second: Jaw + - first: + 4: 400016 + second: JawEND + - first: + 4: 400018 + second: jawProxy_geo + - first: + 4: 400020 + second: l_ankleProxy_geo + - first: + 4: 400022 + second: l_ballProxy_geo + - first: + 4: 400024 + second: l_clavicleProxy_geo + - first: + 4: 400026 + second: l_erbowProxy_geo + - first: + 4: 400028 + second: l_hipProxy_geo + - first: + 4: 400030 + second: l_indexProxy_01_geo + - first: + 4: 400032 + second: l_indexProxy_02_geo + - first: + 4: 400034 + second: l_indexProxy_03_geo + - first: + 4: 400036 + second: l_kneeProxy_geo + - first: + 4: 400038 + second: l_middleProxy_01_geo + - first: + 4: 400040 + second: l_middleProxy_02_geo + - first: + 4: 400042 + second: l_middleProxy_03_geo + - first: + 4: 400044 + second: l_pinkyProxy_01_geo + - first: + 4: 400046 + second: l_pinkyProxy_02_geo + - first: + 4: 400048 + second: l_pinkyProxy_03_geo + - first: + 4: 400050 + second: l_ringProxy_01_geo + - first: + 4: 400052 + second: l_ringProxy_02_geo + - first: + 4: 400054 + second: l_ringProxy_03_geo + - first: + 4: 400056 + second: l_shourderProxy_geo + - first: + 4: 400058 + second: l_thumbProxy_01_geo + - first: + 4: 400060 + second: l_thumbProxy_02_geo + - first: + 4: 400062 + second: l_thumbProxy_03_geo + - first: + 4: 400064 + second: l_UNI_eye + - first: + 4: 400066 + second: l_wristProxy_geo + - first: + 4: 400068 + second: LeftArm + - first: + 4: 400070 + second: LeftCheek + - first: + 4: 400072 + second: LeftEye + - first: + 4: 400074 + second: LeftEyelidLower + - first: + 4: 400076 + second: LeftEyelidUpper + - first: + 4: 400078 + second: LeftFoot + - first: + 4: 400080 + second: LeftForeArm + - first: + 4: 400082 + second: LeftHand + - first: + 4: 400084 + second: LeftHandIndex1 + - first: + 4: 400086 + second: LeftHandIndex13 + - first: + 4: 400088 + second: LeftHandIndex17 + - first: + 4: 400090 + second: LeftHandIndex2 + - first: + 4: 400092 + second: LeftHandIndex3 + - first: + 4: 400094 + second: LeftHandMiddle1 + - first: + 4: 400096 + second: LeftHandMiddle13 + - first: + 4: 400098 + second: LeftHandMiddle17 + - first: + 4: 400100 + second: LeftHandMiddle2 + - first: + 4: 400102 + second: LeftHandMiddle3 + - first: + 4: 400104 + second: LeftHandPinky1 + - first: + 4: 400106 + second: LeftHandPinky13 + - first: + 4: 400108 + second: LeftHandPinky17 + - first: + 4: 400110 + second: LeftHandPinky2 + - first: + 4: 400112 + second: LeftHandPinky3 + - first: + 4: 400114 + second: LeftHandRing1 + - first: + 4: 400116 + second: LeftHandRing13 + - first: + 4: 400118 + second: LeftHandRing17 + - first: + 4: 400120 + second: LeftHandRing2 + - first: + 4: 400122 + second: LeftHandRing3 + - first: + 4: 400124 + second: LeftHandThumb1 + - first: + 4: 400126 + second: LeftHandThumb13 + - first: + 4: 400128 + second: LeftHandThumb17 + - first: + 4: 400130 + second: LeftHandThumb2 + - first: + 4: 400132 + second: LeftHandThumb3 + - first: + 4: 400134 + second: LeftInnerBrow + - first: + 4: 400136 + second: LeftIOuterBrow + - first: + 4: 400138 + second: LeftLeg + - first: + 4: 400140 + second: LeftLipCorner + - first: + 4: 400142 + second: LeftLipLower + - first: + 4: 400144 + second: LeftLipUpper + - first: + 4: 400146 + second: LeftNostril + - first: + 4: 400148 + second: LeftShoulder + - first: + 4: 400150 + second: LeftToes + - first: + 4: 400152 + second: LeftUpLeg + - first: + 4: 400154 + second: LToeBase_End2 + - first: + 4: 400156 + second: LToeBase_End3 + - first: + 4: 400158 + second: Neck + - first: + 4: 400160 + second: neckProxy_geo + - first: + 4: 400162 + second: pelvisProxy_geo + - first: + 4: 400164 + second: r_ankleProxy_geo + - first: + 4: 400166 + second: r_ballProxy_geo + - first: + 4: 400168 + second: r_clavicleProxy_geo + - first: + 4: 400170 + second: r_erbowProxy_geo + - first: + 4: 400172 + second: r_hipProxy_geo + - first: + 4: 400174 + second: r_indexProxy_01_geo + - first: + 4: 400176 + second: r_indexProxy_02_geo + - first: + 4: 400178 + second: r_indexProxy_03_geo + - first: + 4: 400180 + second: r_kneeProxy_geo + - first: + 4: 400182 + second: r_middleProxy_01_geo + - first: + 4: 400184 + second: r_middleProxy_02_geo + - first: + 4: 400186 + second: r_middleProxy_03_geo + - first: + 4: 400188 + second: r_pinkyProxy_01_geo + - first: + 4: 400190 + second: r_pinkyProxy_02_geo + - first: + 4: 400192 + second: r_pinkyProxy_03_geo + - first: + 4: 400194 + second: r_ringProxy_01_geo + - first: + 4: 400196 + second: r_ringProxy_02_geo + - first: + 4: 400198 + second: r_ringProxy_03_geo + - first: + 4: 400200 + second: r_shourderProxy_geo + - first: + 4: 400202 + second: r_thumbProxy_01_geo + - first: + 4: 400204 + second: r_thumbProxy_02_geo + - first: + 4: 400206 + second: r_thumbProxy_03_geo + - first: + 4: 400208 + second: r_UNI_eye + - first: + 4: 400210 + second: r_wristProxy_geo + - first: + 4: 400212 + second: Reference + - first: + 4: 400214 + second: RightArm + - first: + 4: 400216 + second: RightCheek + - first: + 4: 400218 + second: RightEye + - first: + 4: 400220 + second: RightEyelidLower + - first: + 4: 400222 + second: RightEyelidUpper + - first: + 4: 400224 + second: RightFoot + - first: + 4: 400226 + second: RightForeArm + - first: + 4: 400228 + second: RightHand + - first: + 4: 400230 + second: RightHandIndex1 + - first: + 4: 400232 + second: RightHandIndex2 + - first: + 4: 400234 + second: RightHandIndex3 + - first: + 4: 400236 + second: RightHandMiddle1 + - first: + 4: 400238 + second: RightHandMiddle2 + - first: + 4: 400240 + second: RightHandMiddle3 + - first: + 4: 400242 + second: RightHandPinky1 + - first: + 4: 400244 + second: RightHandPinky2 + - first: + 4: 400246 + second: RightHandPinky3 + - first: + 4: 400248 + second: RightHandRing1 + - first: + 4: 400250 + second: RightHandRing2 + - first: + 4: 400252 + second: RightHandRing3 + - first: + 4: 400254 + second: RightHandThumb1 + - first: + 4: 400256 + second: RightHandThumb2 + - first: + 4: 400258 + second: RightHandThumb3 + - first: + 4: 400260 + second: RightInnerBrow + - first: + 4: 400262 + second: RightIOuterBrow + - first: + 4: 400264 + second: RightLeg + - first: + 4: 400266 + second: RightLipCorner + - first: + 4: 400268 + second: RightLipLower + - first: + 4: 400270 + second: RightLipUpper + - first: + 4: 400272 + second: RightNostril + - first: + 4: 400274 + second: RightShoulder + - first: + 4: 400276 + second: RightToes + - first: + 4: 400278 + second: RightUpLeg + - first: + 4: 400280 + second: Spine + - first: + 4: 400282 + second: spineProxy_geo + - first: + 4: 400284 + second: TongueBack + - first: + 4: 400286 + second: TongueTip + - first: + 4: 400288 + second: UNI_01_Lower_teethProxy + - first: + 4: 400290 + second: UNI_01_TongueBaseProxy + - first: + 4: 400292 + second: UNI_01_TongueTipProxy + - first: + 4: 400294 + second: UNI_01_Upper_teethProxy + - first: + 23: 2300000 + second: chestProxy_geo + - first: + 23: 2300002 + second: headProxy_geo + - first: + 23: 2300004 + second: jawProxy_geo + - first: + 23: 2300006 + second: l_ankleProxy_geo + - first: + 23: 2300008 + second: l_ballProxy_geo + - first: + 23: 2300010 + second: l_clavicleProxy_geo + - first: + 23: 2300012 + second: l_erbowProxy_geo + - first: + 23: 2300014 + second: l_hipProxy_geo + - first: + 23: 2300016 + second: l_indexProxy_01_geo + - first: + 23: 2300018 + second: l_indexProxy_02_geo + - first: + 23: 2300020 + second: l_indexProxy_03_geo + - first: + 23: 2300022 + second: l_kneeProxy_geo + - first: + 23: 2300024 + second: l_middleProxy_01_geo + - first: + 23: 2300026 + second: l_middleProxy_02_geo + - first: + 23: 2300028 + second: l_middleProxy_03_geo + - first: + 23: 2300030 + second: l_pinkyProxy_01_geo + - first: + 23: 2300032 + second: l_pinkyProxy_02_geo + - first: + 23: 2300034 + second: l_pinkyProxy_03_geo + - first: + 23: 2300036 + second: l_ringProxy_01_geo + - first: + 23: 2300038 + second: l_ringProxy_02_geo + - first: + 23: 2300040 + second: l_ringProxy_03_geo + - first: + 23: 2300042 + second: l_shourderProxy_geo + - first: + 23: 2300044 + second: l_thumbProxy_01_geo + - first: + 23: 2300046 + second: l_thumbProxy_02_geo + - first: + 23: 2300048 + second: l_thumbProxy_03_geo + - first: + 23: 2300050 + second: l_UNI_eye + - first: + 23: 2300052 + second: l_wristProxy_geo + - first: + 23: 2300054 + second: neckProxy_geo + - first: + 23: 2300056 + second: pelvisProxy_geo + - first: + 23: 2300058 + second: r_ankleProxy_geo + - first: + 23: 2300060 + second: r_ballProxy_geo + - first: + 23: 2300062 + second: r_clavicleProxy_geo + - first: + 23: 2300064 + second: r_erbowProxy_geo + - first: + 23: 2300066 + second: r_hipProxy_geo + - first: + 23: 2300068 + second: r_indexProxy_01_geo + - first: + 23: 2300070 + second: r_indexProxy_02_geo + - first: + 23: 2300072 + second: r_indexProxy_03_geo + - first: + 23: 2300074 + second: r_kneeProxy_geo + - first: + 23: 2300076 + second: r_middleProxy_01_geo + - first: + 23: 2300078 + second: r_middleProxy_02_geo + - first: + 23: 2300080 + second: r_middleProxy_03_geo + - first: + 23: 2300082 + second: r_pinkyProxy_01_geo + - first: + 23: 2300084 + second: r_pinkyProxy_02_geo + - first: + 23: 2300086 + second: r_pinkyProxy_03_geo + - first: + 23: 2300088 + second: r_ringProxy_01_geo + - first: + 23: 2300090 + second: r_ringProxy_02_geo + - first: + 23: 2300092 + second: r_ringProxy_03_geo + - first: + 23: 2300094 + second: r_shourderProxy_geo + - first: + 23: 2300096 + second: r_thumbProxy_01_geo + - first: + 23: 2300098 + second: r_thumbProxy_02_geo + - first: + 23: 2300100 + second: r_thumbProxy_03_geo + - first: + 23: 2300102 + second: r_UNI_eye + - first: + 23: 2300104 + second: r_wristProxy_geo + - first: + 23: 2300106 + second: spineProxy_geo + - first: + 23: 2300108 + second: UNI_01_Lower_teethProxy + - first: + 23: 2300110 + second: UNI_01_TongueBaseProxy + - first: + 23: 2300112 + second: UNI_01_TongueTipProxy + - first: + 23: 2300114 + second: UNI_01_Upper_teethProxy + - first: + 33: 3300000 + second: chestProxy_geo + - first: + 33: 3300002 + second: headProxy_geo + - first: + 33: 3300004 + second: jawProxy_geo + - first: + 33: 3300006 + second: l_ankleProxy_geo + - first: + 33: 3300008 + second: l_ballProxy_geo + - first: + 33: 3300010 + second: l_clavicleProxy_geo + - first: + 33: 3300012 + second: l_erbowProxy_geo + - first: + 33: 3300014 + second: l_hipProxy_geo + - first: + 33: 3300016 + second: l_indexProxy_01_geo + - first: + 33: 3300018 + second: l_indexProxy_02_geo + - first: + 33: 3300020 + second: l_indexProxy_03_geo + - first: + 33: 3300022 + second: l_kneeProxy_geo + - first: + 33: 3300024 + second: l_middleProxy_01_geo + - first: + 33: 3300026 + second: l_middleProxy_02_geo + - first: + 33: 3300028 + second: l_middleProxy_03_geo + - first: + 33: 3300030 + second: l_pinkyProxy_01_geo + - first: + 33: 3300032 + second: l_pinkyProxy_02_geo + - first: + 33: 3300034 + second: l_pinkyProxy_03_geo + - first: + 33: 3300036 + second: l_ringProxy_01_geo + - first: + 33: 3300038 + second: l_ringProxy_02_geo + - first: + 33: 3300040 + second: l_ringProxy_03_geo + - first: + 33: 3300042 + second: l_shourderProxy_geo + - first: + 33: 3300044 + second: l_thumbProxy_01_geo + - first: + 33: 3300046 + second: l_thumbProxy_02_geo + - first: + 33: 3300048 + second: l_thumbProxy_03_geo + - first: + 33: 3300050 + second: l_UNI_eye + - first: + 33: 3300052 + second: l_wristProxy_geo + - first: + 33: 3300054 + second: neckProxy_geo + - first: + 33: 3300056 + second: pelvisProxy_geo + - first: + 33: 3300058 + second: r_ankleProxy_geo + - first: + 33: 3300060 + second: r_ballProxy_geo + - first: + 33: 3300062 + second: r_clavicleProxy_geo + - first: + 33: 3300064 + second: r_erbowProxy_geo + - first: + 33: 3300066 + second: r_hipProxy_geo + - first: + 33: 3300068 + second: r_indexProxy_01_geo + - first: + 33: 3300070 + second: r_indexProxy_02_geo + - first: + 33: 3300072 + second: r_indexProxy_03_geo + - first: + 33: 3300074 + second: r_kneeProxy_geo + - first: + 33: 3300076 + second: r_middleProxy_01_geo + - first: + 33: 3300078 + second: r_middleProxy_02_geo + - first: + 33: 3300080 + second: r_middleProxy_03_geo + - first: + 33: 3300082 + second: r_pinkyProxy_01_geo + - first: + 33: 3300084 + second: r_pinkyProxy_02_geo + - first: + 33: 3300086 + second: r_pinkyProxy_03_geo + - first: + 33: 3300088 + second: r_ringProxy_01_geo + - first: + 33: 3300090 + second: r_ringProxy_02_geo + - first: + 33: 3300092 + second: r_ringProxy_03_geo + - first: + 33: 3300094 + second: r_shourderProxy_geo + - first: + 33: 3300096 + second: r_thumbProxy_01_geo + - first: + 33: 3300098 + second: r_thumbProxy_02_geo + - first: + 33: 3300100 + second: r_thumbProxy_03_geo + - first: + 33: 3300102 + second: r_UNI_eye + - first: + 33: 3300104 + second: r_wristProxy_geo + - first: + 33: 3300106 + second: spineProxy_geo + - first: + 33: 3300108 + second: UNI_01_Lower_teethProxy + - first: + 33: 3300110 + second: UNI_01_TongueBaseProxy + - first: + 33: 3300112 + second: UNI_01_TongueTipProxy + - first: + 33: 3300114 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300000 + second: l_UNI_eye + - first: + 43: 4300002 + second: r_UNI_eye + - first: + 43: 4300004 + second: UNI_01_TongueBaseProxy + - first: + 43: 4300006 + second: UNI_01_TongueTipProxy + - first: + 43: 4300008 + second: UNI_01_Lower_teethProxy + - first: + 43: 4300010 + second: jawProxy_geo + - first: + 43: 4300012 + second: headProxy_geo + - first: + 43: 4300014 + second: UNI_01_Upper_teethProxy + - first: + 43: 4300016 + second: neckProxy_geo + - first: + 43: 4300018 + second: r_pinkyProxy_03_geo + - first: + 43: 4300020 + second: r_pinkyProxy_02_geo + - first: + 43: 4300022 + second: r_pinkyProxy_01_geo + - first: + 43: 4300024 + second: r_ringProxy_03_geo + - first: + 43: 4300026 + second: r_ringProxy_02_geo + - first: + 43: 4300028 + second: r_ringProxy_01_geo + - first: + 43: 4300030 + second: r_middleProxy_03_geo + - first: + 43: 4300032 + second: r_middleProxy_02_geo + - first: + 43: 4300034 + second: r_middleProxy_01_geo + - first: + 43: 4300036 + second: r_indexProxy_03_geo + - first: + 43: 4300038 + second: r_indexProxy_02_geo + - first: + 43: 4300040 + second: r_indexProxy_01_geo + - first: + 43: 4300042 + second: r_thumbProxy_03_geo + - first: + 43: 4300044 + second: r_thumbProxy_02_geo + - first: + 43: 4300046 + second: r_thumbProxy_01_geo + - first: + 43: 4300048 + second: r_wristProxy_geo + - first: + 43: 4300050 + second: r_erbowProxy_geo + - first: + 43: 4300052 + second: r_shourderProxy_geo + - first: + 43: 4300054 + second: r_clavicleProxy_geo + - first: + 43: 4300056 + second: chestProxy_geo + - first: + 43: 4300058 + second: l_pinkyProxy_03_geo + - first: + 43: 4300060 + second: l_pinkyProxy_02_geo + - first: + 43: 4300062 + second: l_pinkyProxy_01_geo + - first: + 43: 4300064 + second: l_ringProxy_03_geo + - first: + 43: 4300066 + second: l_ringProxy_02_geo + - first: + 43: 4300068 + second: l_ringProxy_01_geo + - first: + 43: 4300070 + second: l_middleProxy_03_geo + - first: + 43: 4300072 + second: l_middleProxy_02_geo + - first: + 43: 4300074 + second: l_middleProxy_01_geo + - first: + 43: 4300076 + second: l_indexProxy_03_geo + - first: + 43: 4300078 + second: l_indexProxy_02_geo + - first: + 43: 4300080 + second: l_indexProxy_01_geo + - first: + 43: 4300082 + second: l_thumbProxy_03_geo + - first: + 43: 4300084 + second: l_thumbProxy_02_geo + - first: + 43: 4300086 + second: l_thumbProxy_01_geo + - first: + 43: 4300088 + second: l_wristProxy_geo + - first: + 43: 4300090 + second: l_erbowProxy_geo + - first: + 43: 4300092 + second: l_shourderProxy_geo + - first: + 43: 4300094 + second: l_clavicleProxy_geo + - first: + 43: 4300096 + second: spineProxy_geo + - first: + 43: 4300098 + second: r_ballProxy_geo + - first: + 43: 4300100 + second: r_ankleProxy_geo + - first: + 43: 4300102 + second: r_kneeProxy_geo + - first: + 43: 4300104 + second: r_hipProxy_geo + - first: + 43: 4300106 + second: pelvisProxy_geo + - first: + 43: 4300108 + second: l_ballProxy_geo + - first: + 43: 4300110 + second: l_ankleProxy_geo + - first: + 43: 4300112 + second: l_kneeProxy_geo + - first: + 43: 4300114 + second: l_hipProxy_geo + - first: + 74: 7400000 + second: HumanoidWalkLeftSharp + - first: + 74: 7400002 + second: HumanoidWalkRightSharp + - first: + 95: 9500000 + second: //RootNode + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 1 + materialSearch: 2 + materialLocation: 0 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 0 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: + - serializedVersion: 16 + name: HumanoidWalkRightSharp + takeName: _8_a_U1_M_P_WalkForwardTurnRight_NtrlShort__Fb_Dia1m_No_0_PJ_4 + internalID: 0 + firstFrame: 53.3 + lastFrame: 84 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: HumanoidWalkLeftSharp + takeName: _8_a_U1_M_P_WalkForwardTurnRight_NtrlShort__Fb_Dia1m_No_0_PJ_4 + internalID: 0 + firstFrame: 53.3 + lastFrame: 84 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0.5 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 0 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 1 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.01 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 0 + importBlendShapes: 0 + importCameras: 0 + importLights: 0 + fileIdsGeneration: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 4 + normalCalculationMode: 0 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: + - boneName: Hips + humanName: Hips + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftUpLeg + humanName: LeftUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightUpLeg + humanName: RightUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftLeg + humanName: LeftLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightLeg + humanName: RightLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftFoot + humanName: LeftFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightFoot + humanName: RightFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Spine + humanName: Spine + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Chest + humanName: Chest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Neck + humanName: Neck + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Head + humanName: Head + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftShoulder + humanName: LeftShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightShoulder + humanName: RightShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftArm + humanName: LeftUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightArm + humanName: RightUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftForeArm + humanName: LeftLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightForeArm + humanName: RightLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHand + humanName: LeftHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHand + humanName: RightHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftToes + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightToes + humanName: RightToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftEye + humanName: LeftEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightEye + humanName: RightEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Jaw + humanName: Jaw + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb1 + humanName: Left Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb2 + humanName: Left Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandThumb3 + humanName: Left Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex1 + humanName: Left Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex2 + humanName: Left Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandIndex3 + humanName: Left Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle1 + humanName: Left Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle2 + humanName: Left Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandMiddle3 + humanName: Left Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing1 + humanName: Left Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing2 + humanName: Left Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandRing3 + humanName: Left Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky1 + humanName: Left Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky2 + humanName: Left Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinky3 + humanName: Left Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb1 + humanName: Right Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb2 + humanName: Right Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandThumb3 + humanName: Right Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex1 + humanName: Right Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex2 + humanName: Right Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandIndex3 + humanName: Right Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle1 + humanName: Right Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle2 + humanName: Right Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandMiddle3 + humanName: Right Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing1 + humanName: Right Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing2 + humanName: Right Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandRing3 + humanName: Right Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky1 + humanName: Right Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky2 + humanName: Right Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinky3 + humanName: Right Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + skeleton: + - name: WalkTurnSharp(Clone) + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Hips + parentName: + position: {x: 0, y: 0.95167994, z: -0.073406816} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftUpLeg + parentName: + position: {x: -0.0754495, y: -0.04566402, z: -7.105427e-17} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLeg + parentName: + position: {x: -0.020550499, y: -0.40912998, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftFoot + parentName: + position: {x: -0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftToes + parentName: + position: {x: -0.007487, y: -0.0731673, z: 0.14542712} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightUpLeg + parentName: + position: {x: 0.075449534, y: -0.04566399, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLeg + parentName: + position: {x: 0.020550467, y: -0.40913, z: -0.00071864796} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightFoot + parentName: + position: {x: 0.0051529994, y: -0.4231559, z: -0.027648851} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightToes + parentName: + position: {x: 0.007487, y: -0.0731673, z: 0.1454275} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Spine + parentName: + position: {x: 1.4210854e-16, y: 0.092263184, z: 0.015771331} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Chest + parentName: + position: {x: -1.4210854e-16, y: 0.16254029, z: -0.0016560555} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftShoulder + parentName: + position: {x: -0.038285997, y: 0.2216225, z: -0.017063085} + rotation: {x: -0.022165498, y: -0.0647571, z: 0.15094495, w: 0.9861698} + scale: {x: 1, y: 1, z: 1} + - name: LeftArm + parentName: + position: {x: -0.10050205, y: 8.541559e-10, z: -3.6972544e-10} + rotation: {x: 0.010641967, y: 0.062022235, z: -0.139523, w: 0.9882173} + scale: {x: 1, y: 1, z: 1} + - name: LeftForeArm + parentName: + position: {x: -0.2540493, y: -2.9039143e-10, z: 1.8922097e-10} + rotation: {x: 0.19119534, y: 0.032087654, z: -0.015048732, w: 0.980912} + scale: {x: 1, y: 1, z: 1} + - name: LeftHand + parentName: + position: {x: -0.24638927, y: -2.0438051e-10, z: -2.7640466e-11} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex1 + parentName: + position: {x: -0.0751258, y: -0.0078414045, z: 0.032652643} + rotation: {x: -0.035588086, y: 0.020389626, z: 0.08915915, w: 0.9951726} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex2 + parentName: + position: {x: -0.03979728, y: 0.00004980843, z: 0.0011857506} + rotation: {x: -0.06762017, y: 0.014689805, z: 0.028207673, w: 0.9972041} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandIndex3 + parentName: + position: {x: -0.027968477, y: -0.0000000063262027, z: -0.000000051393457} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle1 + parentName: + position: {x: -0.076023825, y: -0.0018851345, z: 0.010141229} + rotation: {x: -0.02024377, y: 0.055550635, z: 0.08745954, w: 0.994412} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle2 + parentName: + position: {x: -0.044280436, y: 0.000004798866, z: -0.00042540042} + rotation: {x: -0.014866803, y: -0.0065064044, z: 0.027121624, w: 0.9995004} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandMiddle3 + parentName: + position: {x: -0.033964828, y: -0.0000000123281945, z: 0.0000000038019885} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky1 + parentName: + position: {x: -0.06565995, y: -0.007825106, z: -0.032251246} + rotation: {x: -0.049060743, y: 0.07607814, z: 0.086479686, w: 0.99213225} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky2 + parentName: + position: {x: -0.030805448, y: -0.00003087459, z: -0.001448077} + rotation: {x: 0.04950535, y: -0.021817304, z: 0.032864355, w: 0.9979946} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandPinky3 + parentName: + position: {x: -0.023064027, y: -0.000006402613, z: 0.000000018158808} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing1 + parentName: + position: {x: -0.07030211, y: -0.0037453093, z: -0.011411792} + rotation: {x: -0.016150927, y: 0.0750549, z: 0.085395254, w: 0.9933849} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing2 + parentName: + position: {x: -0.043135457, y: -0.000020882313, z: -0.0022351781} + rotation: {x: 0.01906184, y: -0.025675246, z: 0.02892732, w: 0.9990699} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandRing3 + parentName: + position: {x: -0.030835565, y: 1.1914608e-10, z: -0.000000016427922} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb1 + parentName: + position: {x: -0.014231241, y: -0.012377825, z: 0.025531668} + rotation: {x: -0.10308842, y: -0.04570537, z: -0.09480341, w: 0.98908854} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb2 + parentName: + position: {x: -0.016374, y: -0.00529, z: 0.023491409} + rotation: {x: -0.02606165, y: 0.09668822, z: 0.003608051, w: 0.9949669} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumb3 + parentName: + position: {x: -0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Neck + parentName: + position: {x: -1.4210854e-16, y: 0.2590093, z: -0.032413255} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Head + parentName: + position: {x: -4.2632563e-16, y: 0.08307038, z: 0.0113267815} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Jaw + parentName: + position: {x: 1.7347234e-20, y: 0.0111267585, z: 0.010327543} + rotation: {x: 0.21924005, y: -0, z: -0, w: 0.975671} + scale: {x: 1, y: 1, z: 1} + - name: JawEND + parentName: + position: {x: -1.7347234e-20, y: -0.04828876, z: 0.07185171} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipCorner + parentName: + position: {x: -0.032843262, y: -0.01657876, z: 0.066121764} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipLower + parentName: + position: {x: -0.014250817, y: -0.02168876, z: 0.08224063} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipCorner + parentName: + position: {x: 0.03284, y: -0.01657876, z: 0.066118784} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipLower + parentName: + position: {x: 0.014250817, y: -0.02168876, z: 0.082238786} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueBack + parentName: + position: {x: -1.7347234e-20, y: -0.022869369, z: 0.010095409} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: TongueTip + parentName: + position: {x: -1.7347234e-20, y: -0.023278812, z: 0.03832271} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftCheek + parentName: + position: {x: -0.054244027, y: 0.03370195, z: 0.0594304} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEye + parentName: + position: {x: -0.020848233, y: 0.0825027, z: 0.055427432} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidLower + parentName: + position: {x: -0.035618957, y: 0.06507366, z: 0.07623474} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftEyelidUpper + parentName: + position: {x: -0.034406897, y: 0.10060814, z: 0.08020531} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftInnerBrow + parentName: + position: {x: -0.012062691, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftIOuterBrow + parentName: + position: {x: -0.05503987, y: 0.11482529, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLipUpper + parentName: + position: {x: -0.014501322, y: -0.005111811, z: 0.09461884} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftNostril + parentName: + position: {x: -0.0179, y: 0.026312828, z: 0.0908674} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightCheek + parentName: + position: {x: 0.054239996, y: 0.033702828, z: 0.0594274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEye + parentName: + position: {x: 0.020849999, y: 0.08250283, z: 0.0554274} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidLower + parentName: + position: {x: 0.03562, y: 0.06507283, z: 0.0762374} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightEyelidUpper + parentName: + position: {x: 0.03441, y: 0.10061283, z: 0.08020739} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightInnerBrow + parentName: + position: {x: 0.012062687, y: 0.118765265, z: 0.093466826} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightIOuterBrow + parentName: + position: {x: 0.055040002, y: 0.11482283, z: 0.061777398} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLipUpper + parentName: + position: {x: 0.014501322, y: -0.0051071714, z: 0.094617404} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightNostril + parentName: + position: {x: 0.0179, y: 0.026308905, z: 0.09087062} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightShoulder + parentName: + position: {x: 0.038286015, y: 0.22162114, z: -0.017063085} + rotation: {x: 0.15475743, y: 0.98667693, z: -0.01577938, w: -0.04764388} + scale: {x: 1, y: 1, z: 1} + - name: RightArm + parentName: + position: {x: -0.100501455, y: -0.0000024964806, z: -0.00000005261882} + rotation: {x: 0.13088296, y: 0.98749715, z: -0.035381317, w: 0.08041894} + scale: {x: 1, y: 1, z: 1} + - name: RightForeArm + parentName: + position: {x: 0.25342825, y: 0.006011353, z: -0.016704524} + rotation: {x: 0.2807845, y: 0.028492162, z: -0.023455879, w: 0.959061} + scale: {x: 1, y: 1, z: 1} + - name: RightHand + parentName: + position: {x: 0.2453737, y: 0.021641772, z: 0.005550465} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex1 + parentName: + position: {x: 0.0747695, y: -0.0012430532, z: 0.034344498} + rotation: {x: 0.07024862, y: 0.11060262, z: -0.030512573, w: 0.9909093} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex2 + parentName: + position: {x: 0.0370584, y: 0.00072612107, z: 0.014538894} + rotation: {x: -0.06822274, y: 0.02173951, z: 0.043451343, w: 0.9964864} + scale: {x: 1, y: 1, z: 1} + - name: RightHandIndex3 + parentName: + position: {x: 0.025225038, y: -0.0049664653, z: 0.011012146} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle1 + parentName: + position: {x: 0.075647645, y: 0.0047914027, z: 0.011853182} + rotation: {x: -0.09204666, y: 0.020728214, z: -0.060489327, w: 0.9936996} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle2 + parentName: + position: {x: 0.043809064, y: 0.00019418813, z: 0.006454936} + rotation: {x: -0.016927576, y: -0.04365649, z: 0.08087362, w: 0.995624} + scale: {x: 1, y: 1, z: 1} + - name: RightHandMiddle3 + parentName: + position: {x: 0.03307247, y: -0.007547537, z: 0.0016898462} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky1 + parentName: + position: {x: 0.06680334, y: -0.0019941085, z: -0.030756146} + rotation: {x: -0.28566718, y: -0.21415624, z: 0.021061996, w: 0.9338564} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky2 + parentName: + position: {x: 0.028530842, y: -0.001397143, z: -0.011623796} + rotation: {x: 0.02878686, y: 0.00055195135, z: -0.061992496, w: 0.99766123} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinky3 + parentName: + position: {x: 0.02142686, y: -0.00055350893, z: -0.008516608} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing1 + parentName: + position: {x: 0.070598476, y: 0.0024570967, z: -0.009821458} + rotation: {x: -0.104537345, y: -0.101430796, z: -0.025802944, w: 0.9889985} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing2 + parentName: + position: {x: 0.042887185, y: -0.0013753821, z: -0.0049458584} + rotation: {x: 0.020936225, y: -0.021636559, z: 0.075341575, w: 0.99670315} + scale: {x: 1, y: 1, z: 1} + - name: RightHandRing3 + parentName: + position: {x: 0.029500604, y: -0.0076929354, z: -0.004622256} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb1 + parentName: + position: {x: 0.014684916, y: -0.011104942, z: 0.025858095} + rotation: {x: -0.15737839, y: 0.056721896, z: 0.19547702, w: 0.96633506} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb2 + parentName: + position: {x: 0.016374, y: -0.00529, z: 0.02349136} + rotation: {x: -0.026062455, y: -0.09668724, z: -0.0036067301, w: 0.99496704} + scale: {x: 1, y: 1, z: 1} + - name: RightHandThumb3 + parentName: + position: {x: 0.02546, y: -0.00764, z: 0.020833} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 0.01 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/ThirdPersonAnimatorController.controller b/Assets/Obi/Samples/Common/SampleResources/Animations/ThirdPersonAnimatorController.controller new file mode 100644 index 000000000..8318e73f3 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Animations/ThirdPersonAnimatorController.controller @@ -0,0 +1,938 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1107 &-4588598185670696939 +AnimatorStateMachine: + serializedVersion: 7 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New Layer + m_ChildStates: [] + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 0} +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: ThirdPersonAnimatorController + serializedVersion: 6 + m_AnimatorParameters: + - m_Name: Forward + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Turn + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Crouch + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: OnGround + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 1 + m_Controller: {fileID: 9100000} + - m_Name: Jump + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: JumpLeg + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 110700000} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 1 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} + m_EvaluateTransitionsOnStart: 0 +--- !u!206 &20600000 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Blend Tree + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: dffa50cfe77e0434bbfa71245b3dd529, type: 3} + m_Threshold: 0 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 6fb3851da6a6f5948ab6892bee8ba920, type: 3} + m_Threshold: 0.0952381 + m_Position: {x: 0.5, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400006, guid: 6fb3851da6a6f5948ab6892bee8ba920, type: 3} + m_Threshold: 0.1904762 + m_Position: {x: 1, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400010, guid: 6fb3851da6a6f5948ab6892bee8ba920, type: 3} + m_Threshold: 0.2857143 + m_Position: {x: -0.5, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400014, guid: 6fb3851da6a6f5948ab6892bee8ba920, type: 3} + m_Threshold: 0.3809524 + m_Position: {x: -1, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: b1a5e04ae51004842aba06704a6c2903, type: 3} + m_Threshold: 0.42857143 + m_Position: {x: 0, y: 0.5} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400002, guid: bb141fc9a700c9c4ca7e6dadb8acf24b, type: 3} + m_Threshold: 0.47619048 + m_Position: {x: 1, y: 0.5} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 1c52c953c83c2254a9fa72d50250f028, type: 3} + m_Threshold: 0.52380955 + m_Position: {x: 0.5, y: 0.5} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: bb141fc9a700c9c4ca7e6dadb8acf24b, type: 3} + m_Threshold: 0.61904764 + m_Position: {x: -1, y: 0.5} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400002, guid: 1c52c953c83c2254a9fa72d50250f028, type: 3} + m_Threshold: 0.6666667 + m_Position: {x: -0.5, y: 0.5} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 1cb8ed3cbba15f0479fbae54e0a963df, type: 3} + m_Threshold: 0.7619048 + m_Position: {x: 0, y: 1} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: f2bed5dc5afacff44a00de8daae9703b, type: 3} + m_Threshold: 0.8095238 + m_Position: {x: 1, y: 1} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400002, guid: f2bed5dc5afacff44a00de8daae9703b, type: 3} + m_Threshold: 0.85714287 + m_Position: {x: -1, y: 1} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 1062212255550964e974f3ffb3cbaae3, type: 3} + m_Threshold: 0.9047619 + m_Position: {x: 0.5, y: 1} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400002, guid: 1062212255550964e974f3ffb3cbaae3, type: 3} + m_Threshold: 0.95238096 + m_Position: {x: -0.5, y: 1} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + m_BlendParameter: Turn + m_BlendParameterY: Forward + m_MinThreshold: 0 + m_MaxThreshold: 0.95238096 + m_UseAutomaticThresholds: 0 + m_NormalizedBlendValues: 0 + m_BlendType: 3 +--- !u!206 &20600002 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Idle + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: 7400010, guid: 4ee731d726c3dd34eb36806ea0d8fe98, type: 3} + m_Threshold: -1 + m_Position: {x: 0, y: 0} + m_TimeScale: 2 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400014, guid: e38eb300eb4745b4db509a224a99bbe1, type: 3} + m_Threshold: 0 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 4ee731d726c3dd34eb36806ea0d8fe98, type: 3} + m_Threshold: 1 + m_Position: {x: 0, y: 0} + m_TimeScale: 2 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + m_BlendParameter: Turn + m_BlendParameterY: Blend + m_MinThreshold: -1 + m_MaxThreshold: 1 + m_UseAutomaticThresholds: 0 + m_NormalizedBlendValues: 0 + m_BlendType: 0 +--- !u!206 &20600004 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Walk + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: 7400002, guid: 6da89662649b53c49b06616f51157b48, type: 3} + m_Threshold: -1 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 24c848a6dbf95e848950ca5403a1191e, type: 3} + m_Threshold: 0 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 6da89662649b53c49b06616f51157b48, type: 3} + m_Threshold: 1 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + m_BlendParameter: Turn + m_BlendParameterY: Blend + m_MinThreshold: -1 + m_MaxThreshold: 1 + m_UseAutomaticThresholds: 0 + m_NormalizedBlendValues: 0 + m_BlendType: 0 +--- !u!206 &20600006 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Run + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: 7400026, guid: ccb909e390d7be24e9107d33119a0eaa, type: 3} + m_Threshold: -1 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400024, guid: ccb909e390d7be24e9107d33119a0eaa, type: 3} + m_Threshold: 0 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400022, guid: ccb909e390d7be24e9107d33119a0eaa, type: 3} + m_Threshold: 1 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + m_BlendParameter: Turn + m_BlendParameterY: Blend + m_MinThreshold: -1 + m_MaxThreshold: 1 + m_UseAutomaticThresholds: 0 + m_NormalizedBlendValues: 0 + m_BlendType: 0 +--- !u!206 &20608386 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Idle + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: 7400002, guid: 98e8896e12d39bb41a5a74e9ae897a64, type: 3} + m_Threshold: -1 + m_Position: {x: 0, y: 0} + m_TimeScale: 2 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 11cd8118786c19d49a6bf4fc939ad434, type: 3} + m_Threshold: 0 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 98e8896e12d39bb41a5a74e9ae897a64, type: 3} + m_Threshold: 1 + m_Position: {x: 0, y: 0} + m_TimeScale: 2 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + m_BlendParameter: Turn + m_BlendParameterY: Blend + m_MinThreshold: -1 + m_MaxThreshold: 1 + m_UseAutomaticThresholds: 0 + m_NormalizedBlendValues: 0 + m_BlendType: 0 +--- !u!206 &20610505 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Blend Tree + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: 7400002, guid: d89ea37480b6d75458aa38843e9688dc, type: 3} + m_Threshold: 0 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400004, guid: d89ea37480b6d75458aa38843e9688dc, type: 3} + m_Threshold: 0.1984127 + m_Position: {x: 0, y: 1} + m_TimeScale: 2 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400008, guid: d89ea37480b6d75458aa38843e9688dc, type: 3} + m_Threshold: 0.3968254 + m_Position: {x: -1, y: 1} + m_TimeScale: 2 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400014, guid: d89ea37480b6d75458aa38843e9688dc, type: 3} + m_Threshold: 0.5952381 + m_Position: {x: 1, y: 1} + m_TimeScale: 2 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + m_BlendParameter: Turn + m_BlendParameterY: Forward + m_MinThreshold: 0 + m_MaxThreshold: 0.5952381 + m_UseAutomaticThresholds: 1 + m_NormalizedBlendValues: 0 + m_BlendType: 3 +--- !u!206 &20610787 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Blend Tree + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: 7400002, guid: f03e10c73f30b4ab4aa8ea8f1cc16d36, type: 3} + m_Threshold: 0 + m_Position: {x: 0, y: -1} + m_TimeScale: 0.1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400004, guid: 51dd2e4c869794f75a0df7d54b210214, type: 3} + m_Threshold: 5 + m_Position: {x: 5, y: -1} + m_TimeScale: 0.1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 51dd2e4c869794f75a0df7d54b210214, type: 3} + m_Threshold: 15 + m_Position: {x: 5, y: 1} + m_TimeScale: 0.1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400004, guid: 0d9d26e2162aa4d11ab075b34c029673, type: 3} + m_Threshold: 20 + m_Position: {x: -5, y: 0} + m_TimeScale: 0.1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400004, guid: f03e10c73f30b4ab4aa8ea8f1cc16d36, type: 3} + m_Threshold: 25 + m_Position: {x: 0, y: 1} + m_TimeScale: 0.1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400006, guid: 0d9d26e2162aa4d11ab075b34c029673, type: 3} + m_Threshold: 35 + m_Position: {x: 5, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400008, guid: 0d9d26e2162aa4d11ab075b34c029673, type: 3} + m_Threshold: 40 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + m_BlendParameter: Jump + m_BlendParameterY: JumpLeg + m_MinThreshold: 0 + m_MaxThreshold: 40 + m_UseAutomaticThresholds: 0 + m_NormalizedBlendValues: 0 + m_BlendType: 3 +--- !u!206 &20621344 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Blend Tree + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: 7400002, guid: f03e10c73f30b4ab4aa8ea8f1cc16d36, type: 3} + m_Threshold: 0 + m_Position: {x: 0, y: -1} + m_TimeScale: 0.1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400004, guid: 51dd2e4c869794f75a0df7d54b210214, type: 3} + m_Threshold: 5 + m_Position: {x: 5, y: -1} + m_TimeScale: 0.1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 51dd2e4c869794f75a0df7d54b210214, type: 3} + m_Threshold: 15 + m_Position: {x: 5, y: 1} + m_TimeScale: 0.1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400004, guid: 0d9d26e2162aa4d11ab075b34c029673, type: 3} + m_Threshold: 20 + m_Position: {x: -9, y: 0} + m_TimeScale: 0.1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400004, guid: f03e10c73f30b4ab4aa8ea8f1cc16d36, type: 3} + m_Threshold: 25 + m_Position: {x: 0, y: 1} + m_TimeScale: 0.1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400006, guid: 0d9d26e2162aa4d11ab075b34c029673, type: 3} + m_Threshold: 35 + m_Position: {x: 5, y: 0} + m_TimeScale: 0.1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400008, guid: 0d9d26e2162aa4d11ab075b34c029673, type: 3} + m_Threshold: 40 + m_Position: {x: 0, y: 0} + m_TimeScale: 0.1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + m_BlendParameter: Jump + m_BlendParameterY: JumpLeg + m_MinThreshold: 0 + m_MaxThreshold: 40 + m_UseAutomaticThresholds: 0 + m_NormalizedBlendValues: 0 + m_BlendType: 3 +--- !u!206 &20631403 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Walk + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: 7400002, guid: 1da5f9c54c49bfc488819dd2df8bb228, type: 3} + m_Threshold: -1 + m_Position: {x: 0, y: 0} + m_TimeScale: 2 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: c869773dc0bdfe042a8293344c186eaf, type: 3} + m_Threshold: 0 + m_Position: {x: 0, y: 0} + m_TimeScale: 2 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 1da5f9c54c49bfc488819dd2df8bb228, type: 3} + m_Threshold: 1 + m_Position: {x: 0, y: 0} + m_TimeScale: 2 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + m_BlendParameter: Turn + m_BlendParameterY: Blend + m_MinThreshold: -1 + m_MaxThreshold: 1 + m_UseAutomaticThresholds: 0 + m_NormalizedBlendValues: 0 + m_BlendType: 0 +--- !u!206 &20659883 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Blend Tree + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: 20608386} + m_Threshold: 0 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 20631403} + m_Threshold: 1 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: + m_Mirror: 0 + m_BlendParameter: Forward + m_BlendParameterY: Blend + m_MinThreshold: 0 + m_MaxThreshold: 1 + m_UseAutomaticThresholds: 1 + m_NormalizedBlendValues: 0 + m_BlendType: 0 +--- !u!206 &20683409 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Blend Tree + m_Childs: [] + m_BlendParameter: Forward + m_BlendParameterY: Forward + m_MinThreshold: 0 + m_MaxThreshold: 1 + m_UseAutomaticThresholds: 1 + m_NormalizedBlendValues: 0 + m_BlendType: 0 +--- !u!1101 &110100000 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: Crouch + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 110200000} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.080123246 + m_TransitionOffset: 0 + m_ExitTime: 0.9 + m_HasExitTime: 0 + m_HasFixedDuration: 0 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &110100036 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 2 + m_ConditionEvent: Crouch + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 110298501} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.111009784 + m_TransitionOffset: 0 + m_ExitTime: 0.9 + m_HasExitTime: 0 + m_HasFixedDuration: 0 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &110123257 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: OnGround + m_EventTreshold: 0 + - m_ConditionMode: 3 + m_ConditionEvent: Jump + m_EventTreshold: -2 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 110298501} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.11774184 + m_TransitionOffset: 0 + m_ExitTime: 0.9 + m_HasExitTime: 0 + m_HasFixedDuration: 0 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &110135218 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 2 + m_ConditionEvent: OnGround + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 110276412} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.10203097 + m_TransitionOffset: 0.018051635 + m_ExitTime: 0.9 + m_HasExitTime: 0 + m_HasFixedDuration: 0 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &110161005 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 2 + m_ConditionEvent: OnGround + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 110276412} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.024659414 + m_TransitionOffset: 0 + m_ExitTime: 0.9 + m_HasExitTime: 0 + m_HasFixedDuration: 0 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &110167223 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 2 + m_ConditionEvent: Crouch + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 110298501} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.101033315 + m_TransitionOffset: 0 + m_ExitTime: 0.9 + m_HasExitTime: 0 + m_HasFixedDuration: 0 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &110172777 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: OnGround + m_EventTreshold: 0 + - m_ConditionMode: 4 + m_ConditionEvent: Jump + m_EventTreshold: -2 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 110200000} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.18205842 + m_TransitionOffset: 0 + m_ExitTime: 0.9 + m_HasExitTime: 0 + m_HasFixedDuration: 0 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &110200000 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Crouching + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 110100036} + - {fileID: 110161005} + m_StateMachineBehaviours: [] + m_Position: {x: 444, y: 240, z: 0} + m_IKOnFeet: 1 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 20610505} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &110276412 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Airborne + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 110172777} + - {fileID: 110123257} + m_StateMachineBehaviours: [] + m_Position: {x: 444, y: -48, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 20621344} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &110298501 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Grounded + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 110100000} + - {fileID: 110135218} + m_StateMachineBehaviours: [] + m_Position: {x: 588, y: 96, z: 0} + m_IKOnFeet: 1 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 20600000} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &110700000 +AnimatorStateMachine: + serializedVersion: 7 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 110298501} + m_Position: {x: 590, y: 100, z: 0} + - serializedVersion: 1 + m_State: {fileID: 110200000} + m_Position: {x: 440, y: 240, z: 0} + - serializedVersion: 1 + m_State: {fileID: 110276412} + m_Position: {x: 440, y: -50, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 250, y: 100, z: 0} + m_ExitPosition: {x: 792, y: 96, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 110298501} diff --git a/Assets/Obi/Samples/Common/SampleResources/Animations/ThirdPersonAnimatorController.controller.meta b/Assets/Obi/Samples/Common/SampleResources/Animations/ThirdPersonAnimatorController.controller.meta new file mode 100644 index 000000000..34026eb95 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Animations/ThirdPersonAnimatorController.controller.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e2cf68ff4b1ffda45a77f7307dd789b9 +labels: +- ObiCloth +- ObiRope +- ObiSoftbody +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials.meta b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials.meta new file mode 100644 index 000000000..547884542 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bb188f7223e6b4a96972d88b44925c5e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/CharacterFriction.physicMaterial b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/CharacterFriction.physicMaterial new file mode 100644 index 000000000..af7b90267 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/CharacterFriction.physicMaterial @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!134 &13400000 +PhysicsMaterial: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CharacterFriction + serializedVersion: 2 + m_DynamicFriction: 0.9 + m_StaticFriction: 0.6 + m_Bounciness: 0 + m_FrictionCombine: 3 + m_BounceCombine: 3 diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/CharacterFriction.physicMaterial.meta b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/CharacterFriction.physicMaterial.meta new file mode 100644 index 000000000..d68cc5812 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/CharacterFriction.physicMaterial.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0d242f91ab1d749a8b6230e6da662881 +timeCreated: 1501142792 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 13400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/HighFriction.asset b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/HighFriction.asset new file mode 100644 index 000000000..352f070d3 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/HighFriction.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5b9c84cdb747944209b1c8753933c5db, type: 3} + m_Name: HighFriction + m_EditorClassIdentifier: + dynamicFriction: 1 + staticFriction: 0 + stickiness: 0 + stickDistance: 0 + frictionCombine: 3 + stickinessCombine: 3 + rollingContacts: 0 + rollingFriction: 0 diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/HighFriction.asset.meta b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/HighFriction.asset.meta new file mode 100644 index 000000000..656b100b7 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/HighFriction.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 56297c6e785b44eb28e469b62cedc016 +timeCreated: 1453427102 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/HighStaticFriction.asset b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/HighStaticFriction.asset new file mode 100644 index 000000000..ea897662c --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/HighStaticFriction.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5b9c84cdb747944209b1c8753933c5db, type: 3} + m_Name: HighStaticFriction + m_EditorClassIdentifier: + dynamicFriction: 0.3 + staticFriction: 0.5 + stickiness: 0 + stickDistance: 0 + frictionCombine: 1 + stickinessCombine: 3 + rollingContacts: 0 + rollingFriction: 0.002 diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/HighStaticFriction.asset.meta b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/HighStaticFriction.asset.meta new file mode 100644 index 000000000..19d15df95 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/HighStaticFriction.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f7532232f07594be3a36470e25b47b4f +timeCreated: 1453427100 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/Ice.asset b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/Ice.asset new file mode 100644 index 000000000..5d97b71d5 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/Ice.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5b9c84cdb747944209b1c8753933c5db, type: 3} + m_Name: Ice + m_EditorClassIdentifier: + dynamicFriction: 0 + staticFriction: 0 + stickiness: 0 + stickDistance: 0 + frictionCombine: 0 + stickinessCombine: 0 + rollingContacts: 0 + rollingFriction: 0 diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/Ice.asset.meta b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/Ice.asset.meta new file mode 100644 index 000000000..72bbb0b53 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/Ice.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7e318fd02475245f48f8f968e5ef09d5 +timeCreated: 1445311398 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/LowFriction.asset b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/LowFriction.asset new file mode 100644 index 000000000..aac508c59 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/LowFriction.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5b9c84cdb747944209b1c8753933c5db, type: 3} + m_Name: LowFriction + m_EditorClassIdentifier: + dynamicFriction: 0.1 + staticFriction: 0 + stickiness: 0 + stickDistance: 0 + frictionCombine: 0 + stickinessCombine: 0 + rollingContacts: 0 + rollingFriction: 0 diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/LowFriction.asset.meta b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/LowFriction.asset.meta new file mode 100644 index 000000000..621c0f4d8 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/LowFriction.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b231b678223e044588ce32ebccbe77f3 +timeCreated: 1453427100 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/MediumFriction.asset b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/MediumFriction.asset new file mode 100644 index 000000000..686668d4f --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/MediumFriction.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5b9c84cdb747944209b1c8753933c5db, type: 3} + m_Name: MediumFriction + m_EditorClassIdentifier: + dynamicFriction: 0.17 + staticFriction: 0 + stickiness: 0 + stickDistance: 0 + frictionCombine: 0 + stickinessCombine: 0 + rollingContacts: 0 + rollingFriction: 0 diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/MediumFriction.asset.meta b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/MediumFriction.asset.meta new file mode 100644 index 000000000..a03fa974b --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/MediumFriction.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d368f2c47473d4bfb8dd9f08073cb403 +timeCreated: 1445322891 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/RollingFriction.asset b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/RollingFriction.asset new file mode 100644 index 000000000..7a63fa378 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/RollingFriction.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5b9c84cdb747944209b1c8753933c5db, type: 3} + m_Name: RollingFriction + m_EditorClassIdentifier: + dynamicFriction: 0.7 + staticFriction: 0 + stickiness: 0 + stickDistance: 0 + frictionCombine: 0 + stickinessCombine: 3 + rollingContacts: 1 + rollingFriction: 0.2 diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/RollingFriction.asset.meta b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/RollingFriction.asset.meta new file mode 100644 index 000000000..4411711b2 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/RollingFriction.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e17a5bb573d9748ac8e836ddee291602 +timeCreated: 1453427102 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/VerySticky.asset b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/VerySticky.asset new file mode 100644 index 000000000..8a9681338 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/VerySticky.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5b9c84cdb747944209b1c8753933c5db, type: 3} + m_Name: VerySticky + m_EditorClassIdentifier: + dynamicFriction: 0.2 + staticFriction: 0 + stickiness: 0.2 + stickDistance: 0.03 + frictionCombine: 3 + stickinessCombine: 3 + rollingContacts: 0 + rollingFriction: 0 diff --git a/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/VerySticky.asset.meta b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/VerySticky.asset.meta new file mode 100644 index 000000000..d763a6c2c --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/CollisionMaterials/VerySticky.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 06e7bfec7795f448eb8800edc99dbcf2 +timeCreated: 1453443046 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/DistanceFields.meta b/Assets/Obi/Samples/Common/SampleResources/DistanceFields.meta new file mode 100644 index 000000000..a45a0fdb0 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/DistanceFields.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 650750a778b8848c4ab561d23f15012e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/DistanceFields/EnvironmentDF.asset b/Assets/Obi/Samples/Common/SampleResources/DistanceFields/EnvironmentDF.asset new file mode 100644 index 000000000..73883510d --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/DistanceFields/EnvironmentDF.asset @@ -0,0 +1,43450 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d31207380edf34b1b84ce50af22f2356, type: 3} + m_Name: EnvironmentDF + m_EditorClassIdentifier: + input: {fileID: 4300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + minNodeSize: 0.159375 + bounds: + m_Center: {x: 0, y: 2.5, z: 0} + m_Extent: {x: 5.1, y: 5.1, z: 5.1} + nodes: + - distancesA: {x: -2.7140436, y: -2.7140436, z: -2.623253, w: -2.623253} + distancesB: {x: -2.7140436, y: -2.7140436, z: -2.623253, w: -2.623253} + center: {x: 0, y: 2.5, z: 0, w: 5.1} + firstChild: 1 + - distancesA: {x: -2.7140436, y: -2.6575296, z: -0.34850723, w: -0.09999991} + distancesB: {x: -2.6575296, y: -2.6, z: -0.09999991, w: 2.5} + center: {x: -2.55, y: -0.049999952, z: -2.55, w: 2.55} + firstChild: 9 + - distancesA: {x: -2.6575296, y: -2.7140436, z: -0.09999991, w: -0.34850723} + distancesB: {x: -2.6, y: -2.6575296, z: 2.5, w: -0.09999991} + center: {x: -2.55, y: -0.049999952, z: 2.55, w: 2.55} + firstChild: 17 + - distancesA: {x: -0.34850723, y: -0.09999991, z: -2.6232536, w: -2.6019225} + distancesB: {x: -0.09999991, y: 2.5000002, z: -2.6019225, w: 5.635601} + center: {x: -2.55, y: 5.05, z: -2.55, w: 2.55} + firstChild: 25 + - distancesA: {x: -0.09999991, y: -0.34850723, z: -2.6019225, w: -2.6232536} + distancesB: {x: 2.5000002, y: -0.09999991, z: 5.635601, w: -2.6019225} + center: {x: -2.55, y: 5.05, z: 2.55, w: 2.55} + firstChild: 33 + - distancesA: {x: -2.6575296, y: -2.6, z: -0.09999991, w: 2.5} + distancesB: {x: -2.7140436, y: -2.6575296, z: -0.34850723, w: -0.09999991} + center: {x: 2.55, y: -0.049999952, z: -2.55, w: 2.55} + firstChild: 41 + - distancesA: {x: -2.6, y: -2.6575296, z: 2.5, w: -0.09999991} + distancesB: {x: -2.6575296, y: -2.7140436, z: -0.09999991, w: -0.34850723} + center: {x: 2.55, y: -0.049999952, z: 2.55, w: 2.55} + firstChild: 49 + - distancesA: {x: -0.09999991, y: 2.5000002, z: -2.6019225, w: 5.635601} + distancesB: {x: -0.34850723, y: -0.09999991, z: -2.6232536, w: -2.6019225} + center: {x: 2.55, y: 5.05, z: -2.55, w: 2.55} + firstChild: 57 + - distancesA: {x: 2.5000002, y: -0.09999991, z: 5.635601, w: -2.6019225} + distancesB: {x: -0.09999991, y: -0.34850723, z: -2.6019225, w: -2.6232536} + center: {x: 2.55, y: 5.05, z: 2.55, w: 2.55} + firstChild: 65 + - distancesA: {x: -2.7140436, y: -2.6575296, z: -0.51686305, w: -0.31512958} + distancesB: {x: -2.6575296, y: -2.6, z: -0.3151093, w: -0.049999956} + center: {x: -3.8249998, y: -1.3249999, z: -3.8249998, w: 1.275} + firstChild: 73 + - distancesA: {x: -2.6575296, y: -2.6575296, z: -0.31512958, w: -0.31510958} + distancesB: {x: -2.6, y: -2.6, z: -0.049999956, w: -0.049999956} + center: {x: -3.8249998, y: -1.3249999, z: -1.275, w: 1.275} + firstChild: 81 + - distancesA: {x: -0.51686305, y: -0.31512958, z: -0.34850723, w: -0.09999991} + distancesB: {x: -0.3151093, y: -0.049999956, z: -0.09999991, w: 2.4500003} + center: {x: -3.8249998, y: 1.225, z: -3.8249998, w: 1.275} + firstChild: 89 + - distancesA: {x: -0.31512958, y: -0.31510958, z: -0.09999991, w: -0.09999991} + distancesB: {x: -0.049999956, y: -0.049999956, z: 2.45, w: 2.4500003} + center: {x: -3.8249998, y: 1.225, z: -1.275, w: 1.275} + firstChild: 97 + - distancesA: {x: -2.6575296, y: -2.6, z: -0.3151093, w: -0.049999956} + distancesB: {x: -2.6575296, y: -2.6, z: -0.31510967, w: -0.049999956} + center: {x: -1.275, y: -1.3249999, z: -3.8249998, w: 1.275} + firstChild: 105 + - distancesA: {x: -2.6, y: -2.6, z: -0.049999956, w: -0.049999956} + distancesB: {x: -2.6, y: -2.6, z: -0.049999956, w: -0.049999956} + center: {x: -1.275, y: -1.3249999, z: -1.275, w: 1.275} + firstChild: 113 + - distancesA: {x: -0.3151093, y: -0.049999956, z: -0.09999991, w: 2.45} + distancesB: {x: -0.31510967, y: -0.049999956, z: -0.09999991, w: 2.4500003} + center: {x: -1.275, y: 1.225, z: -3.8249998, w: 1.275} + firstChild: 121 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 2.45, w: 2.45} + distancesB: {x: -0.049999956, y: -0.049999956, z: 2.45, w: 2.5} + center: {x: -1.275, y: 1.225, z: -1.275, w: 1.275} + firstChild: 129 + - distancesA: {x: -2.6575296, y: -2.6575296, z: -0.31510958, w: -0.31511036} + distancesB: {x: -2.6, y: -2.6, z: -0.049999956, w: -0.049999956} + center: {x: -3.8249998, y: -1.3249999, z: 1.275, w: 1.275} + firstChild: 137 + - distancesA: {x: -2.6575296, y: -2.7140436, z: -0.31511015, w: -0.51686305} + distancesB: {x: -2.6, y: -2.6575296, z: -0.049999956, w: -0.31512958} + center: {x: -3.8249998, y: -1.3249999, z: 3.8249998, w: 1.275} + firstChild: 145 + - distancesA: {x: -0.31510958, y: -0.31511036, z: -0.09999991, w: -0.09999991} + distancesB: {x: -0.049999956, y: -0.049999956, z: 2.4500003, w: 2.45} + center: {x: -3.8249998, y: 1.225, z: 1.275, w: 1.275} + firstChild: 153 + - distancesA: {x: -0.31511015, y: -0.51686305, z: -0.09999991, w: -0.34850723} + distancesB: {x: -0.049999956, y: -0.31512958, z: 2.4500003, w: -0.09999991} + center: {x: -3.8249998, y: 1.225, z: 3.8249998, w: 1.275} + firstChild: 161 + - distancesA: {x: -2.6, y: -2.6, z: -0.049999956, w: -0.049999956} + distancesB: {x: -2.6, y: -2.6, z: -0.049999956, w: -0.049999956} + center: {x: -1.275, y: -1.3249999, z: 1.275, w: 1.275} + firstChild: 169 + - distancesA: {x: -2.6, y: -2.6575296, z: -0.049999956, w: -0.31512958} + distancesB: {x: -2.6, y: -2.6575296, z: -0.049999956, w: -0.31510958} + center: {x: -1.275, y: -1.3249999, z: 3.8249998, w: 1.275} + firstChild: 177 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 2.45, w: 2.45} + distancesB: {x: -0.049999956, y: -0.049999956, z: 2.5, w: 2.45} + center: {x: -1.275, y: 1.225, z: 1.275, w: 1.275} + firstChild: 185 + - distancesA: {x: -0.049999956, y: -0.31512958, z: 2.45, w: -0.09999991} + distancesB: {x: -0.049999956, y: -0.31510958, z: 2.4500003, w: -0.09999991} + center: {x: -1.275, y: 1.225, z: 3.8249998, w: 1.275} + firstChild: 193 + - distancesA: {x: -0.34850723, y: -0.09999991, z: -0.3520757, w: -0.1118034} + distancesB: {x: -0.09999991, y: 2.4500003, z: -0.1118034, w: 2.4505103} + center: {x: -3.8249998, y: 3.775, z: -3.8249998, w: 1.275} + firstChild: 201 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 2.45, y: 2.4500003, z: 2.4505103, w: 2.4505103} + center: {x: -3.8249998, y: 3.775, z: -1.275, w: 1.275} + firstChild: 209 + - distancesA: {x: -0.3520757, y: -0.1118034, z: -2.6232536, w: -2.6019225} + distancesB: {x: -0.1118034, y: 2.4505103, z: -2.6019225, w: 3.5724647} + center: {x: -3.8249998, y: 6.3250003, z: -3.8249998, w: 1.275} + firstChild: 217 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -2.6019225, w: -2.6019225} + distancesB: {x: 2.4505103, y: 2.4505103, z: 3.5724645, w: 3.5724647} + center: {x: -3.8249998, y: 6.3250003, z: -1.275, w: 1.275} + firstChild: 225 + - distancesA: {x: -0.09999991, y: 2.45, z: -0.1118034, w: 2.4505103} + distancesB: {x: -0.09999991, y: 2.4500003, z: -0.1118034, w: 2.4505103} + center: {x: -1.275, y: 3.775, z: -3.8249998, w: 1.275} + firstChild: 233 + - distancesA: {x: 2.45, y: 2.45, z: 2.4505103, w: 2.4505103} + distancesB: {x: 2.45, y: 2.5, z: 2.4505103, w: 5.00025} + center: {x: -1.275, y: 3.775, z: -1.275, w: 1.275} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 2.4505103, z: -2.6019225, w: 3.5724645} + distancesB: {x: -0.1118034, y: 2.4505103, z: -2.6019225, w: 3.5724647} + center: {x: -1.275, y: 6.3250003, z: -3.8249998, w: 1.275} + firstChild: 241 + - distancesA: {x: 2.4505103, y: 2.4505103, z: 3.5724645, w: 3.5724645} + distancesB: {x: 2.4505103, y: 5.00025, z: 3.5724645, w: 5.635601} + center: {x: -1.275, y: 6.3250003, z: -1.275, w: 1.275} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 2.4500003, y: 2.45, z: 2.4505103, w: 2.4505103} + center: {x: -3.8249998, y: 3.775, z: 1.275, w: 1.275} + firstChild: 249 + - distancesA: {x: -0.09999991, y: -0.34850723, z: -0.1118034, w: -0.3520757} + distancesB: {x: 2.4500003, y: -0.09999991, z: 2.4505103, w: -0.1118034} + center: {x: -3.8249998, y: 3.775, z: 3.8249998, w: 1.275} + firstChild: 257 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -2.6019225, w: -2.6019225} + distancesB: {x: 2.4505103, y: 2.4505103, z: 3.5724647, w: 3.5724645} + center: {x: -3.8249998, y: 6.3250003, z: 1.275, w: 1.275} + firstChild: 265 + - distancesA: {x: -0.1118034, y: -0.3520757, z: -2.6019225, w: -2.6232536} + distancesB: {x: 2.4505103, y: -0.1118034, z: 3.5724647, w: -2.6019225} + center: {x: -3.8249998, y: 6.3250003, z: 3.8249998, w: 1.275} + firstChild: 273 + - distancesA: {x: 2.45, y: 2.45, z: 2.4505103, w: 2.4505103} + distancesB: {x: 2.5, y: 2.45, z: 5.00025, w: 2.4505103} + center: {x: -1.275, y: 3.775, z: 1.275, w: 1.275} + firstChild: -1 + - distancesA: {x: 2.45, y: -0.09999991, z: 2.4505103, w: -0.1118034} + distancesB: {x: 2.4500003, y: -0.09999991, z: 2.4505103, w: -0.1118034} + center: {x: -1.275, y: 3.775, z: 3.8249998, w: 1.275} + firstChild: 281 + - distancesA: {x: 2.4505103, y: 2.4505103, z: 3.5724645, w: 3.5724645} + distancesB: {x: 5.00025, y: 2.4505103, z: 5.635601, w: 3.5724645} + center: {x: -1.275, y: 6.3250003, z: 1.275, w: 1.275} + firstChild: -1 + - distancesA: {x: 2.4505103, y: -0.1118034, z: 3.5724645, w: -2.6019225} + distancesB: {x: 2.4505103, y: -0.1118034, z: 3.5724647, w: -2.6019225} + center: {x: -1.275, y: 6.3250003, z: 3.8249998, w: 1.275} + firstChild: 289 + - distancesA: {x: -2.6575296, y: -2.6, z: -0.31510967, w: -0.049999956} + distancesB: {x: -2.6575296, y: -2.6, z: -0.31510967, w: -0.049999956} + center: {x: 1.275, y: -1.3249999, z: -3.8249998, w: 1.275} + firstChild: 297 + - distancesA: {x: -2.6, y: -2.6, z: -0.049999956, w: -0.049999956} + distancesB: {x: -2.6, y: -2.6, z: -0.049999956, w: -0.049999956} + center: {x: 1.275, y: -1.3249999, z: -1.275, w: 1.275} + firstChild: 305 + - distancesA: {x: -0.31510967, y: -0.049999956, z: -0.09999991, w: 2.4500003} + distancesB: {x: -0.31510967, y: -0.049999956, z: -0.09999991, w: 2.45} + center: {x: 1.275, y: 1.225, z: -3.8249998, w: 1.275} + firstChild: 313 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 2.45, w: 2.5} + distancesB: {x: -0.049999956, y: -0.049999956, z: 2.45, w: 2.45} + center: {x: 1.275, y: 1.225, z: -1.275, w: 1.275} + firstChild: 321 + - distancesA: {x: -2.6575296, y: -2.6, z: -0.31510967, w: -0.049999956} + distancesB: {x: -2.7140436, y: -2.6575296, z: -0.51686305, w: -0.3151093} + center: {x: 3.8249998, y: -1.3249999, z: -3.8249998, w: 1.275} + firstChild: 329 + - distancesA: {x: -2.6, y: -2.6, z: -0.049999956, w: -0.049999956} + distancesB: {x: -2.6575296, y: -2.6575296, z: -0.3151093, w: -0.31510967} + center: {x: 3.8249998, y: -1.3249999, z: -1.275, w: 1.275} + firstChild: 337 + - distancesA: {x: -0.31510967, y: -0.049999956, z: -0.09999991, w: 2.4500003} + distancesB: {x: -0.51686305, y: -0.3151093, z: -0.34850723, w: -0.09999991} + center: {x: 3.8249998, y: 1.225, z: -3.8249998, w: 1.275} + firstChild: 345 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 2.45, w: 2.4500003} + distancesB: {x: -0.3151093, y: -0.31510967, z: -0.09999991, w: -0.09999991} + center: {x: 3.8249998, y: 1.225, z: -1.275, w: 1.275} + firstChild: 353 + - distancesA: {x: -2.6, y: -2.6, z: -0.049999956, w: -0.049999956} + distancesB: {x: -2.6, y: -2.6, z: -0.049999956, w: -0.049999956} + center: {x: 1.275, y: -1.3249999, z: 1.275, w: 1.275} + firstChild: 361 + - distancesA: {x: -2.6, y: -2.6575296, z: -0.049999956, w: -0.31510958} + distancesB: {x: -2.6, y: -2.6575296, z: -0.049999956, w: -0.31511036} + center: {x: 1.275, y: -1.3249999, z: 3.8249998, w: 1.275} + firstChild: 369 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 2.5, w: 2.45} + distancesB: {x: -0.049999956, y: -0.049999956, z: 2.45, w: 2.45} + center: {x: 1.275, y: 1.225, z: 1.275, w: 1.275} + firstChild: 377 + - distancesA: {x: -0.049999956, y: -0.31510958, z: 2.4500003, w: -0.09999991} + distancesB: {x: -0.049999956, y: -0.31511036, z: 2.45, w: -0.09999991} + center: {x: 1.275, y: 1.225, z: 3.8249998, w: 1.275} + firstChild: 385 + - distancesA: {x: -2.6, y: -2.6, z: -0.049999956, w: -0.049999956} + distancesB: {x: -2.6575296, y: -2.6575296, z: -0.31510967, w: -0.31510967} + center: {x: 3.8249998, y: -1.3249999, z: 1.275, w: 1.275} + firstChild: 393 + - distancesA: {x: -2.6, y: -2.6575296, z: -0.049999956, w: -0.31511015} + distancesB: {x: -2.6575296, y: -2.7140436, z: -0.31510967, w: -0.51686305} + center: {x: 3.8249998, y: -1.3249999, z: 3.8249998, w: 1.275} + firstChild: 401 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 2.4500003, w: 2.45} + distancesB: {x: -0.31510967, y: -0.31510967, z: -0.09999991, w: -0.09999991} + center: {x: 3.8249998, y: 1.225, z: 1.275, w: 1.275} + firstChild: 409 + - distancesA: {x: -0.049999956, y: -0.31511015, z: 2.4500003, w: -0.09999991} + distancesB: {x: -0.31510967, y: -0.51686305, z: -0.09999991, w: -0.34850723} + center: {x: 3.8249998, y: 1.225, z: 3.8249998, w: 1.275} + firstChild: 417 + - distancesA: {x: -0.09999991, y: 2.4500003, z: -0.1118034, w: 2.4505103} + distancesB: {x: -0.09999991, y: 2.45, z: -0.1118034, w: 2.4505103} + center: {x: 1.275, y: 3.775, z: -3.8249998, w: 1.275} + firstChild: 425 + - distancesA: {x: 2.45, y: 2.5, z: 2.4505103, w: 5.00025} + distancesB: {x: 2.45, y: 2.45, z: 2.4505103, w: 2.4505103} + center: {x: 1.275, y: 3.775, z: -1.275, w: 1.275} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 2.4505103, z: -2.6019225, w: 3.5724647} + distancesB: {x: -0.1118034, y: 2.4505103, z: -2.6019225, w: 3.5724645} + center: {x: 1.275, y: 6.3250003, z: -3.8249998, w: 1.275} + firstChild: 433 + - distancesA: {x: 2.4505103, y: 5.00025, z: 3.5724645, w: 5.635601} + distancesB: {x: 2.4505103, y: 2.4505103, z: 3.5724645, w: 3.5724645} + center: {x: 1.275, y: 6.3250003, z: -1.275, w: 1.275} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 2.4500003, z: -0.1118034, w: 2.4505103} + distancesB: {x: -0.34850723, y: -0.09999991, z: -0.3520757, w: -0.1118034} + center: {x: 3.8249998, y: 3.775, z: -3.8249998, w: 1.275} + firstChild: 441 + - distancesA: {x: 2.45, y: 2.4500003, z: 2.4505103, w: 2.4505103} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 3.8249998, y: 3.775, z: -1.275, w: 1.275} + firstChild: 449 + - distancesA: {x: -0.1118034, y: 2.4505103, z: -2.6019225, w: 3.5724647} + distancesB: {x: -0.3520757, y: -0.1118034, z: -2.6232536, w: -2.6019225} + center: {x: 3.8249998, y: 6.3250003, z: -3.8249998, w: 1.275} + firstChild: 457 + - distancesA: {x: 2.4505103, y: 2.4505103, z: 3.5724645, w: 3.5724647} + distancesB: {x: -0.1118034, y: -0.1118034, z: -2.6019225, w: -2.6019225} + center: {x: 3.8249998, y: 6.3250003, z: -1.275, w: 1.275} + firstChild: 465 + - distancesA: {x: 2.5, y: 2.45, z: 5.00025, w: 2.4505103} + distancesB: {x: 2.45, y: 2.45, z: 2.4505103, w: 2.4505103} + center: {x: 1.275, y: 3.775, z: 1.275, w: 1.275} + firstChild: -1 + - distancesA: {x: 2.4500003, y: -0.09999991, z: 2.4505103, w: -0.1118034} + distancesB: {x: 2.45, y: -0.09999991, z: 2.4505103, w: -0.1118034} + center: {x: 1.275, y: 3.775, z: 3.8249998, w: 1.275} + firstChild: 473 + - distancesA: {x: 5.00025, y: 2.4505103, z: 5.635601, w: 3.5724645} + distancesB: {x: 2.4505103, y: 2.4505103, z: 3.5724645, w: 3.5724645} + center: {x: 1.275, y: 6.3250003, z: 1.275, w: 1.275} + firstChild: -1 + - distancesA: {x: 2.4505103, y: -0.1118034, z: 3.5724647, w: -2.6019225} + distancesB: {x: 2.4505103, y: -0.1118034, z: 3.5724645, w: -2.6019225} + center: {x: 1.275, y: 6.3250003, z: 3.8249998, w: 1.275} + firstChild: 481 + - distancesA: {x: 2.4500003, y: 2.45, z: 2.4505103, w: 2.4505103} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 3.8249998, y: 3.775, z: 1.275, w: 1.275} + firstChild: 489 + - distancesA: {x: 2.4500003, y: -0.09999991, z: 2.4505103, w: -0.1118034} + distancesB: {x: -0.09999991, y: -0.34850723, z: -0.1118034, w: -0.3520757} + center: {x: 3.8249998, y: 3.775, z: 3.8249998, w: 1.275} + firstChild: 497 + - distancesA: {x: 2.4505103, y: 2.4505103, z: 3.5724647, w: 3.5724645} + distancesB: {x: -0.1118034, y: -0.1118034, z: -2.6019225, w: -2.6019225} + center: {x: 3.8249998, y: 6.3250003, z: 1.275, w: 1.275} + firstChild: 505 + - distancesA: {x: 2.4505103, y: -0.1118034, z: 3.5724647, w: -2.6019225} + distancesB: {x: -0.1118034, y: -0.3520757, z: -2.6019225, w: -2.6232536} + center: {x: 3.8249998, y: 6.3250003, z: 3.8249998, w: 1.275} + firstChild: 513 + - distancesA: {x: -2.7140434, y: -2.6575296, z: -1.5167223, w: -1.4229815} + distancesB: {x: -2.6575296, y: -2.6, z: -1.4229891, w: -1.3249998} + center: {x: -4.4624996, y: -1.9624999, z: -4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6575296, y: -2.6575296, z: -1.4229815, w: -1.4229816} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -4.4624996, y: -1.9624999, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.5167226, y: -1.4229816, z: -0.51686233, w: -0.31514108} + distancesB: {x: -1.4229892, y: -1.3249999, z: -0.31510916, w: -0.049999956} + center: {x: -4.4624996, y: -0.68749994, z: -4.4624996, w: 0.6375} + firstChild: 521 + - distancesA: {x: -1.4229816, y: -1.4229817, z: -0.31511882, w: -0.31512922} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -4.4624996, y: -0.68749994, z: -3.1874998, w: 0.6375} + firstChild: 529 + - distancesA: {x: -2.6575296, y: -2.6, z: -1.4229838, w: -1.3249998} + distancesB: {x: -2.6575296, y: -2.6, z: -1.422986, w: -1.3249998} + center: {x: -3.1874998, y: -1.9624999, z: -4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -3.1874998, y: -1.9624999, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.4229839, y: -1.3249999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -1.422986, y: -1.3249999, z: -0.31510916, w: -0.049999956} + center: {x: -3.1874998, y: -0.68749994, z: -4.4624996, w: 0.6375} + firstChild: 537 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -3.1874998, y: -0.68749994, z: -3.1874998, w: 0.6375} + firstChild: 545 + - distancesA: {x: -2.6575296, y: -2.6575296, z: -1.4229816, w: -1.4229815} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -4.4624996, y: -1.9624999, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6575296, y: -2.6575296, z: -1.4229815, w: -1.4229816} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -4.4624996, y: -1.9624999, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.4229817, y: -1.4229816, z: -0.31512922, w: -0.315111} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -4.4624996, y: -0.68749994, z: -1.9124999, w: 0.6375} + firstChild: 553 + - distancesA: {x: -1.4229816, y: -1.4229817, z: -0.315111, w: -0.31510922} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -4.4624996, y: -0.68749994, z: -0.6375, w: 0.6375} + firstChild: 561 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -3.1874998, y: -1.9624999, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -3.1874998, y: -1.9624999, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -3.1874998, y: -0.68749994, z: -1.9124999, w: 0.6375} + firstChild: 569 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -3.1874998, y: -0.68749994, z: -0.6375, w: 0.6375} + firstChild: 577 + - distancesA: {x: -0.51686233, y: -0.31514108, z: -0.34850657, w: -0.09999943} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 1.1750003} + center: {x: -4.4624996, y: 0.58750004, z: -4.4624996, w: 0.6375} + firstChild: 585 + - distancesA: {x: -0.31511882, y: -0.31512922, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.1750003} + center: {x: -4.4624996, y: 0.58750004, z: -3.1874998, w: 0.6375} + firstChild: 593 + - distancesA: {x: -0.34850657, y: -0.09999943, z: -0.34850657, w: -0.09999943} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + center: {x: -4.4624996, y: 1.8625, z: -4.4624996, w: 0.6375} + firstChild: 601 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 1.1750002, y: 1.1750003, z: 1.1750002, w: 1.1750003} + center: {x: -4.4624996, y: 1.8625, z: -3.1874998, w: 0.6375} + firstChild: 609 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 1.1750002} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 1.1750003} + center: {x: -3.1874998, y: 0.58750004, z: -4.4624996, w: 0.6375} + firstChild: 617 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.1750002} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.225} + center: {x: -3.1874998, y: 0.58750004, z: -3.1874998, w: 0.6375} + firstChild: 625 + - distancesA: {x: -0.09999943, y: 1.1750002, z: -0.09999943, w: 1.1750002} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + center: {x: -3.1874998, y: 1.8625, z: -4.4624996, w: 0.6375} + firstChild: 633 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 1.1750002, y: 1.2249999, z: 1.1750002, w: 2.4500003} + center: {x: -3.1874998, y: 1.8625, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.31512922, y: -0.315111, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750003, w: 1.1750003} + center: {x: -4.4624996, y: 0.58750004, z: -1.9124999, w: 0.6375} + firstChild: 641 + - distancesA: {x: -0.315111, y: -0.31510922, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750003, w: 1.1750003} + center: {x: -4.4624996, y: 0.58750004, z: -0.6375, w: 0.6375} + firstChild: 649 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 1.1750003, y: 1.1750003, z: 1.1750003, w: 1.1750003} + center: {x: -4.4624996, y: 1.8625, z: -1.9124999, w: 0.6375} + firstChild: 657 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 1.1750003, y: 1.1750003, z: 1.1750003, w: 1.1750003} + center: {x: -4.4624996, y: 1.8625, z: -0.6375, w: 0.6375} + firstChild: 665 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.1750002} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: -3.1874998, y: 0.58750004, z: -1.9124999, w: 0.6375} + firstChild: 673 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.1750002} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: -3.1874998, y: 0.58750004, z: -0.6375, w: 0.6375} + firstChild: 681 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.45, w: 2.4500003} + center: {x: -3.1874998, y: 1.8625, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.4500003, w: 2.4500003} + center: {x: -3.1874998, y: 1.8625, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6575296, y: -2.6, z: -1.422986, w: -1.3249998} + distancesB: {x: -2.6575296, y: -2.6, z: -1.422982, w: -1.3249998} + center: {x: -1.9124999, y: -1.9624999, z: -4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -1.9124999, y: -1.9624999, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.422986, y: -1.3249999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -1.422982, y: -1.3249999, z: -0.3151088, w: -0.049999956} + center: {x: -1.9124999, y: -0.68749994, z: -4.4624996, w: 0.6375} + firstChild: 689 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -1.9124999, y: -0.68749994, z: -3.1874998, w: 0.6375} + firstChild: 697 + - distancesA: {x: -2.6575296, y: -2.6, z: -1.422982, w: -1.3249998} + distancesB: {x: -2.6575296, y: -2.6, z: -1.4229816, w: -1.3249998} + center: {x: -0.6375, y: -1.9624999, z: -4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -0.6375, y: -1.9624999, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.422982, y: -1.3249999, z: -0.3151088, w: -0.049999956} + distancesB: {x: -1.4229816, y: -1.3249999, z: -0.31510916, w: -0.049999956} + center: {x: -0.6375, y: -0.68749994, z: -4.4624996, w: 0.6375} + firstChild: 705 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -0.6375, y: -0.68749994, z: -3.1874998, w: 0.6375} + firstChild: 713 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -1.9124999, y: -1.9624999, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -1.9124999, y: -1.9624999, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -1.9124999, y: -0.68749994, z: -1.9124999, w: 0.6375} + firstChild: 721 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -1.9124999, y: -0.68749994, z: -0.6375, w: 0.6375} + firstChild: 729 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -0.6375, y: -1.9624999, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -0.6375, y: -1.9624999, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -0.6375, y: -0.68749994, z: -1.9124999, w: 0.6375} + firstChild: 737 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -0.6375, y: -0.68749994, z: -0.6375, w: 0.6375} + firstChild: 745 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.3151088, y: -0.049999956, z: -0.09999943, w: 1.1750003} + center: {x: -1.9124999, y: 0.58750004, z: -4.4624996, w: 0.6375} + firstChild: 753 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.225} + center: {x: -1.9124999, y: 0.58750004, z: -3.1874998, w: 0.6375} + firstChild: 761 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + center: {x: -1.9124999, y: 1.8625, z: -4.4624996, w: 0.6375} + firstChild: 769 + - distancesA: {x: 1.1750002, y: 1.2249999, z: 1.1750002, w: 2.45} + distancesB: {x: 1.1750002, y: 1.2249999, z: 1.1750002, w: 2.4500003} + center: {x: -1.9124999, y: 1.8625, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.3151088, y: -0.049999956, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 1.1750003} + center: {x: -0.6375, y: 0.58750004, z: -4.4624996, w: 0.6375} + firstChild: 777 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.225} + center: {x: -0.6375, y: 0.58750004, z: -3.1874998, w: 0.6375} + firstChild: 785 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + center: {x: -0.6375, y: 1.8625, z: -4.4624996, w: 0.6375} + firstChild: 793 + - distancesA: {x: 1.1750002, y: 1.2249999, z: 1.1750002, w: 2.4500003} + distancesB: {x: 1.1750002, y: 1.2249999, z: 1.1750002, w: 2.4500003} + center: {x: -0.6375, y: 1.8625, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: -1.9124999, y: 0.58750004, z: -1.9124999, w: 0.6375} + firstChild: 801 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: -1.9124999, y: 0.58750004, z: -0.6375, w: 0.6375} + firstChild: 809 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.45, w: 2.45} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.45, w: 2.5} + center: {x: -1.9124999, y: 1.8625, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.45, w: 2.45} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.5} + center: {x: -1.9124999, y: 1.8625, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: -0.6375, y: 0.58750004, z: -1.9124999, w: 0.6375} + firstChild: 817 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: -0.6375, y: 0.58750004, z: -0.6375, w: 0.6375} + firstChild: 825 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.45, w: 2.5} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.45, w: 2.5} + center: {x: -0.6375, y: 1.8625, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.5} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.5} + center: {x: -0.6375, y: 1.8625, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6575296, y: -2.6575296, z: -1.4229816, w: -1.4229815} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -4.4624996, y: -1.9624999, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6575296, y: -2.6575296, z: -1.4229815, w: -1.4229815} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -4.4624996, y: -1.9624999, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.4229817, y: -1.4229816, z: -0.31510922, w: -0.315111} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -4.4624996, y: -0.68749994, z: 0.6375, w: 0.6375} + firstChild: 833 + - distancesA: {x: -1.4229816, y: -1.4229816, z: -0.315111, w: -0.31511} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -4.4624996, y: -0.68749994, z: 1.9124999, w: 0.6375} + firstChild: 841 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -3.1874998, y: -1.9624999, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -3.1874998, y: -1.9624999, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -3.1874998, y: -0.68749994, z: 0.6375, w: 0.6375} + firstChild: 849 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -3.1874998, y: -0.68749994, z: 1.9124999, w: 0.6375} + firstChild: 857 + - distancesA: {x: -2.6575296, y: -2.6575296, z: -1.4229815, w: -1.4229816} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -4.4624996, y: -1.9624999, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6575296, y: -2.7140434, z: -1.4229816, w: -1.5167223} + distancesB: {x: -2.6, y: -2.6575296, z: -1.3249998, w: -1.4229815} + center: {x: -4.4624996, y: -1.9624999, z: 4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.4229816, y: -1.4229817, z: -0.3151098, w: -0.31510893} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -4.4624996, y: -0.68749994, z: 3.1874998, w: 0.6375} + firstChild: 865 + - distancesA: {x: -1.4229817, y: -1.5167226, z: -0.31510893, w: -0.51686233} + distancesB: {x: -1.3249999, y: -1.4229816, z: -0.049999956, w: -0.31514108} + center: {x: -4.4624996, y: -0.68749994, z: 4.4624996, w: 0.6375} + firstChild: 873 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -3.1874998, y: -1.9624999, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6575296, z: -1.3249998, w: -1.4229815} + distancesB: {x: -2.6, y: -2.6575296, z: -1.3249998, w: -1.4229816} + center: {x: -3.1874998, y: -1.9624999, z: 4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -3.1874998, y: -0.68749994, z: 3.1874998, w: 0.6375} + firstChild: 881 + - distancesA: {x: -1.3249999, y: -1.4229816, z: -0.049999956, w: -0.31511882} + distancesB: {x: -1.3249999, y: -1.4229817, z: -0.049999956, w: -0.31512922} + center: {x: -3.1874998, y: -0.68749994, z: 4.4624996, w: 0.6375} + firstChild: 889 + - distancesA: {x: -0.31510922, y: -0.315111, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750003, w: 1.1750003} + center: {x: -4.4624996, y: 0.58750004, z: 0.6375, w: 0.6375} + firstChild: 897 + - distancesA: {x: -0.315111, y: -0.31511, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750003, w: 1.1750003} + center: {x: -4.4624996, y: 0.58750004, z: 1.9124999, w: 0.6375} + firstChild: 905 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 1.1750003, y: 1.1750003, z: 1.1750003, w: 1.1750003} + center: {x: -4.4624996, y: 1.8625, z: 0.6375, w: 0.6375} + firstChild: 913 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 1.1750003, y: 1.1750003, z: 1.1750003, w: 1.1750003} + center: {x: -4.4624996, y: 1.8625, z: 1.9124999, w: 0.6375} + firstChild: 921 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.1750002} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: -3.1874998, y: 0.58750004, z: 0.6375, w: 0.6375} + firstChild: 929 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.1750002} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: -3.1874998, y: 0.58750004, z: 1.9124999, w: 0.6375} + firstChild: 937 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.4500003, w: 2.4500003} + center: {x: -3.1874998, y: 1.8625, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.4500003, w: 2.45} + center: {x: -3.1874998, y: 1.8625, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.3151098, y: -0.31510893, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750003, w: 1.1750002} + center: {x: -4.4624996, y: 0.58750004, z: 3.1874998, w: 0.6375} + firstChild: 945 + - distancesA: {x: -0.31510893, y: -0.51686233, z: -0.09999943, w: -0.34850657} + distancesB: {x: -0.049999956, y: -0.31514108, z: 1.1750003, w: -0.09999943} + center: {x: -4.4624996, y: 0.58750004, z: 4.4624996, w: 0.6375} + firstChild: 953 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 1.1750003, y: 1.1750002, z: 1.1750003, w: 1.1750002} + center: {x: -4.4624996, y: 1.8625, z: 3.1874998, w: 0.6375} + firstChild: 961 + - distancesA: {x: -0.09999943, y: -0.34850657, z: -0.09999943, w: -0.34850657} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + center: {x: -4.4624996, y: 1.8625, z: 4.4624996, w: 0.6375} + firstChild: 969 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.1750002} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.1750002} + center: {x: -3.1874998, y: 0.58750004, z: 3.1874998, w: 0.6375} + firstChild: 977 + - distancesA: {x: -0.049999956, y: -0.31511882, z: 1.1750002, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.31512922, z: 1.1750003, w: -0.09999943} + center: {x: -3.1874998, y: 0.58750004, z: 4.4624996, w: 0.6375} + firstChild: 985 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 1.2249999, y: 1.1750002, z: 2.4500003, w: 1.1750002} + center: {x: -3.1874998, y: 1.8625, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750002, y: -0.09999943, z: 1.1750002, w: -0.09999943} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + center: {x: -3.1874998, y: 1.8625, z: 4.4624996, w: 0.6375} + firstChild: 993 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -1.9124999, y: -1.9624999, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -1.9124999, y: -1.9624999, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -1.9124999, y: -0.68749994, z: 0.6375, w: 0.6375} + firstChild: 1001 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -1.9124999, y: -0.68749994, z: 1.9124999, w: 0.6375} + firstChild: 1009 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -0.6375, y: -1.9624999, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -0.6375, y: -1.9624999, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -0.6375, y: -0.68749994, z: 0.6375, w: 0.6375} + firstChild: 1017 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -0.6375, y: -0.68749994, z: 1.9124999, w: 0.6375} + firstChild: 1025 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -1.9124999, y: -1.9624999, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6575296, z: -1.3249998, w: -1.4229816} + distancesB: {x: -2.6, y: -2.6575296, z: -1.3249998, w: -1.4229815} + center: {x: -1.9124999, y: -1.9624999, z: 4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -1.9124999, y: -0.68749994, z: 3.1874998, w: 0.6375} + firstChild: 1033 + - distancesA: {x: -1.3249999, y: -1.4229817, z: -0.049999956, w: -0.31512922} + distancesB: {x: -1.3249999, y: -1.4229816, z: -0.049999956, w: -0.315111} + center: {x: -1.9124999, y: -0.68749994, z: 4.4624996, w: 0.6375} + firstChild: 1041 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: -0.6375, y: -1.9624999, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6575296, z: -1.3249998, w: -1.4229815} + distancesB: {x: -2.6, y: -2.6575296, z: -1.3249998, w: -1.4229816} + center: {x: -0.6375, y: -1.9624999, z: 4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: -0.6375, y: -0.68749994, z: 3.1874998, w: 0.6375} + firstChild: 1049 + - distancesA: {x: -1.3249999, y: -1.4229816, z: -0.049999956, w: -0.315111} + distancesB: {x: -1.3249999, y: -1.4229817, z: -0.049999956, w: -0.31510922} + center: {x: -0.6375, y: -0.68749994, z: 4.4624996, w: 0.6375} + firstChild: 1057 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: -1.9124999, y: 0.58750004, z: 0.6375, w: 0.6375} + firstChild: 1065 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: -1.9124999, y: 0.58750004, z: 1.9124999, w: 0.6375} + firstChild: 1073 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.45, w: 2.45} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.5} + center: {x: -1.9124999, y: 1.8625, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.45, w: 2.45} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.45} + center: {x: -1.9124999, y: 1.8625, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: -0.6375, y: 0.58750004, z: 0.6375, w: 0.6375} + firstChild: 1081 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: -0.6375, y: 0.58750004, z: 1.9124999, w: 0.6375} + firstChild: 1089 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.5} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.5} + center: {x: -0.6375, y: 1.8625, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.45} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.45} + center: {x: -0.6375, y: 1.8625, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.1750002} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.1750002} + center: {x: -1.9124999, y: 0.58750004, z: 3.1874998, w: 0.6375} + firstChild: 1097 + - distancesA: {x: -0.049999956, y: -0.31512922, z: 1.1750003, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.315111, z: 1.1750003, w: -0.09999943} + center: {x: -1.9124999, y: 0.58750004, z: 4.4624996, w: 0.6375} + firstChild: 1105 + - distancesA: {x: 1.2249999, y: 1.1750002, z: 2.45, w: 1.1750002} + distancesB: {x: 1.2249999, y: 1.1750002, z: 2.4500003, w: 1.1750002} + center: {x: -1.9124999, y: 1.8625, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + center: {x: -1.9124999, y: 1.8625, z: 4.4624996, w: 0.6375} + firstChild: 1113 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.1750002} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.1750002} + center: {x: -0.6375, y: 0.58750004, z: 3.1874998, w: 0.6375} + firstChild: 1121 + - distancesA: {x: -0.049999956, y: -0.315111, z: 1.1750003, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.31510922, z: 1.1750003, w: -0.09999943} + center: {x: -0.6375, y: 0.58750004, z: 4.4624996, w: 0.6375} + firstChild: 1129 + - distancesA: {x: 1.2249999, y: 1.1750002, z: 2.4500003, w: 1.1750002} + distancesB: {x: 1.2249999, y: 1.1750002, z: 2.4500003, w: 1.1750002} + center: {x: -0.6375, y: 1.8625, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + center: {x: -0.6375, y: 1.8625, z: 4.4624996, w: 0.6375} + firstChild: 1137 + - distancesA: {x: -0.34850657, y: -0.09999943, z: -0.34850657, w: -0.09999943} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + center: {x: -4.4624996, y: 3.1375, z: -4.4624996, w: 0.6375} + firstChild: 1145 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 1.1750002, y: 1.1750003, z: 1.1750002, w: 1.1750003} + center: {x: -4.4624996, y: 3.1375, z: -3.1874998, w: 0.6375} + firstChild: 1153 + - distancesA: {x: -0.34850657, y: -0.09999943, z: -0.35207498, w: -0.11180276} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.11180276, w: 1.1760637} + center: {x: -4.4624996, y: 4.4125, z: -4.4624996, w: 0.6375} + firstChild: 1161 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 1.1750002, y: 1.1750003, z: 1.1760635, w: 1.1760637} + center: {x: -4.4624996, y: 4.4125, z: -3.1874998, w: 0.6375} + firstChild: 1169 + - distancesA: {x: -0.09999943, y: 1.1750002, z: -0.09999943, w: 1.1750002} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + center: {x: -3.1874998, y: 3.1375, z: -4.4624996, w: 0.6375} + firstChild: 1177 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 1.1750002, y: 2.4500003, z: 1.1750002, w: 2.4500003} + center: {x: -3.1874998, y: 3.1375, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 1.1750002, z: -0.11180276, w: 1.1760635} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.11180276, w: 1.1760637} + center: {x: -3.1874998, y: 4.4125, z: -4.4624996, w: 0.6375} + firstChild: 1185 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 1.1750002, y: 2.4500003, z: 1.1760635, w: 2.4505103} + center: {x: -3.1874998, y: 4.4125, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 1.1750003, y: 1.1750003, z: 1.1750003, w: 1.1750003} + center: {x: -4.4624996, y: 3.1375, z: -1.9124999, w: 0.6375} + firstChild: 1193 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 1.1750003, y: 1.1750003, z: 1.1750003, w: 1.1750003} + center: {x: -4.4624996, y: 3.1375, z: -0.6375, w: 0.6375} + firstChild: 1201 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 1.1750003, y: 1.1750003, z: 1.1760637, w: 1.1760637} + center: {x: -4.4624996, y: 4.4125, z: -1.9124999, w: 0.6375} + firstChild: 1209 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 1.1750003, y: 1.1750003, z: 1.1760637, w: 1.1760637} + center: {x: -4.4624996, y: 4.4125, z: -0.6375, w: 0.6375} + firstChild: 1217 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 2.45, y: 2.4500003, z: 2.45, w: 2.4500003} + center: {x: -3.1874998, y: 3.1375, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 2.4500003, y: 2.4500003, z: 2.4500003, w: 2.4500003} + center: {x: -3.1874998, y: 3.1375, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 2.45, y: 2.4500003, z: 2.4505103, w: 2.4505103} + center: {x: -3.1874998, y: 4.4125, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 2.4500003, y: 2.4500003, z: 2.4505103, w: 2.4505103} + center: {x: -3.1874998, y: 4.4125, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.3520751, y: -0.11180318, z: -1.3700666, w: -1.3287684} + distancesB: {x: -0.11180318, y: 1.1760638, z: -1.3287684, w: 1.7709466} + center: {x: -4.4624996, y: 5.6875005, z: -4.4624996, w: 0.6375} + firstChild: 1225 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -1.3287684, w: -1.3287684} + distancesB: {x: 1.1760635, y: 1.1760638, z: 1.7709464, w: 1.7709466} + center: {x: -4.4624996, y: 5.6875005, z: -3.1874998, w: 0.6375} + firstChild: 1233 + - distancesA: {x: -1.3700666, y: -1.3287684, z: -2.6232529, w: -2.601922} + distancesB: {x: -1.3287684, y: 1.7709466, z: -2.601922, w: 2.8531778} + center: {x: -4.4624996, y: 6.9625, z: -4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3287684, y: -1.3287684, z: -2.601922, w: -2.601922} + distancesB: {x: 1.7709464, y: 1.7709466, z: 2.8531778, w: 2.8531778} + center: {x: -4.4624996, y: 6.9625, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 1.1760635, z: -1.3287684, w: 1.7709464} + distancesB: {x: -0.11180318, y: 1.1760638, z: -1.3287684, w: 1.7709466} + center: {x: -3.1874998, y: 5.6875005, z: -4.4624996, w: 0.6375} + firstChild: 1241 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.7709464, w: 1.7709464} + distancesB: {x: 1.1760635, y: 2.4505103, z: 1.7709464, w: 2.7853415} + center: {x: -3.1874998, y: 5.6875005, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3287684, y: 1.7709464, z: -2.601922, w: 2.8531778} + distancesB: {x: -1.3287684, y: 1.7709466, z: -2.601922, w: 2.8531778} + center: {x: -3.1874998, y: 6.9625, z: -4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709464, y: 1.7709464, z: 2.8531778, w: 2.8531778} + distancesB: {x: 1.7709464, y: 2.7853415, z: 2.8531778, w: 3.5724645} + center: {x: -3.1874998, y: 6.9625, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -1.3287684, w: -1.3287684} + distancesB: {x: 1.1760638, y: 1.1760638, z: 1.7709466, w: 1.7709466} + center: {x: -4.4624996, y: 5.6875005, z: -1.9124999, w: 0.6375} + firstChild: 1249 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -1.3287684, w: -1.3287684} + distancesB: {x: 1.1760638, y: 1.1760638, z: 1.7709466, w: 1.7709466} + center: {x: -4.4624996, y: 5.6875005, z: -0.6375, w: 0.6375} + firstChild: 1257 + - distancesA: {x: -1.3287684, y: -1.3287684, z: -2.601922, w: -2.601922} + distancesB: {x: 1.7709466, y: 1.7709466, z: 2.8531778, w: 2.8531778} + center: {x: -4.4624996, y: 6.9625, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3287684, y: -1.3287684, z: -2.601922, w: -2.601922} + distancesB: {x: 1.7709466, y: 1.7709466, z: 2.8531778, w: 2.8531778} + center: {x: -4.4624996, y: 6.9625, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.7709464, w: 1.7709464} + distancesB: {x: 2.4505103, y: 2.4505103, z: 2.7853413, w: 2.7853415} + center: {x: -3.1874998, y: 5.6875005, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.7709464, w: 1.7709464} + distancesB: {x: 2.4505103, y: 2.4505103, z: 2.7853415, w: 2.7853415} + center: {x: -3.1874998, y: 5.6875005, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709464, y: 1.7709464, z: 2.8531778, w: 2.8531778} + distancesB: {x: 2.7853413, y: 2.7853415, z: 3.572464, w: 3.5724645} + center: {x: -3.1874998, y: 6.9625, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709464, y: 1.7709464, z: 2.8531778, w: 2.8531778} + distancesB: {x: 2.7853415, y: 2.7853415, z: 3.5724645, w: 3.5724645} + center: {x: -3.1874998, y: 6.9625, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + center: {x: -1.9124999, y: 3.1375, z: -4.4624996, w: 0.6375} + firstChild: 1265 + - distancesA: {x: 1.1750002, y: 2.45, z: 1.1750002, w: 2.45} + distancesB: {x: 1.1750002, y: 2.4500003, z: 1.1750002, w: 2.4500003} + center: {x: -1.9124999, y: 3.1375, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.11180276, w: 1.1760637} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.11180276, w: 1.1760637} + center: {x: -1.9124999, y: 4.4125, z: -4.4624996, w: 0.6375} + firstChild: 1273 + - distancesA: {x: 1.1750002, y: 2.45, z: 1.1760635, w: 2.4505103} + distancesB: {x: 1.1750002, y: 2.4500003, z: 1.1760635, w: 2.4505103} + center: {x: -1.9124999, y: 4.4125, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + center: {x: -0.6375, y: 3.1375, z: -4.4624996, w: 0.6375} + firstChild: 1281 + - distancesA: {x: 1.1750002, y: 2.4500003, z: 1.1750002, w: 2.4500003} + distancesB: {x: 1.1750002, y: 2.4500003, z: 1.1750002, w: 2.4500003} + center: {x: -0.6375, y: 3.1375, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.11180276, w: 1.1760637} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.11180276, w: 1.1760637} + center: {x: -0.6375, y: 4.4125, z: -4.4624996, w: 0.6375} + firstChild: 1289 + - distancesA: {x: 1.1750002, y: 2.4500003, z: 1.1760635, w: 2.4505103} + distancesB: {x: 1.1750002, y: 2.4500003, z: 1.1760635, w: 2.4505103} + center: {x: -0.6375, y: 4.4125, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 1.1760638, z: -1.3287684, w: 1.7709466} + distancesB: {x: -0.11180318, y: 1.1760638, z: -1.3287684, w: 1.7709466} + center: {x: -1.9124999, y: 5.6875005, z: -4.4624996, w: 0.6375} + firstChild: 1297 + - distancesA: {x: 1.1760635, y: 2.4505103, z: 1.7709464, w: 2.7853413} + distancesB: {x: 1.1760635, y: 2.4505103, z: 1.7709464, w: 2.7853415} + center: {x: -1.9124999, y: 5.6875005, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3287684, y: 1.7709466, z: -2.601922, w: 2.8531778} + distancesB: {x: -1.3287684, y: 1.7709466, z: -2.601922, w: 2.8531778} + center: {x: -1.9124999, y: 6.9625, z: -4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709464, y: 2.7853413, z: 2.8531778, w: 3.572464} + distancesB: {x: 1.7709464, y: 2.7853415, z: 2.8531778, w: 3.5724645} + center: {x: -1.9124999, y: 6.9625, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 1.1760638, z: -1.3287684, w: 1.7709466} + distancesB: {x: -0.11180318, y: 1.1760638, z: -1.3287684, w: 1.7709466} + center: {x: -0.6375, y: 5.6875005, z: -4.4624996, w: 0.6375} + firstChild: 1305 + - distancesA: {x: 1.1760635, y: 2.4505103, z: 1.7709464, w: 2.7853415} + distancesB: {x: 1.1760635, y: 2.4505103, z: 1.7709464, w: 2.7853415} + center: {x: -0.6375, y: 5.6875005, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3287684, y: 1.7709466, z: -2.601922, w: 2.8531778} + distancesB: {x: -1.3287684, y: 1.7709466, z: -2.601922, w: 2.8531778} + center: {x: -0.6375, y: 6.9625, z: -4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709464, y: 2.7853415, z: 2.8531778, w: 3.5724645} + distancesB: {x: 1.7709464, y: 2.7853415, z: 2.8531778, w: 3.5724645} + center: {x: -0.6375, y: 6.9625, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 1.1750003, y: 1.1750003, z: 1.1750003, w: 1.1750003} + center: {x: -4.4624996, y: 3.1375, z: 0.6375, w: 0.6375} + firstChild: 1313 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 1.1750003, y: 1.1750003, z: 1.1750003, w: 1.1750003} + center: {x: -4.4624996, y: 3.1375, z: 1.9124999, w: 0.6375} + firstChild: 1321 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 1.1750003, y: 1.1750003, z: 1.1760637, w: 1.1760637} + center: {x: -4.4624996, y: 4.4125, z: 0.6375, w: 0.6375} + firstChild: 1329 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 1.1750003, y: 1.1750003, z: 1.1760637, w: 1.1760637} + center: {x: -4.4624996, y: 4.4125, z: 1.9124999, w: 0.6375} + firstChild: 1337 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 2.4500003, y: 2.4500003, z: 2.4500003, w: 2.4500003} + center: {x: -3.1874998, y: 3.1375, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 2.4500003, y: 2.45, z: 2.4500003, w: 2.45} + center: {x: -3.1874998, y: 3.1375, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 2.4500003, y: 2.4500003, z: 2.4505103, w: 2.4505103} + center: {x: -3.1874998, y: 4.4125, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 2.4500003, y: 2.45, z: 2.4505103, w: 2.4505103} + center: {x: -3.1874998, y: 4.4125, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 1.1750003, y: 1.1750002, z: 1.1750003, w: 1.1750002} + center: {x: -4.4624996, y: 3.1375, z: 3.1874998, w: 0.6375} + firstChild: 1345 + - distancesA: {x: -0.09999943, y: -0.34850657, z: -0.09999943, w: -0.34850657} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + center: {x: -4.4624996, y: 3.1375, z: 4.4624996, w: 0.6375} + firstChild: 1353 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 1.1750003, y: 1.1750002, z: 1.1760637, w: 1.1760635} + center: {x: -4.4624996, y: 4.4125, z: 3.1874998, w: 0.6375} + firstChild: 1361 + - distancesA: {x: -0.09999943, y: -0.34850657, z: -0.11180276, w: -0.35207498} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1760637, w: -0.11180276} + center: {x: -4.4624996, y: 4.4125, z: 4.4624996, w: 0.6375} + firstChild: 1369 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 2.4500003, y: 1.1750002, z: 2.4500003, w: 1.1750002} + center: {x: -3.1874998, y: 3.1375, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750002, y: -0.09999943, z: 1.1750002, w: -0.09999943} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + center: {x: -3.1874998, y: 3.1375, z: 4.4624996, w: 0.6375} + firstChild: 1377 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 2.4500003, y: 1.1750002, z: 2.4505103, w: 1.1760635} + center: {x: -3.1874998, y: 4.4125, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750002, y: -0.09999943, z: 1.1760635, w: -0.11180276} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1760637, w: -0.11180276} + center: {x: -3.1874998, y: 4.4125, z: 4.4624996, w: 0.6375} + firstChild: 1385 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -1.3287684, w: -1.3287684} + distancesB: {x: 1.1760638, y: 1.1760638, z: 1.7709466, w: 1.7709466} + center: {x: -4.4624996, y: 5.6875005, z: 0.6375, w: 0.6375} + firstChild: 1393 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -1.3287684, w: -1.3287684} + distancesB: {x: 1.1760638, y: 1.1760638, z: 1.7709466, w: 1.7709466} + center: {x: -4.4624996, y: 5.6875005, z: 1.9124999, w: 0.6375} + firstChild: 1401 + - distancesA: {x: -1.3287684, y: -1.3287684, z: -2.601922, w: -2.601922} + distancesB: {x: 1.7709466, y: 1.7709466, z: 2.8531778, w: 2.8531778} + center: {x: -4.4624996, y: 6.9625, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3287684, y: -1.3287684, z: -2.601922, w: -2.601922} + distancesB: {x: 1.7709466, y: 1.7709466, z: 2.8531778, w: 2.8531778} + center: {x: -4.4624996, y: 6.9625, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.7709464, w: 1.7709464} + distancesB: {x: 2.4505103, y: 2.4505103, z: 2.7853415, w: 2.7853415} + center: {x: -3.1874998, y: 5.6875005, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.7709464, w: 1.7709464} + distancesB: {x: 2.4505103, y: 2.4505103, z: 2.7853415, w: 2.7853413} + center: {x: -3.1874998, y: 5.6875005, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709464, y: 1.7709464, z: 2.8531778, w: 2.8531778} + distancesB: {x: 2.7853415, y: 2.7853415, z: 3.5724645, w: 3.5724645} + center: {x: -3.1874998, y: 6.9625, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709464, y: 1.7709464, z: 2.8531778, w: 2.8531778} + distancesB: {x: 2.7853415, y: 2.7853413, z: 3.5724645, w: 3.572464} + center: {x: -3.1874998, y: 6.9625, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -1.3287684, w: -1.3287684} + distancesB: {x: 1.1760638, y: 1.1760635, z: 1.7709466, w: 1.7709464} + center: {x: -4.4624996, y: 5.6875005, z: 3.1874998, w: 0.6375} + firstChild: 1409 + - distancesA: {x: -0.11180318, y: -0.3520751, z: -1.3287684, w: -1.3700666} + distancesB: {x: 1.1760638, y: -0.11180318, z: 1.7709466, w: -1.3287684} + center: {x: -4.4624996, y: 5.6875005, z: 4.4624996, w: 0.6375} + firstChild: 1417 + - distancesA: {x: -1.3287684, y: -1.3287684, z: -2.601922, w: -2.601922} + distancesB: {x: 1.7709466, y: 1.7709464, z: 2.8531778, w: 2.8531778} + center: {x: -4.4624996, y: 6.9625, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3287684, y: -1.3700666, z: -2.601922, w: -2.6232529} + distancesB: {x: 1.7709466, y: -1.3287684, z: 2.8531778, w: -2.601922} + center: {x: -4.4624996, y: 6.9625, z: 4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.7709464, w: 1.7709464} + distancesB: {x: 2.4505103, y: 1.1760635, z: 2.7853415, w: 1.7709464} + center: {x: -3.1874998, y: 5.6875005, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1760635, y: -0.11180318, z: 1.7709464, w: -1.3287684} + distancesB: {x: 1.1760638, y: -0.11180318, z: 1.7709466, w: -1.3287684} + center: {x: -3.1874998, y: 5.6875005, z: 4.4624996, w: 0.6375} + firstChild: 1425 + - distancesA: {x: 1.7709464, y: 1.7709464, z: 2.8531778, w: 2.8531778} + distancesB: {x: 2.7853415, y: 1.7709464, z: 3.5724645, w: 2.8531778} + center: {x: -3.1874998, y: 6.9625, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709464, y: -1.3287684, z: 2.8531778, w: -2.601922} + distancesB: {x: 1.7709466, y: -1.3287684, z: 2.8531778, w: -2.601922} + center: {x: -3.1874998, y: 6.9625, z: 4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.45, y: 1.1750002, z: 2.45, w: 1.1750002} + distancesB: {x: 2.4500003, y: 1.1750002, z: 2.4500003, w: 1.1750002} + center: {x: -1.9124999, y: 3.1375, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + center: {x: -1.9124999, y: 3.1375, z: 4.4624996, w: 0.6375} + firstChild: 1433 + - distancesA: {x: 2.45, y: 1.1750002, z: 2.4505103, w: 1.1760635} + distancesB: {x: 2.4500003, y: 1.1750002, z: 2.4505103, w: 1.1760635} + center: {x: -1.9124999, y: 4.4125, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1760637, w: -0.11180276} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1760637, w: -0.11180276} + center: {x: -1.9124999, y: 4.4125, z: 4.4624996, w: 0.6375} + firstChild: 1441 + - distancesA: {x: 2.4500003, y: 1.1750002, z: 2.4500003, w: 1.1750002} + distancesB: {x: 2.4500003, y: 1.1750002, z: 2.4500003, w: 1.1750002} + center: {x: -0.6375, y: 3.1375, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + center: {x: -0.6375, y: 3.1375, z: 4.4624996, w: 0.6375} + firstChild: 1449 + - distancesA: {x: 2.4500003, y: 1.1750002, z: 2.4505103, w: 1.1760635} + distancesB: {x: 2.4500003, y: 1.1750002, z: 2.4505103, w: 1.1760635} + center: {x: -0.6375, y: 4.4125, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1760637, w: -0.11180276} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1760637, w: -0.11180276} + center: {x: -0.6375, y: 4.4125, z: 4.4624996, w: 0.6375} + firstChild: 1457 + - distancesA: {x: 2.4505103, y: 1.1760635, z: 2.7853413, w: 1.7709464} + distancesB: {x: 2.4505103, y: 1.1760635, z: 2.7853415, w: 1.7709464} + center: {x: -1.9124999, y: 5.6875005, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1760638, y: -0.11180318, z: 1.7709466, w: -1.3287684} + distancesB: {x: 1.1760638, y: -0.11180318, z: 1.7709466, w: -1.3287684} + center: {x: -1.9124999, y: 5.6875005, z: 4.4624996, w: 0.6375} + firstChild: 1465 + - distancesA: {x: 2.7853413, y: 1.7709464, z: 3.572464, w: 2.8531778} + distancesB: {x: 2.7853415, y: 1.7709464, z: 3.5724645, w: 2.8531778} + center: {x: -1.9124999, y: 6.9625, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709466, y: -1.3287684, z: 2.8531778, w: -2.601922} + distancesB: {x: 1.7709466, y: -1.3287684, z: 2.8531778, w: -2.601922} + center: {x: -1.9124999, y: 6.9625, z: 4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.4505103, y: 1.1760635, z: 2.7853415, w: 1.7709464} + distancesB: {x: 2.4505103, y: 1.1760635, z: 2.7853415, w: 1.7709464} + center: {x: -0.6375, y: 5.6875005, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1760638, y: -0.11180318, z: 1.7709466, w: -1.3287684} + distancesB: {x: 1.1760638, y: -0.11180318, z: 1.7709466, w: -1.3287684} + center: {x: -0.6375, y: 5.6875005, z: 4.4624996, w: 0.6375} + firstChild: 1473 + - distancesA: {x: 2.7853415, y: 1.7709464, z: 3.5724645, w: 2.8531778} + distancesB: {x: 2.7853415, y: 1.7709464, z: 3.5724645, w: 2.8531778} + center: {x: -0.6375, y: 6.9625, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709466, y: -1.3287684, z: 2.8531778, w: -2.601922} + distancesB: {x: 1.7709466, y: -1.3287684, z: 2.8531778, w: -2.601922} + center: {x: -0.6375, y: 6.9625, z: 4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6575296, y: -2.6, z: -1.4229816, w: -1.3249998} + distancesB: {x: -2.6575296, y: -2.6, z: -1.4229819, w: -1.3249998} + center: {x: 0.6375, y: -1.9624999, z: -4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 0.6375, y: -1.9624999, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.4229816, y: -1.3249999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -1.422982, y: -1.3249999, z: -0.31510916, w: -0.049999956} + center: {x: 0.6375, y: -0.68749994, z: -4.4624996, w: 0.6375} + firstChild: 1481 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 0.6375, y: -0.68749994, z: -3.1874998, w: 0.6375} + firstChild: 1489 + - distancesA: {x: -2.6575296, y: -2.6, z: -1.422982, w: -1.3249998} + distancesB: {x: -2.6575296, y: -2.6, z: -1.4229816, w: -1.3249998} + center: {x: 1.9124999, y: -1.9624999, z: -4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 1.9124999, y: -1.9624999, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.422982, y: -1.3249999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -1.4229816, y: -1.3249999, z: -0.31510916, w: -0.049999956} + center: {x: 1.9124999, y: -0.68749994, z: -4.4624996, w: 0.6375} + firstChild: 1497 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 1.9124999, y: -0.68749994, z: -3.1874998, w: 0.6375} + firstChild: 1505 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 0.6375, y: -1.9624999, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 0.6375, y: -1.9624999, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 0.6375, y: -0.68749994, z: -1.9124999, w: 0.6375} + firstChild: 1513 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 0.6375, y: -0.68749994, z: -0.6375, w: 0.6375} + firstChild: 1521 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 1.9124999, y: -1.9624999, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 1.9124999, y: -1.9624999, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 1.9124999, y: -0.68749994, z: -1.9124999, w: 0.6375} + firstChild: 1529 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 1.9124999, y: -0.68749994, z: -0.6375, w: 0.6375} + firstChild: 1537 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 1.1750003} + center: {x: 0.6375, y: 0.58750004, z: -4.4624996, w: 0.6375} + firstChild: 1545 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.225} + center: {x: 0.6375, y: 0.58750004, z: -3.1874998, w: 0.6375} + firstChild: 1553 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + center: {x: 0.6375, y: 1.8625, z: -4.4624996, w: 0.6375} + firstChild: 1561 + - distancesA: {x: 1.1750002, y: 1.2249999, z: 1.1750002, w: 2.4500003} + distancesB: {x: 1.1750002, y: 1.2249999, z: 1.1750002, w: 2.4500003} + center: {x: 0.6375, y: 1.8625, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 1.1750003} + center: {x: 1.9124999, y: 0.58750004, z: -4.4624996, w: 0.6375} + firstChild: 1569 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.225} + center: {x: 1.9124999, y: 0.58750004, z: -3.1874998, w: 0.6375} + firstChild: 1577 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + center: {x: 1.9124999, y: 1.8625, z: -4.4624996, w: 0.6375} + firstChild: 1585 + - distancesA: {x: 1.1750002, y: 1.2249999, z: 1.1750002, w: 2.4500003} + distancesB: {x: 1.1750002, y: 1.2249999, z: 1.1750002, w: 2.45} + center: {x: 1.9124999, y: 1.8625, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: 0.6375, y: 0.58750004, z: -1.9124999, w: 0.6375} + firstChild: 1593 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: 0.6375, y: 0.58750004, z: -0.6375, w: 0.6375} + firstChild: 1601 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.45, w: 2.5} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.45, w: 2.5} + center: {x: 0.6375, y: 1.8625, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.5} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.5} + center: {x: 0.6375, y: 1.8625, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: 1.9124999, y: 0.58750004, z: -1.9124999, w: 0.6375} + firstChild: 1609 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: 1.9124999, y: 0.58750004, z: -0.6375, w: 0.6375} + firstChild: 1617 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.45, w: 2.5} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.45, w: 2.45} + center: {x: 1.9124999, y: 1.8625, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.5} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.45, w: 2.45} + center: {x: 1.9124999, y: 1.8625, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6575296, y: -2.6, z: -1.4229816, w: -1.3249998} + distancesB: {x: -2.6575296, y: -2.6, z: -1.4229815, w: -1.3249998} + center: {x: 3.1874998, y: -1.9624999, z: -4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 3.1874998, y: -1.9624999, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.4229819, y: -1.3249999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -1.4229816, y: -1.3249999, z: -0.31510916, w: -0.049999956} + center: {x: 3.1874998, y: -0.68749994, z: -4.4624996, w: 0.6375} + firstChild: 1625 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 3.1874998, y: -0.68749994, z: -3.1874998, w: 0.6375} + firstChild: 1633 + - distancesA: {x: -2.6575296, y: -2.6, z: -1.4229815, w: -1.3249998} + distancesB: {x: -2.7140434, y: -2.6575296, z: -1.5167223, w: -1.4229891} + center: {x: 4.4624996, y: -1.9624999, z: -4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6575296, y: -2.6575296, z: -1.4229838, w: -1.422986} + center: {x: 4.4624996, y: -1.9624999, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.4229816, y: -1.3249999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -1.5167226, y: -1.4229892, z: -0.51686233, w: -0.31510916} + center: {x: 4.4624996, y: -0.68749994, z: -4.4624996, w: 0.6375} + firstChild: 1641 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.4229839, y: -1.422986, z: -0.31510916, w: -0.31510916} + center: {x: 4.4624996, y: -0.68749994, z: -3.1874998, w: 0.6375} + firstChild: 1649 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 3.1874998, y: -1.9624999, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 3.1874998, y: -1.9624999, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 3.1874998, y: -0.68749994, z: -1.9124999, w: 0.6375} + firstChild: 1657 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 3.1874998, y: -0.68749994, z: -0.6375, w: 0.6375} + firstChild: 1665 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6575296, y: -2.6575296, z: -1.422986, w: -1.422982} + center: {x: 4.4624996, y: -1.9624999, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6575296, y: -2.6575296, z: -1.422982, w: -1.4229816} + center: {x: 4.4624996, y: -1.9624999, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.422986, y: -1.422982, z: -0.31510916, w: -0.3151088} + center: {x: 4.4624996, y: -0.68749994, z: -1.9124999, w: 0.6375} + firstChild: 1673 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.422982, y: -1.4229816, z: -0.3151088, w: -0.31510916} + center: {x: 4.4624996, y: -0.68749994, z: -0.6375, w: 0.6375} + firstChild: 1681 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 1.1750002} + center: {x: 3.1874998, y: 0.58750004, z: -4.4624996, w: 0.6375} + firstChild: 1689 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 0.58750004, z: -3.1874998, w: 0.6375} + firstChild: 1697 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.09999943, y: 1.1750002, z: -0.09999943, w: 1.1750002} + center: {x: 3.1874998, y: 1.8625, z: -4.4624996, w: 0.6375} + firstChild: 1705 + - distancesA: {x: 1.1750002, y: 1.2249999, z: 1.1750002, w: 2.4500003} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 1.8625, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.51686233, y: -0.31510916, z: -0.34850657, w: -0.09999943} + center: {x: 4.4624996, y: 0.58750004, z: -4.4624996, w: 0.6375} + firstChild: 1713 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.1750003} + distancesB: {x: -0.31510916, y: -0.31510916, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 0.58750004, z: -3.1874998, w: 0.6375} + firstChild: 1721 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.34850657, y: -0.09999943, z: -0.34850657, w: -0.09999943} + center: {x: 4.4624996, y: 1.8625, z: -4.4624996, w: 0.6375} + firstChild: 1729 + - distancesA: {x: 1.1750002, y: 1.1750003, z: 1.1750002, w: 1.1750003} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 1.8625, z: -3.1874998, w: 0.6375} + firstChild: 1737 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 0.58750004, z: -1.9124999, w: 0.6375} + firstChild: 1745 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 0.58750004, z: -0.6375, w: 0.6375} + firstChild: 1753 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.45, w: 2.4500003} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 1.8625, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.4500003, w: 2.4500003} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 1.8625, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750003, w: 1.1750003} + distancesB: {x: -0.31510916, y: -0.3151088, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 0.58750004, z: -1.9124999, w: 0.6375} + firstChild: 1761 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750003, w: 1.1750003} + distancesB: {x: -0.3151088, y: -0.31510916, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 0.58750004, z: -0.6375, w: 0.6375} + firstChild: 1769 + - distancesA: {x: 1.1750003, y: 1.1750003, z: 1.1750003, w: 1.1750003} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 1.8625, z: -1.9124999, w: 0.6375} + firstChild: 1777 + - distancesA: {x: 1.1750003, y: 1.1750003, z: 1.1750003, w: 1.1750003} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 1.8625, z: -0.6375, w: 0.6375} + firstChild: 1785 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 0.6375, y: -1.9624999, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 0.6375, y: -1.9624999, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 0.6375, y: -0.68749994, z: 0.6375, w: 0.6375} + firstChild: 1793 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 0.6375, y: -0.68749994, z: 1.9124999, w: 0.6375} + firstChild: 1801 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 1.9124999, y: -1.9624999, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 1.9124999, y: -1.9624999, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 1.9124999, y: -0.68749994, z: 0.6375, w: 0.6375} + firstChild: 1809 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 1.9124999, y: -0.68749994, z: 1.9124999, w: 0.6375} + firstChild: 1817 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 0.6375, y: -1.9624999, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6575296, z: -1.3249998, w: -1.4229816} + distancesB: {x: -2.6, y: -2.6575296, z: -1.3249998, w: -1.4229815} + center: {x: 0.6375, y: -1.9624999, z: 4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 0.6375, y: -0.68749994, z: 3.1874998, w: 0.6375} + firstChild: 1825 + - distancesA: {x: -1.3249999, y: -1.4229817, z: -0.049999956, w: -0.31510922} + distancesB: {x: -1.3249999, y: -1.4229816, z: -0.049999956, w: -0.315111} + center: {x: 0.6375, y: -0.68749994, z: 4.4624996, w: 0.6375} + firstChild: 1833 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 1.9124999, y: -1.9624999, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6575296, z: -1.3249998, w: -1.4229815} + distancesB: {x: -2.6, y: -2.6575296, z: -1.3249998, w: -1.4229815} + center: {x: 1.9124999, y: -1.9624999, z: 4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 1.9124999, y: -0.68749994, z: 3.1874998, w: 0.6375} + firstChild: 1841 + - distancesA: {x: -1.3249999, y: -1.4229816, z: -0.049999956, w: -0.315111} + distancesB: {x: -1.3249999, y: -1.4229816, z: -0.049999956, w: -0.31511} + center: {x: 1.9124999, y: -0.68749994, z: 4.4624996, w: 0.6375} + firstChild: 1849 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: 0.6375, y: 0.58750004, z: 0.6375, w: 0.6375} + firstChild: 1857 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: 0.6375, y: 0.58750004, z: 1.9124999, w: 0.6375} + firstChild: 1865 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.5} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.5} + center: {x: 0.6375, y: 1.8625, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.45} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.45} + center: {x: 0.6375, y: 1.8625, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: 1.9124999, y: 0.58750004, z: 0.6375, w: 0.6375} + firstChild: 1873 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + center: {x: 1.9124999, y: 0.58750004, z: 1.9124999, w: 0.6375} + firstChild: 1881 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.5} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.45, w: 2.45} + center: {x: 1.9124999, y: 1.8625, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.5, w: 2.45} + distancesB: {x: 1.2249999, y: 1.2249999, z: 2.45, w: 2.45} + center: {x: 1.9124999, y: 1.8625, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.1750002} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.1750002} + center: {x: 0.6375, y: 0.58750004, z: 3.1874998, w: 0.6375} + firstChild: 1889 + - distancesA: {x: -0.049999956, y: -0.31510922, z: 1.1750003, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.315111, z: 1.1750003, w: -0.09999943} + center: {x: 0.6375, y: 0.58750004, z: 4.4624996, w: 0.6375} + firstChild: 1897 + - distancesA: {x: 1.2249999, y: 1.1750002, z: 2.4500003, w: 1.1750002} + distancesB: {x: 1.2249999, y: 1.1750002, z: 2.4500003, w: 1.1750002} + center: {x: 0.6375, y: 1.8625, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + center: {x: 0.6375, y: 1.8625, z: 4.4624996, w: 0.6375} + firstChild: 1905 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.1750002} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.1750002} + center: {x: 1.9124999, y: 0.58750004, z: 3.1874998, w: 0.6375} + firstChild: 1913 + - distancesA: {x: -0.049999956, y: -0.315111, z: 1.1750003, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.31511, z: 1.1750003, w: -0.09999943} + center: {x: 1.9124999, y: 0.58750004, z: 4.4624996, w: 0.6375} + firstChild: 1921 + - distancesA: {x: 1.2249999, y: 1.1750002, z: 2.4500003, w: 1.1750002} + distancesB: {x: 1.2249999, y: 1.1750002, z: 2.45, w: 1.1750002} + center: {x: 1.9124999, y: 1.8625, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + center: {x: 1.9124999, y: 1.8625, z: 4.4624996, w: 0.6375} + firstChild: 1929 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 3.1874998, y: -1.9624999, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 3.1874998, y: -1.9624999, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 3.1874998, y: -0.68749994, z: 0.6375, w: 0.6375} + firstChild: 1937 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 3.1874998, y: -0.68749994, z: 1.9124999, w: 0.6375} + firstChild: 1945 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6575296, y: -2.6575296, z: -1.4229816, w: -1.4229819} + center: {x: 4.4624996, y: -1.9624999, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6575296, y: -2.6575296, z: -1.422982, w: -1.4229816} + center: {x: 4.4624996, y: -1.9624999, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.4229816, y: -1.422982, z: -0.31510916, w: -0.31510916} + center: {x: 4.4624996, y: -0.68749994, z: 0.6375, w: 0.6375} + firstChild: 1953 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.422982, y: -1.4229816, z: -0.31510916, w: -0.31510916} + center: {x: 4.4624996, y: -0.68749994, z: 1.9124999, w: 0.6375} + firstChild: 1961 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + center: {x: 3.1874998, y: -1.9624999, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6575296, z: -1.3249998, w: -1.4229815} + distancesB: {x: -2.6, y: -2.6575296, z: -1.3249998, w: -1.4229816} + center: {x: 3.1874998, y: -1.9624999, z: 4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + center: {x: 3.1874998, y: -0.68749994, z: 3.1874998, w: 0.6375} + firstChild: 1969 + - distancesA: {x: -1.3249999, y: -1.4229816, z: -0.049999956, w: -0.3151098} + distancesB: {x: -1.3249999, y: -1.4229817, z: -0.049999956, w: -0.31510893} + center: {x: 3.1874998, y: -0.68749994, z: 4.4624996, w: 0.6375} + firstChild: 1977 + - distancesA: {x: -2.6, y: -2.6, z: -1.3249998, w: -1.3249998} + distancesB: {x: -2.6575296, y: -2.6575296, z: -1.4229816, w: -1.4229815} + center: {x: 4.4624996, y: -1.9624999, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -2.6, y: -2.6575296, z: -1.3249998, w: -1.4229816} + distancesB: {x: -2.6575296, y: -2.7140434, z: -1.4229815, w: -1.5167223} + center: {x: 4.4624996, y: -1.9624999, z: 4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -1.4229819, y: -1.4229816, z: -0.31510916, w: -0.31510916} + center: {x: 4.4624996, y: -0.68749994, z: 3.1874998, w: 0.6375} + firstChild: 1985 + - distancesA: {x: -1.3249999, y: -1.4229817, z: -0.049999956, w: -0.31510893} + distancesB: {x: -1.4229816, y: -1.5167226, z: -0.31510916, w: -0.51686233} + center: {x: 4.4624996, y: -0.68749994, z: 4.4624996, w: 0.6375} + firstChild: 1993 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 0.58750004, z: 0.6375, w: 0.6375} + firstChild: 2001 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.225} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 0.58750004, z: 1.9124999, w: 0.6375} + firstChild: 2009 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.4500003, w: 2.4500003} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 1.8625, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.2249999, y: 1.2249999, z: 2.4500003, w: 2.45} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 1.8625, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750003, w: 1.1750003} + distancesB: {x: -0.31510916, y: -0.31510916, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 0.58750004, z: 0.6375, w: 0.6375} + firstChild: 2017 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750003, w: 1.1750003} + distancesB: {x: -0.31510916, y: -0.31510916, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 0.58750004, z: 1.9124999, w: 0.6375} + firstChild: 2025 + - distancesA: {x: 1.1750003, y: 1.1750003, z: 1.1750003, w: 1.1750003} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 1.8625, z: 0.6375, w: 0.6375} + firstChild: 2033 + - distancesA: {x: 1.1750003, y: 1.1750003, z: 1.1750003, w: 1.1750003} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 1.8625, z: 1.9124999, w: 0.6375} + firstChild: 2041 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.225, w: 1.1750002} + distancesB: {x: -0.049999956, y: -0.049999956, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 0.58750004, z: 3.1874998, w: 0.6375} + firstChild: 2049 + - distancesA: {x: -0.049999956, y: -0.3151098, z: 1.1750003, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.31510893, z: 1.1750002, w: -0.09999943} + center: {x: 3.1874998, y: 0.58750004, z: 4.4624996, w: 0.6375} + firstChild: 2057 + - distancesA: {x: 1.2249999, y: 1.1750002, z: 2.4500003, w: 1.1750002} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 1.8625, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + distancesB: {x: 1.1750002, y: -0.09999943, z: 1.1750002, w: -0.09999943} + center: {x: 3.1874998, y: 1.8625, z: 4.4624996, w: 0.6375} + firstChild: 2065 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 1.1750003, w: 1.1750002} + distancesB: {x: -0.31510916, y: -0.31510916, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 0.58750004, z: 3.1874998, w: 0.6375} + firstChild: 2073 + - distancesA: {x: -0.049999956, y: -0.31510893, z: 1.1750003, w: -0.09999943} + distancesB: {x: -0.31510916, y: -0.51686233, z: -0.09999943, w: -0.34850657} + center: {x: 4.4624996, y: 0.58750004, z: 4.4624996, w: 0.6375} + firstChild: 2081 + - distancesA: {x: 1.1750003, y: 1.1750002, z: 1.1750003, w: 1.1750002} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 1.8625, z: 3.1874998, w: 0.6375} + firstChild: 2089 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + distancesB: {x: -0.09999943, y: -0.34850657, z: -0.09999943, w: -0.34850657} + center: {x: 4.4624996, y: 1.8625, z: 4.4624996, w: 0.6375} + firstChild: 2097 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + center: {x: 0.6375, y: 3.1375, z: -4.4624996, w: 0.6375} + firstChild: 2105 + - distancesA: {x: 1.1750002, y: 2.4500003, z: 1.1750002, w: 2.4500003} + distancesB: {x: 1.1750002, y: 2.4500003, z: 1.1750002, w: 2.4500003} + center: {x: 0.6375, y: 3.1375, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.11180276, w: 1.1760637} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.11180276, w: 1.1760637} + center: {x: 0.6375, y: 4.4125, z: -4.4624996, w: 0.6375} + firstChild: 2113 + - distancesA: {x: 1.1750002, y: 2.4500003, z: 1.1760635, w: 2.4505103} + distancesB: {x: 1.1750002, y: 2.4500003, z: 1.1760635, w: 2.4505103} + center: {x: 0.6375, y: 4.4125, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + center: {x: 1.9124999, y: 3.1375, z: -4.4624996, w: 0.6375} + firstChild: 2121 + - distancesA: {x: 1.1750002, y: 2.4500003, z: 1.1750002, w: 2.4500003} + distancesB: {x: 1.1750002, y: 2.45, z: 1.1750002, w: 2.45} + center: {x: 1.9124999, y: 3.1375, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.11180276, w: 1.1760637} + distancesB: {x: -0.09999943, y: 1.1750003, z: -0.11180276, w: 1.1760637} + center: {x: 1.9124999, y: 4.4125, z: -4.4624996, w: 0.6375} + firstChild: 2129 + - distancesA: {x: 1.1750002, y: 2.4500003, z: 1.1760635, w: 2.4505103} + distancesB: {x: 1.1750002, y: 2.45, z: 1.1760635, w: 2.4505103} + center: {x: 1.9124999, y: 4.4125, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 1.1760638, z: -1.3287684, w: 1.7709466} + distancesB: {x: -0.11180318, y: 1.1760638, z: -1.3287684, w: 1.7709466} + center: {x: 0.6375, y: 5.6875005, z: -4.4624996, w: 0.6375} + firstChild: 2137 + - distancesA: {x: 1.1760635, y: 2.4505103, z: 1.7709464, w: 2.7853415} + distancesB: {x: 1.1760635, y: 2.4505103, z: 1.7709464, w: 2.7853415} + center: {x: 0.6375, y: 5.6875005, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3287684, y: 1.7709466, z: -2.601922, w: 2.8531778} + distancesB: {x: -1.3287684, y: 1.7709466, z: -2.601922, w: 2.8531778} + center: {x: 0.6375, y: 6.9625, z: -4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709464, y: 2.7853415, z: 2.8531778, w: 3.5724645} + distancesB: {x: 1.7709464, y: 2.7853415, z: 2.8531778, w: 3.5724645} + center: {x: 0.6375, y: 6.9625, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 1.1760638, z: -1.3287684, w: 1.7709466} + distancesB: {x: -0.11180318, y: 1.1760638, z: -1.3287684, w: 1.7709466} + center: {x: 1.9124999, y: 5.6875005, z: -4.4624996, w: 0.6375} + firstChild: 2145 + - distancesA: {x: 1.1760635, y: 2.4505103, z: 1.7709464, w: 2.7853415} + distancesB: {x: 1.1760635, y: 2.4505103, z: 1.7709464, w: 2.7853413} + center: {x: 1.9124999, y: 5.6875005, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3287684, y: 1.7709466, z: -2.601922, w: 2.8531778} + distancesB: {x: -1.3287684, y: 1.7709466, z: -2.601922, w: 2.8531778} + center: {x: 1.9124999, y: 6.9625, z: -4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709464, y: 2.7853415, z: 2.8531778, w: 3.5724645} + distancesB: {x: 1.7709464, y: 2.7853413, z: 2.8531778, w: 3.572464} + center: {x: 1.9124999, y: 6.9625, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.09999943, y: 1.1750002, z: -0.09999943, w: 1.1750002} + center: {x: 3.1874998, y: 3.1375, z: -4.4624996, w: 0.6375} + firstChild: 2153 + - distancesA: {x: 1.1750002, y: 2.4500003, z: 1.1750002, w: 2.4500003} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 3.1375, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.11180276, w: 1.1760637} + distancesB: {x: -0.09999943, y: 1.1750002, z: -0.11180276, w: 1.1760635} + center: {x: 3.1874998, y: 4.4125, z: -4.4624996, w: 0.6375} + firstChild: 2161 + - distancesA: {x: 1.1750002, y: 2.4500003, z: 1.1760635, w: 2.4505103} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: 3.1874998, y: 4.4125, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.09999943, w: 1.1750003} + distancesB: {x: -0.34850657, y: -0.09999943, z: -0.34850657, w: -0.09999943} + center: {x: 4.4624996, y: 3.1375, z: -4.4624996, w: 0.6375} + firstChild: 2169 + - distancesA: {x: 1.1750002, y: 1.1750003, z: 1.1750002, w: 1.1750003} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 3.1375, z: -3.1874998, w: 0.6375} + firstChild: 2177 + - distancesA: {x: -0.09999943, y: 1.1750003, z: -0.11180276, w: 1.1760637} + distancesB: {x: -0.34850657, y: -0.09999943, z: -0.35207498, w: -0.11180276} + center: {x: 4.4624996, y: 4.4125, z: -4.4624996, w: 0.6375} + firstChild: 2185 + - distancesA: {x: 1.1750002, y: 1.1750003, z: 1.1760635, w: 1.1760637} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.4624996, y: 4.4125, z: -3.1874998, w: 0.6375} + firstChild: 2193 + - distancesA: {x: 2.45, y: 2.4500003, z: 2.45, w: 2.4500003} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 3.1375, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.4500003, y: 2.4500003, z: 2.4500003, w: 2.4500003} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 3.1375, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.45, y: 2.4500003, z: 2.4505103, w: 2.4505103} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: 3.1874998, y: 4.4125, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.4500003, y: 2.4500003, z: 2.4505103, w: 2.4505103} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: 3.1874998, y: 4.4125, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: 1.1750003, z: 1.1750003, w: 1.1750003} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 3.1375, z: -1.9124999, w: 0.6375} + firstChild: 2201 + - distancesA: {x: 1.1750003, y: 1.1750003, z: 1.1750003, w: 1.1750003} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 3.1375, z: -0.6375, w: 0.6375} + firstChild: 2209 + - distancesA: {x: 1.1750003, y: 1.1750003, z: 1.1760637, w: 1.1760637} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.4624996, y: 4.4125, z: -1.9124999, w: 0.6375} + firstChild: 2217 + - distancesA: {x: 1.1750003, y: 1.1750003, z: 1.1760637, w: 1.1760637} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.4624996, y: 4.4125, z: -0.6375, w: 0.6375} + firstChild: 2225 + - distancesA: {x: -0.11180318, y: 1.1760638, z: -1.3287684, w: 1.7709466} + distancesB: {x: -0.11180318, y: 1.1760635, z: -1.3287684, w: 1.7709464} + center: {x: 3.1874998, y: 5.6875005, z: -4.4624996, w: 0.6375} + firstChild: 2233 + - distancesA: {x: 1.1760635, y: 2.4505103, z: 1.7709464, w: 2.7853415} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.7709464, w: 1.7709464} + center: {x: 3.1874998, y: 5.6875005, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.3287684, y: 1.7709466, z: -2.601922, w: 2.8531778} + distancesB: {x: -1.3287684, y: 1.7709464, z: -2.601922, w: 2.8531778} + center: {x: 3.1874998, y: 6.9625, z: -4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709464, y: 2.7853415, z: 2.8531778, w: 3.5724645} + distancesB: {x: 1.7709464, y: 1.7709464, z: 2.8531778, w: 2.8531778} + center: {x: 3.1874998, y: 6.9625, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 1.1760638, z: -1.3287684, w: 1.7709466} + distancesB: {x: -0.3520751, y: -0.11180318, z: -1.3700666, w: -1.3287684} + center: {x: 4.4624996, y: 5.6875005, z: -4.4624996, w: 0.6375} + firstChild: 2241 + - distancesA: {x: 1.1760635, y: 1.1760638, z: 1.7709464, w: 1.7709466} + distancesB: {x: -0.11180318, y: -0.11180318, z: -1.3287684, w: -1.3287684} + center: {x: 4.4624996, y: 5.6875005, z: -3.1874998, w: 0.6375} + firstChild: 2249 + - distancesA: {x: -1.3287684, y: 1.7709466, z: -2.601922, w: 2.8531778} + distancesB: {x: -1.3700666, y: -1.3287684, z: -2.6232529, w: -2.601922} + center: {x: 4.4624996, y: 6.9625, z: -4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709464, y: 1.7709466, z: 2.8531778, w: 2.8531778} + distancesB: {x: -1.3287684, y: -1.3287684, z: -2.601922, w: -2.601922} + center: {x: 4.4624996, y: 6.9625, z: -3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.4505103, y: 2.4505103, z: 2.7853413, w: 2.7853415} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.7709464, w: 1.7709464} + center: {x: 3.1874998, y: 5.6875005, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.4505103, y: 2.4505103, z: 2.7853415, w: 2.7853415} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.7709464, w: 1.7709464} + center: {x: 3.1874998, y: 5.6875005, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.7853413, y: 2.7853415, z: 3.572464, w: 3.5724645} + distancesB: {x: 1.7709464, y: 1.7709464, z: 2.8531778, w: 2.8531778} + center: {x: 3.1874998, y: 6.9625, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.7853415, y: 2.7853415, z: 3.5724645, w: 3.5724645} + distancesB: {x: 1.7709464, y: 1.7709464, z: 2.8531778, w: 2.8531778} + center: {x: 3.1874998, y: 6.9625, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1760638, y: 1.1760638, z: 1.7709466, w: 1.7709466} + distancesB: {x: -0.11180318, y: -0.11180318, z: -1.3287684, w: -1.3287684} + center: {x: 4.4624996, y: 5.6875005, z: -1.9124999, w: 0.6375} + firstChild: 2257 + - distancesA: {x: 1.1760638, y: 1.1760638, z: 1.7709466, w: 1.7709466} + distancesB: {x: -0.11180318, y: -0.11180318, z: -1.3287684, w: -1.3287684} + center: {x: 4.4624996, y: 5.6875005, z: -0.6375, w: 0.6375} + firstChild: 2265 + - distancesA: {x: 1.7709466, y: 1.7709466, z: 2.8531778, w: 2.8531778} + distancesB: {x: -1.3287684, y: -1.3287684, z: -2.601922, w: -2.601922} + center: {x: 4.4624996, y: 6.9625, z: -1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709466, y: 1.7709466, z: 2.8531778, w: 2.8531778} + distancesB: {x: -1.3287684, y: -1.3287684, z: -2.601922, w: -2.601922} + center: {x: 4.4624996, y: 6.9625, z: -0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.4500003, y: 1.1750002, z: 2.4500003, w: 1.1750002} + distancesB: {x: 2.4500003, y: 1.1750002, z: 2.4500003, w: 1.1750002} + center: {x: 0.6375, y: 3.1375, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + center: {x: 0.6375, y: 3.1375, z: 4.4624996, w: 0.6375} + firstChild: 2273 + - distancesA: {x: 2.4500003, y: 1.1750002, z: 2.4505103, w: 1.1760635} + distancesB: {x: 2.4500003, y: 1.1750002, z: 2.4505103, w: 1.1760635} + center: {x: 0.6375, y: 4.4125, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1760637, w: -0.11180276} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1760637, w: -0.11180276} + center: {x: 0.6375, y: 4.4125, z: 4.4624996, w: 0.6375} + firstChild: 2281 + - distancesA: {x: 2.4500003, y: 1.1750002, z: 2.4500003, w: 1.1750002} + distancesB: {x: 2.45, y: 1.1750002, z: 2.45, w: 1.1750002} + center: {x: 1.9124999, y: 3.1375, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + center: {x: 1.9124999, y: 3.1375, z: 4.4624996, w: 0.6375} + firstChild: 2289 + - distancesA: {x: 2.4500003, y: 1.1750002, z: 2.4505103, w: 1.1760635} + distancesB: {x: 2.45, y: 1.1750002, z: 2.4505103, w: 1.1760635} + center: {x: 1.9124999, y: 4.4125, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1760637, w: -0.11180276} + distancesB: {x: 1.1750003, y: -0.09999943, z: 1.1760637, w: -0.11180276} + center: {x: 1.9124999, y: 4.4125, z: 4.4624996, w: 0.6375} + firstChild: 2297 + - distancesA: {x: 2.4505103, y: 1.1760635, z: 2.7853415, w: 1.7709464} + distancesB: {x: 2.4505103, y: 1.1760635, z: 2.7853415, w: 1.7709464} + center: {x: 0.6375, y: 5.6875005, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1760638, y: -0.11180318, z: 1.7709466, w: -1.3287684} + distancesB: {x: 1.1760638, y: -0.11180318, z: 1.7709466, w: -1.3287684} + center: {x: 0.6375, y: 5.6875005, z: 4.4624996, w: 0.6375} + firstChild: 2305 + - distancesA: {x: 2.7853415, y: 1.7709464, z: 3.5724645, w: 2.8531778} + distancesB: {x: 2.7853415, y: 1.7709464, z: 3.5724645, w: 2.8531778} + center: {x: 0.6375, y: 6.9625, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709466, y: -1.3287684, z: 2.8531778, w: -2.601922} + distancesB: {x: 1.7709466, y: -1.3287684, z: 2.8531778, w: -2.601922} + center: {x: 0.6375, y: 6.9625, z: 4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.4505103, y: 1.1760635, z: 2.7853415, w: 1.7709464} + distancesB: {x: 2.4505103, y: 1.1760635, z: 2.7853413, w: 1.7709464} + center: {x: 1.9124999, y: 5.6875005, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1760638, y: -0.11180318, z: 1.7709466, w: -1.3287684} + distancesB: {x: 1.1760638, y: -0.11180318, z: 1.7709466, w: -1.3287684} + center: {x: 1.9124999, y: 5.6875005, z: 4.4624996, w: 0.6375} + firstChild: 2313 + - distancesA: {x: 2.7853415, y: 1.7709464, z: 3.5724645, w: 2.8531778} + distancesB: {x: 2.7853413, y: 1.7709464, z: 3.572464, w: 2.8531778} + center: {x: 1.9124999, y: 6.9625, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709466, y: -1.3287684, z: 2.8531778, w: -2.601922} + distancesB: {x: 1.7709466, y: -1.3287684, z: 2.8531778, w: -2.601922} + center: {x: 1.9124999, y: 6.9625, z: 4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.4500003, y: 2.4500003, z: 2.4500003, w: 2.4500003} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 3.1375, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.4500003, y: 2.45, z: 2.4500003, w: 2.45} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 3.1375, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.4500003, y: 2.4500003, z: 2.4505103, w: 2.4505103} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: 3.1874998, y: 4.4125, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.4500003, y: 2.45, z: 2.4505103, w: 2.4505103} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: 3.1874998, y: 4.4125, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: 1.1750003, z: 1.1750003, w: 1.1750003} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 3.1375, z: 0.6375, w: 0.6375} + firstChild: 2321 + - distancesA: {x: 1.1750003, y: 1.1750003, z: 1.1750003, w: 1.1750003} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 3.1375, z: 1.9124999, w: 0.6375} + firstChild: 2329 + - distancesA: {x: 1.1750003, y: 1.1750003, z: 1.1760637, w: 1.1760637} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.4624996, y: 4.4125, z: 0.6375, w: 0.6375} + firstChild: 2337 + - distancesA: {x: 1.1750003, y: 1.1750003, z: 1.1760637, w: 1.1760637} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.4624996, y: 4.4125, z: 1.9124999, w: 0.6375} + firstChild: 2345 + - distancesA: {x: 2.4500003, y: 1.1750002, z: 2.4500003, w: 1.1750002} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: 3.1874998, y: 3.1375, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + distancesB: {x: 1.1750002, y: -0.09999943, z: 1.1750002, w: -0.09999943} + center: {x: 3.1874998, y: 3.1375, z: 4.4624996, w: 0.6375} + firstChild: 2353 + - distancesA: {x: 2.4500003, y: 1.1750002, z: 2.4505103, w: 1.1760635} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: 3.1874998, y: 4.4125, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1760637, w: -0.11180276} + distancesB: {x: 1.1750002, y: -0.09999943, z: 1.1760635, w: -0.11180276} + center: {x: 3.1874998, y: 4.4125, z: 4.4624996, w: 0.6375} + firstChild: 2361 + - distancesA: {x: 1.1750003, y: 1.1750002, z: 1.1750003, w: 1.1750002} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.4624996, y: 3.1375, z: 3.1874998, w: 0.6375} + firstChild: 2369 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1750003, w: -0.09999943} + distancesB: {x: -0.09999943, y: -0.34850657, z: -0.09999943, w: -0.34850657} + center: {x: 4.4624996, y: 3.1375, z: 4.4624996, w: 0.6375} + firstChild: 2377 + - distancesA: {x: 1.1750003, y: 1.1750002, z: 1.1760637, w: 1.1760635} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.4624996, y: 4.4125, z: 3.1874998, w: 0.6375} + firstChild: 2385 + - distancesA: {x: 1.1750003, y: -0.09999943, z: 1.1760637, w: -0.11180276} + distancesB: {x: -0.09999943, y: -0.34850657, z: -0.11180276, w: -0.35207498} + center: {x: 4.4624996, y: 4.4125, z: 4.4624996, w: 0.6375} + firstChild: 2393 + - distancesA: {x: 2.4505103, y: 2.4505103, z: 2.7853415, w: 2.7853415} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.7709464, w: 1.7709464} + center: {x: 3.1874998, y: 5.6875005, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.4505103, y: 2.4505103, z: 2.7853415, w: 2.7853413} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.7709464, w: 1.7709464} + center: {x: 3.1874998, y: 5.6875005, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.7853415, y: 2.7853415, z: 3.5724645, w: 3.5724645} + distancesB: {x: 1.7709464, y: 1.7709464, z: 2.8531778, w: 2.8531778} + center: {x: 3.1874998, y: 6.9625, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.7853415, y: 2.7853413, z: 3.5724645, w: 3.572464} + distancesB: {x: 1.7709464, y: 1.7709464, z: 2.8531778, w: 2.8531778} + center: {x: 3.1874998, y: 6.9625, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1760638, y: 1.1760638, z: 1.7709466, w: 1.7709466} + distancesB: {x: -0.11180318, y: -0.11180318, z: -1.3287684, w: -1.3287684} + center: {x: 4.4624996, y: 5.6875005, z: 0.6375, w: 0.6375} + firstChild: 2401 + - distancesA: {x: 1.1760638, y: 1.1760638, z: 1.7709466, w: 1.7709466} + distancesB: {x: -0.11180318, y: -0.11180318, z: -1.3287684, w: -1.3287684} + center: {x: 4.4624996, y: 5.6875005, z: 1.9124999, w: 0.6375} + firstChild: 2409 + - distancesA: {x: 1.7709466, y: 1.7709466, z: 2.8531778, w: 2.8531778} + distancesB: {x: -1.3287684, y: -1.3287684, z: -2.601922, w: -2.601922} + center: {x: 4.4624996, y: 6.9625, z: 0.6375, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709466, y: 1.7709466, z: 2.8531778, w: 2.8531778} + distancesB: {x: -1.3287684, y: -1.3287684, z: -2.601922, w: -2.601922} + center: {x: 4.4624996, y: 6.9625, z: 1.9124999, w: 0.6375} + firstChild: -1 + - distancesA: {x: 2.4505103, y: 1.1760635, z: 2.7853415, w: 1.7709464} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.7709464, w: 1.7709464} + center: {x: 3.1874998, y: 5.6875005, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1760638, y: -0.11180318, z: 1.7709466, w: -1.3287684} + distancesB: {x: 1.1760635, y: -0.11180318, z: 1.7709464, w: -1.3287684} + center: {x: 3.1874998, y: 5.6875005, z: 4.4624996, w: 0.6375} + firstChild: 2417 + - distancesA: {x: 2.7853415, y: 1.7709464, z: 3.5724645, w: 2.8531778} + distancesB: {x: 1.7709464, y: 1.7709464, z: 2.8531778, w: 2.8531778} + center: {x: 3.1874998, y: 6.9625, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709466, y: -1.3287684, z: 2.8531778, w: -2.601922} + distancesB: {x: 1.7709464, y: -1.3287684, z: 2.8531778, w: -2.601922} + center: {x: 3.1874998, y: 6.9625, z: 4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.1760638, y: 1.1760635, z: 1.7709466, w: 1.7709464} + distancesB: {x: -0.11180318, y: -0.11180318, z: -1.3287684, w: -1.3287684} + center: {x: 4.4624996, y: 5.6875005, z: 3.1874998, w: 0.6375} + firstChild: 2425 + - distancesA: {x: 1.1760638, y: -0.11180318, z: 1.7709466, w: -1.3287684} + distancesB: {x: -0.11180318, y: -0.3520751, z: -1.3287684, w: -1.3700666} + center: {x: 4.4624996, y: 5.6875005, z: 4.4624996, w: 0.6375} + firstChild: 2433 + - distancesA: {x: 1.7709466, y: 1.7709464, z: 2.8531778, w: 2.8531778} + distancesB: {x: -1.3287684, y: -1.3287684, z: -2.601922, w: -2.601922} + center: {x: 4.4624996, y: 6.9625, z: 3.1874998, w: 0.6375} + firstChild: -1 + - distancesA: {x: 1.7709466, y: -1.3287684, z: 2.8531778, w: -2.601922} + distancesB: {x: -1.3287684, y: -1.3700666, z: -2.601922, w: -2.6232529} + center: {x: 4.4624996, y: 6.9625, z: 4.4624996, w: 0.6375} + firstChild: -1 + - distancesA: {x: -1.5167226, y: -1.4229829, z: -0.9615866, w: -0.83251137} + distancesB: {x: -1.422983, y: -1.3249999, z: -0.8325113, w: -0.6874999} + center: {x: -4.7812495, y: -1.0062499, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.4229829, y: -1.4229816, z: -0.83251137, w: -0.8325128} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.7812495, y: -1.0062499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.96158665, y: -0.8325115, z: -0.51686233, w: -0.31511512} + distancesB: {x: -0.8325113, y: -0.6874999, z: -0.31511536, w: -0.049999956} + center: {x: -4.7812495, y: -0.36874995, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325115, y: -0.8325129, z: -0.31511512, w: -0.31511882} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.7812495, y: -0.36874995, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.422983, y: -1.3249999, z: -0.8325113, w: -0.6874999} + distancesB: {x: -1.4229839, y: -1.3249999, z: -0.8325126, w: -0.6874999} + center: {x: -4.1437497, y: -1.0062499, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.1437497, y: -1.0062499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325113, y: -0.6874999, z: -0.31511536, w: -0.049999956} + distancesB: {x: -0.8325127, y: -0.6874999, z: -0.31510916, w: -0.049999956} + center: {x: -4.1437497, y: -0.36874995, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.1437497, y: -0.36874995, z: -4.1437497, w: 0.31875} + firstChild: 2441 + - distancesA: {x: -1.4229816, y: -1.4229816, z: -0.8325488, w: -0.8325144} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.7812495, y: -1.0062499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.4229816, y: -1.4229817, z: -0.8325144, w: -0.83251643} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.7812495, y: -1.0062499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325489, y: -0.8325145, z: -0.31514108, w: -0.31512374} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.7812495, y: -0.36874995, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325145, y: -0.8325165, z: -0.31512374, w: -0.31512922} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.7812495, y: -0.36874995, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.1437497, y: -1.0062499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.1437497, y: -1.0062499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.1437497, y: -0.36874995, z: -3.5062497, w: 0.31875} + firstChild: 2449 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.1437497, y: -0.36874995, z: -2.8687499, w: 0.31875} + firstChild: 2457 + - distancesA: {x: -1.4229892, y: -1.3249999, z: -0.8325489, w: -0.6874999} + distancesB: {x: -1.4229848, y: -1.3249999, z: -0.83251446, w: -0.6874999} + center: {x: -3.5062497, y: -1.0062499, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -3.5062497, y: -1.0062499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.832549, y: -0.6874999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -0.8325144, y: -0.6874999, z: -0.31510916, w: -0.049999956} + center: {x: -3.5062497, y: -0.36874995, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -3.5062497, y: -0.36874995, z: -4.1437497, w: 0.31875} + firstChild: 2465 + - distancesA: {x: -1.4229848, y: -1.3249999, z: -0.83251446, w: -0.6874999} + distancesB: {x: -1.422986, y: -1.3249999, z: -0.83250904, w: -0.6874999} + center: {x: -2.8687499, y: -1.0062499, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.8687499, y: -1.0062499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325144, y: -0.6874999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -0.83250904, y: -0.6874999, z: -0.31510916, w: -0.049999956} + center: {x: -2.8687499, y: -0.36874995, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.8687499, y: -0.36874995, z: -4.1437497, w: 0.31875} + firstChild: 2473 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -3.5062497, y: -1.0062499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -3.5062497, y: -1.0062499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -3.5062497, y: -0.36874995, z: -3.5062497, w: 0.31875} + firstChild: 2481 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -3.5062497, y: -0.36874995, z: -2.8687499, w: 0.31875} + firstChild: 2489 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.8687499, y: -1.0062499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.8687499, y: -1.0062499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.8687499, y: -0.36874995, z: -3.5062497, w: 0.31875} + firstChild: 2497 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.8687499, y: -0.36874995, z: -2.8687499, w: 0.31875} + firstChild: 2505 + - distancesA: {x: -1.4229817, y: -1.4229816, z: -0.83251643, w: -0.8325104} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.7812495, y: -1.0062499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.4229816, y: -1.4229816, z: -0.8325104, w: -0.8325096} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.7812495, y: -1.0062499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325165, y: -0.83251053, z: -0.31512922, w: -0.3151131} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.7812495, y: -0.36874995, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.83251053, y: -0.83250964, z: -0.3151131, w: -0.315111} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.7812495, y: -0.36874995, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.1437497, y: -1.0062499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.1437497, y: -1.0062499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.1437497, y: -0.36874995, z: -2.2312498, w: 0.31875} + firstChild: 2513 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.1437497, y: -0.36874995, z: -1.5937499, w: 0.31875} + firstChild: 2521 + - distancesA: {x: -1.4229816, y: -1.4229817, z: -0.8325096, w: -0.83251214} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.7812495, y: -1.0062499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.4229817, y: -1.4229817, z: -0.83251214, w: -0.8325089} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.7812495, y: -1.0062499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.83250964, y: -0.83251214, z: -0.315111, w: -0.31511757} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.7812495, y: -0.36874995, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.83251214, y: -0.8325089, z: -0.31511757, w: -0.31510922} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.7812495, y: -0.36874995, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.1437497, y: -1.0062499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.1437497, y: -1.0062499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.1437497, y: -0.36874995, z: -0.95624995, w: 0.31875} + firstChild: 2529 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.1437497, y: -0.36874995, z: -0.31875, w: 0.31875} + firstChild: 2537 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -3.5062497, y: -1.0062499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -3.5062497, y: -1.0062499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -3.5062497, y: -0.36874995, z: -2.2312498, w: 0.31875} + firstChild: 2545 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -3.5062497, y: -0.36874995, z: -1.5937499, w: 0.31875} + firstChild: 2553 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.8687499, y: -1.0062499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.8687499, y: -1.0062499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.8687499, y: -0.36874995, z: -2.2312498, w: 0.31875} + firstChild: 2561 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.8687499, y: -0.36874995, z: -1.5937499, w: 0.31875} + firstChild: 2569 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -3.5062497, y: -1.0062499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -3.5062497, y: -1.0062499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -3.5062497, y: -0.36874995, z: -0.95624995, w: 0.31875} + firstChild: 2577 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -3.5062497, y: -0.36874995, z: -0.31875, w: 0.31875} + firstChild: 2585 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.8687499, y: -1.0062499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.8687499, y: -1.0062499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.8687499, y: -0.36874995, z: -0.95624995, w: 0.31875} + firstChild: 2593 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.8687499, y: -0.36874995, z: -0.31875, w: 0.31875} + firstChild: 2601 + - distancesA: {x: -0.51686233, y: -0.31511512, z: -0.34850657, w: -0.09999943} + distancesB: {x: -0.31511536, y: -0.049999956, z: -0.09999943, w: 0.5375004} + center: {x: -4.7812495, y: 0.26875004, z: -4.7812495, w: 0.31875} + firstChild: 2609 + - distancesA: {x: -0.31511512, y: -0.31511882, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.26875004, z: -4.1437497, w: 0.31875} + firstChild: 2617 + - distancesA: {x: -0.34850657, y: -0.09999943, z: -0.34850657, w: -0.09999943} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -4.7812495, y: 0.90625, z: -4.7812495, w: 0.31875} + firstChild: 2625 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.90625, z: -4.1437497, w: 0.31875} + firstChild: 2633 + - distancesA: {x: -0.31511536, y: -0.049999956, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + center: {x: -4.1437497, y: 0.26875004, z: -4.7812495, w: 0.31875} + firstChild: 2641 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + center: {x: -4.1437497, y: 0.26875004, z: -4.1437497, w: 0.31875} + firstChild: 2649 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -4.1437497, y: 0.90625, z: -4.7812495, w: 0.31875} + firstChild: 2657 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + center: {x: -4.1437497, y: 0.90625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.31514108, y: -0.31512374, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.26875004, z: -3.5062497, w: 0.31875} + firstChild: 2665 + - distancesA: {x: -0.31512374, y: -0.31512922, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.26875004, z: -2.8687499, w: 0.31875} + firstChild: 2673 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.90625, z: -3.5062497, w: 0.31875} + firstChild: 2681 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.90625, z: -2.8687499, w: 0.31875} + firstChild: 2689 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -4.1437497, y: 0.26875004, z: -3.5062497, w: 0.31875} + firstChild: 2697 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -4.1437497, y: 0.26875004, z: -2.8687499, w: 0.31875} + firstChild: 2705 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 0.90625, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 0.90625, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.34850657, y: -0.09999943, z: -0.34850657, w: -0.09999943} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -4.7812495, y: 1.5437499, z: -4.7812495, w: 0.31875} + firstChild: 2713 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 1.5437499, z: -4.1437497, w: 0.31875} + firstChild: 2721 + - distancesA: {x: -0.34850657, y: -0.09999943, z: -0.34850657, w: -0.09999943} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -4.7812495, y: 2.1812499, z: -4.7812495, w: 0.31875} + firstChild: 2729 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.1812499, z: -4.1437497, w: 0.31875} + firstChild: 2737 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -4.1437497, y: 1.5437499, z: -4.7812495, w: 0.31875} + firstChild: 2745 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -4.1437497, y: 1.5437499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -4.1437497, y: 2.1812499, z: -4.7812495, w: 0.31875} + firstChild: 2753 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -4.1437497, y: 2.1812499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 1.5437499, z: -3.5062497, w: 0.31875} + firstChild: 2761 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 1.5437499, z: -2.8687499, w: 0.31875} + firstChild: 2769 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.1812499, z: -3.5062497, w: 0.31875} + firstChild: 2777 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.1812499, z: -2.8687499, w: 0.31875} + firstChild: 2785 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 1.5437499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 1.5437499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.1812499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.1812499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + center: {x: -3.5062497, y: 0.26875004, z: -4.7812495, w: 0.31875} + firstChild: 2793 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + center: {x: -3.5062497, y: 0.26875004, z: -4.1437497, w: 0.31875} + firstChild: 2801 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -3.5062497, y: 0.90625, z: -4.7812495, w: 0.31875} + firstChild: 2809 + - distancesA: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + center: {x: -3.5062497, y: 0.90625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + center: {x: -2.8687499, y: 0.26875004, z: -4.7812495, w: 0.31875} + firstChild: 2817 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + center: {x: -2.8687499, y: 0.26875004, z: -4.1437497, w: 0.31875} + firstChild: 2825 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -2.8687499, y: 0.90625, z: -4.7812495, w: 0.31875} + firstChild: 2833 + - distancesA: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + center: {x: -2.8687499, y: 0.90625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -3.5062497, y: 0.26875004, z: -3.5062497, w: 0.31875} + firstChild: 2841 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -3.5062497, y: 0.26875004, z: -2.8687499, w: 0.31875} + firstChild: 2849 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + center: {x: -3.5062497, y: 0.90625, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -3.5062497, y: 0.90625, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.8687499, y: 0.26875004, z: -3.5062497, w: 0.31875} + firstChild: 2857 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.8687499, y: 0.26875004, z: -2.8687499, w: 0.31875} + firstChild: 2865 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + center: {x: -2.8687499, y: 0.90625, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.8687499, y: 0.90625, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -3.5062497, y: 1.5437499, z: -4.7812495, w: 0.31875} + firstChild: 2873 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -3.5062497, y: 1.5437499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -3.5062497, y: 2.1812499, z: -4.7812495, w: 0.31875} + firstChild: 2881 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -3.5062497, y: 2.1812499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -2.8687499, y: 1.5437499, z: -4.7812495, w: 0.31875} + firstChild: 2889 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -2.8687499, y: 1.5437499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -2.8687499, y: 2.1812499, z: -4.7812495, w: 0.31875} + firstChild: 2897 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -2.8687499, y: 2.1812499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.31512922, y: -0.3151131, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.26875004, z: -2.2312498, w: 0.31875} + firstChild: 2905 + - distancesA: {x: -0.3151131, y: -0.315111, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.26875004, z: -1.5937499, w: 0.31875} + firstChild: 2913 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.90625, z: -2.2312498, w: 0.31875} + firstChild: 2921 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.90625, z: -1.5937499, w: 0.31875} + firstChild: 2929 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -4.1437497, y: 0.26875004, z: -2.2312498, w: 0.31875} + firstChild: 2937 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -4.1437497, y: 0.26875004, z: -1.5937499, w: 0.31875} + firstChild: 2945 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 0.90625, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 0.90625, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.315111, y: -0.31511757, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.26875004, z: -0.95624995, w: 0.31875} + firstChild: 2953 + - distancesA: {x: -0.31511757, y: -0.31510922, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.26875004, z: -0.31875, w: 0.31875} + firstChild: 2961 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.90625, z: -0.95624995, w: 0.31875} + firstChild: 2969 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.90625, z: -0.31875, w: 0.31875} + firstChild: 2977 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -4.1437497, y: 0.26875004, z: -0.95624995, w: 0.31875} + firstChild: 2985 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -4.1437497, y: 0.26875004, z: -0.31875, w: 0.31875} + firstChild: 2993 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 0.90625, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 0.90625, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 1.5437499, z: -2.2312498, w: 0.31875} + firstChild: 3001 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 1.5437499, z: -1.5937499, w: 0.31875} + firstChild: 3009 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.1812499, z: -2.2312498, w: 0.31875} + firstChild: 3017 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.1812499, z: -1.5937499, w: 0.31875} + firstChild: 3025 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 1.5437499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 1.5437499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.1812499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.1812499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 1.5437499, z: -0.95624995, w: 0.31875} + firstChild: 3033 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 1.5437499, z: -0.31875, w: 0.31875} + firstChild: 3041 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.1812499, z: -0.95624995, w: 0.31875} + firstChild: 3049 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.1812499, z: -0.31875, w: 0.31875} + firstChild: 3057 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 1.5437499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 1.5437499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.1812499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.1812499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -3.5062497, y: 0.26875004, z: -2.2312498, w: 0.31875} + firstChild: 3065 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -3.5062497, y: 0.26875004, z: -1.5937499, w: 0.31875} + firstChild: 3073 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -3.5062497, y: 0.90625, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -3.5062497, y: 0.90625, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.8687499, y: 0.26875004, z: -2.2312498, w: 0.31875} + firstChild: 3081 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.8687499, y: 0.26875004, z: -1.5937499, w: 0.31875} + firstChild: 3089 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.8687499, y: 0.90625, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.8687499, y: 0.90625, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -3.5062497, y: 0.26875004, z: -0.95624995, w: 0.31875} + firstChild: 3097 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -3.5062497, y: 0.26875004, z: -0.31875, w: 0.31875} + firstChild: 3105 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -3.5062497, y: 0.90625, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -3.5062497, y: 0.90625, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.8687499, y: 0.26875004, z: -0.95624995, w: 0.31875} + firstChild: 3113 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.8687499, y: 0.26875004, z: -0.31875, w: 0.31875} + firstChild: 3121 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.8687499, y: 0.90625, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.8687499, y: 0.90625, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.422986, y: -1.3249999, z: -0.83250904, w: -0.6874999} + distancesB: {x: -1.4229826, y: -1.3249999, z: -0.83250886, w: -0.6874999} + center: {x: -2.2312498, y: -1.0062499, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.2312498, y: -1.0062499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.83250904, y: -0.6874999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -0.8325089, y: -0.6874999, z: -0.31510878, w: -0.049999956} + center: {x: -2.2312498, y: -0.36874995, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.2312498, y: -0.36874995, z: -4.1437497, w: 0.31875} + firstChild: 3129 + - distancesA: {x: -1.4229826, y: -1.3249999, z: -0.83250886, w: -0.6874999} + distancesB: {x: -1.422982, y: -1.3249999, z: -0.83250904, w: -0.6874999} + center: {x: -1.5937499, y: -1.0062499, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -1.5937499, y: -1.0062499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325089, y: -0.6874999, z: -0.31510878, w: -0.049999956} + distancesB: {x: -0.83250904, y: -0.6874999, z: -0.3151088, w: -0.049999956} + center: {x: -1.5937499, y: -0.36874995, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -1.5937499, y: -0.36874995, z: -4.1437497, w: 0.31875} + firstChild: 3137 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.2312498, y: -1.0062499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.2312498, y: -1.0062499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.2312498, y: -0.36874995, z: -3.5062497, w: 0.31875} + firstChild: 3145 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.2312498, y: -0.36874995, z: -2.8687499, w: 0.31875} + firstChild: 3153 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -1.5937499, y: -1.0062499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -1.5937499, y: -1.0062499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -1.5937499, y: -0.36874995, z: -3.5062497, w: 0.31875} + firstChild: 3161 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -1.5937499, y: -0.36874995, z: -2.8687499, w: 0.31875} + firstChild: 3169 + - distancesA: {x: -1.422982, y: -1.3249999, z: -0.83250904, w: -0.6874999} + distancesB: {x: -1.4229835, y: -1.3249999, z: -0.83250886, w: -0.6874999} + center: {x: -0.95624995, y: -1.0062499, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.95624995, y: -1.0062499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.83250904, y: -0.6874999, z: -0.3151088, w: -0.049999956} + distancesB: {x: -0.8325089, y: -0.6874999, z: -0.3151088, w: -0.049999956} + center: {x: -0.95624995, y: -0.36874995, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.95624995, y: -0.36874995, z: -4.1437497, w: 0.31875} + firstChild: 3177 + - distancesA: {x: -1.4229835, y: -1.3249999, z: -0.83250886, w: -0.6874999} + distancesB: {x: -1.4229816, y: -1.3249999, z: -0.83250904, w: -0.6874999} + center: {x: -0.31875, y: -1.0062499, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.31875, y: -1.0062499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325089, y: -0.6874999, z: -0.3151088, w: -0.049999956} + distancesB: {x: -0.83250904, y: -0.6874999, z: -0.31510916, w: -0.049999956} + center: {x: -0.31875, y: -0.36874995, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.31875, y: -0.36874995, z: -4.1437497, w: 0.31875} + firstChild: 3185 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.95624995, y: -1.0062499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.95624995, y: -1.0062499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.95624995, y: -0.36874995, z: -3.5062497, w: 0.31875} + firstChild: 3193 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.95624995, y: -0.36874995, z: -2.8687499, w: 0.31875} + firstChild: 3201 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.31875, y: -1.0062499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.31875, y: -1.0062499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.31875, y: -0.36874995, z: -3.5062497, w: 0.31875} + firstChild: 3209 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.31875, y: -0.36874995, z: -2.8687499, w: 0.31875} + firstChild: 3217 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.2312498, y: -1.0062499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.2312498, y: -1.0062499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.2312498, y: -0.36874995, z: -2.2312498, w: 0.31875} + firstChild: 3225 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.2312498, y: -0.36874995, z: -1.5937499, w: 0.31875} + firstChild: 3233 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -1.5937499, y: -1.0062499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -1.5937499, y: -1.0062499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -1.5937499, y: -0.36874995, z: -2.2312498, w: 0.31875} + firstChild: 3241 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -1.5937499, y: -0.36874995, z: -1.5937499, w: 0.31875} + firstChild: 3249 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.2312498, y: -1.0062499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.2312498, y: -1.0062499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.2312498, y: -0.36874995, z: -0.95624995, w: 0.31875} + firstChild: 3257 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.2312498, y: -0.36874995, z: -0.31875, w: 0.31875} + firstChild: 3265 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -1.5937499, y: -1.0062499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -1.5937499, y: -1.0062499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -1.5937499, y: -0.36874995, z: -0.95624995, w: 0.31875} + firstChild: 3273 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -1.5937499, y: -0.36874995, z: -0.31875, w: 0.31875} + firstChild: 3281 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.95624995, y: -1.0062499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.95624995, y: -1.0062499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.95624995, y: -0.36874995, z: -2.2312498, w: 0.31875} + firstChild: 3289 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.95624995, y: -0.36874995, z: -1.5937499, w: 0.31875} + firstChild: 3297 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.31875, y: -1.0062499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.31875, y: -1.0062499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.31875, y: -0.36874995, z: -2.2312498, w: 0.31875} + firstChild: 3305 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.31875, y: -0.36874995, z: -1.5937499, w: 0.31875} + firstChild: 3313 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.95624995, y: -1.0062499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.95624995, y: -1.0062499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.95624995, y: -0.36874995, z: -0.95624995, w: 0.31875} + firstChild: 3321 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.95624995, y: -0.36874995, z: -0.31875, w: 0.31875} + firstChild: 3329 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.31875, y: -1.0062499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.31875, y: -1.0062499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.31875, y: -0.36874995, z: -0.95624995, w: 0.31875} + firstChild: 3337 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.31875, y: -0.36874995, z: -0.31875, w: 0.31875} + firstChild: 3345 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.31510878, y: -0.049999956, z: -0.09999943, w: 0.5375004} + center: {x: -2.2312498, y: 0.26875004, z: -4.7812495, w: 0.31875} + firstChild: 3353 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + center: {x: -2.2312498, y: 0.26875004, z: -4.1437497, w: 0.31875} + firstChild: 3361 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -2.2312498, y: 0.90625, z: -4.7812495, w: 0.31875} + firstChild: 3369 + - distancesA: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + center: {x: -2.2312498, y: 0.90625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.31510878, y: -0.049999956, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.3151088, y: -0.049999956, z: -0.09999943, w: 0.5375004} + center: {x: -1.5937499, y: 0.26875004, z: -4.7812495, w: 0.31875} + firstChild: 3377 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + center: {x: -1.5937499, y: 0.26875004, z: -4.1437497, w: 0.31875} + firstChild: 3385 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -1.5937499, y: 0.90625, z: -4.7812495, w: 0.31875} + firstChild: 3393 + - distancesA: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + center: {x: -1.5937499, y: 0.90625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.2312498, y: 0.26875004, z: -3.5062497, w: 0.31875} + firstChild: 3401 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.2312498, y: 0.26875004, z: -2.8687499, w: 0.31875} + firstChild: 3409 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + center: {x: -2.2312498, y: 0.90625, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.2312498, y: 0.90625, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -1.5937499, y: 0.26875004, z: -3.5062497, w: 0.31875} + firstChild: 3417 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -1.5937499, y: 0.26875004, z: -2.8687499, w: 0.31875} + firstChild: 3425 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + center: {x: -1.5937499, y: 0.90625, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -1.5937499, y: 0.90625, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -2.2312498, y: 1.5437499, z: -4.7812495, w: 0.31875} + firstChild: 3433 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -2.2312498, y: 1.5437499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -2.2312498, y: 2.1812499, z: -4.7812495, w: 0.31875} + firstChild: 3441 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -2.2312498, y: 2.1812499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -1.5937499, y: 1.5437499, z: -4.7812495, w: 0.31875} + firstChild: 3449 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -1.5937499, y: 1.5437499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -1.5937499, y: 2.1812499, z: -4.7812495, w: 0.31875} + firstChild: 3457 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -1.5937499, y: 2.1812499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.3151088, y: -0.049999956, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.3151088, y: -0.049999956, z: -0.09999943, w: 0.5375004} + center: {x: -0.95624995, y: 0.26875004, z: -4.7812495, w: 0.31875} + firstChild: 3465 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + center: {x: -0.95624995, y: 0.26875004, z: -4.1437497, w: 0.31875} + firstChild: 3473 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -0.95624995, y: 0.90625, z: -4.7812495, w: 0.31875} + firstChild: 3481 + - distancesA: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + center: {x: -0.95624995, y: 0.90625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.3151088, y: -0.049999956, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + center: {x: -0.31875, y: 0.26875004, z: -4.7812495, w: 0.31875} + firstChild: 3489 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + center: {x: -0.31875, y: 0.26875004, z: -4.1437497, w: 0.31875} + firstChild: 3497 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -0.31875, y: 0.90625, z: -4.7812495, w: 0.31875} + firstChild: 3505 + - distancesA: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + center: {x: -0.31875, y: 0.90625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.95624995, y: 0.26875004, z: -3.5062497, w: 0.31875} + firstChild: 3513 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.95624995, y: 0.26875004, z: -2.8687499, w: 0.31875} + firstChild: 3521 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + center: {x: -0.95624995, y: 0.90625, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.95624995, y: 0.90625, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.31875, y: 0.26875004, z: -3.5062497, w: 0.31875} + firstChild: 3529 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.31875, y: 0.26875004, z: -2.8687499, w: 0.31875} + firstChild: 3537 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + center: {x: -0.31875, y: 0.90625, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.31875, y: 0.90625, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -0.95624995, y: 1.5437499, z: -4.7812495, w: 0.31875} + firstChild: 3545 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -0.95624995, y: 1.5437499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -0.95624995, y: 2.1812499, z: -4.7812495, w: 0.31875} + firstChild: 3553 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -0.95624995, y: 2.1812499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -0.31875, y: 1.5437499, z: -4.7812495, w: 0.31875} + firstChild: 3561 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -0.31875, y: 1.5437499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -0.31875, y: 2.1812499, z: -4.7812495, w: 0.31875} + firstChild: 3569 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -0.31875, y: 2.1812499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.2312498, y: 0.26875004, z: -2.2312498, w: 0.31875} + firstChild: 3577 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.2312498, y: 0.26875004, z: -1.5937499, w: 0.31875} + firstChild: 3585 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.2312498, y: 0.90625, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.2312498, y: 0.90625, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -1.5937499, y: 0.26875004, z: -2.2312498, w: 0.31875} + firstChild: 3593 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -1.5937499, y: 0.26875004, z: -1.5937499, w: 0.31875} + firstChild: 3601 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -1.5937499, y: 0.90625, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -1.5937499, y: 0.90625, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.2312498, y: 0.26875004, z: -0.95624995, w: 0.31875} + firstChild: 3609 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.2312498, y: 0.26875004, z: -0.31875, w: 0.31875} + firstChild: 3617 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.2312498, y: 0.90625, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.2312498, y: 0.90625, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -1.5937499, y: 0.26875004, z: -0.95624995, w: 0.31875} + firstChild: 3625 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -1.5937499, y: 0.26875004, z: -0.31875, w: 0.31875} + firstChild: 3633 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -1.5937499, y: 0.90625, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -1.5937499, y: 0.90625, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.95624995, y: 0.26875004, z: -2.2312498, w: 0.31875} + firstChild: 3641 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.95624995, y: 0.26875004, z: -1.5937499, w: 0.31875} + firstChild: 3649 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.95624995, y: 0.90625, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.95624995, y: 0.90625, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.31875, y: 0.26875004, z: -2.2312498, w: 0.31875} + firstChild: 3657 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.31875, y: 0.26875004, z: -1.5937499, w: 0.31875} + firstChild: 3665 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.31875, y: 0.90625, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.31875, y: 0.90625, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.95624995, y: 0.26875004, z: -0.95624995, w: 0.31875} + firstChild: 3673 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.95624995, y: 0.26875004, z: -0.31875, w: 0.31875} + firstChild: 3681 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.95624995, y: 0.90625, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.95624995, y: 0.90625, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.31875, y: 0.26875004, z: -0.95624995, w: 0.31875} + firstChild: 3689 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.31875, y: 0.26875004, z: -0.31875, w: 0.31875} + firstChild: 3697 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.31875, y: 0.90625, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.31875, y: 0.90625, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.4229817, y: -1.4229816, z: -0.8325089, w: -0.8325091} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.7812495, y: -1.0062499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.4229816, y: -1.4229816, z: -0.83250904, w: -0.8325097} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.7812495, y: -1.0062499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325089, y: -0.83250916, z: -0.31510922, w: -0.31510964} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.7812495, y: -0.36874995, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325091, y: -0.83250976, z: -0.31510964, w: -0.315111} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.7812495, y: -0.36874995, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.1437497, y: -1.0062499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.1437497, y: -1.0062499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.1437497, y: -0.36874995, z: 0.31875, w: 0.31875} + firstChild: 3705 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.1437497, y: -0.36874995, z: 0.95624995, w: 0.31875} + firstChild: 3713 + - distancesA: {x: -1.4229816, y: -1.4229817, z: -0.83250964, w: -0.8325105} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.7812495, y: -1.0062499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.4229817, y: -1.4229816, z: -0.8325105, w: -0.8325092} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.7812495, y: -1.0062499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325097, y: -0.83251053, z: -0.315111, w: -0.3151132} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.7812495, y: -0.36874995, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.83251053, y: -0.8325093, z: -0.3151132, w: -0.3151098} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.7812495, y: -0.36874995, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.1437497, y: -1.0062499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.1437497, y: -1.0062499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.1437497, y: -0.36874995, z: 1.5937499, w: 0.31875} + firstChild: 3721 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.1437497, y: -0.36874995, z: 2.2312498, w: 0.31875} + firstChild: 3729 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -3.5062497, y: -1.0062499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -3.5062497, y: -1.0062499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -3.5062497, y: -0.36874995, z: 0.31875, w: 0.31875} + firstChild: 3737 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -3.5062497, y: -0.36874995, z: 0.95624995, w: 0.31875} + firstChild: 3745 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.8687499, y: -1.0062499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.8687499, y: -1.0062499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.8687499, y: -0.36874995, z: 0.31875, w: 0.31875} + firstChild: 3753 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.8687499, y: -0.36874995, z: 0.95624995, w: 0.31875} + firstChild: 3761 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -3.5062497, y: -1.0062499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -3.5062497, y: -1.0062499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -3.5062497, y: -0.36874995, z: 1.5937499, w: 0.31875} + firstChild: 3769 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -3.5062497, y: -0.36874995, z: 2.2312498, w: 0.31875} + firstChild: 3777 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.8687499, y: -1.0062499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.8687499, y: -1.0062499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.8687499, y: -0.36874995, z: 1.5937499, w: 0.31875} + firstChild: 3785 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.8687499, y: -0.36874995, z: 2.2312498, w: 0.31875} + firstChild: 3793 + - distancesA: {x: -1.4229816, y: -1.4229816, z: -0.8325092, w: -0.83250904} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.7812495, y: -1.0062499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.4229816, y: -1.4229817, z: -0.83250904, w: -0.83250886} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.7812495, y: -1.0062499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325093, y: -0.83250904, z: -0.31511, w: -0.31510964} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.7812495, y: -0.36874995, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.83250904, y: -0.8325089, z: -0.31510964, w: -0.31510893} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.7812495, y: -0.36874995, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.1437497, y: -1.0062499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.1437497, y: -1.0062499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.1437497, y: -0.36874995, z: 2.8687499, w: 0.31875} + firstChild: 3801 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.1437497, y: -0.36874995, z: 3.5062497, w: 0.31875} + firstChild: 3809 + - distancesA: {x: -1.4229817, y: -1.4229816, z: -0.83250886, w: -0.83250904} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.7812495, y: -1.0062499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.4229816, y: -1.5167226, z: -0.83250904, w: -0.9615866} + distancesB: {x: -1.3249999, y: -1.4229829, z: -0.6874999, w: -0.83251137} + center: {x: -4.7812495, y: -1.0062499, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325089, y: -0.83250904, z: -0.31510893, w: -0.31510916} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.7812495, y: -0.36874995, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.83250904, y: -0.96158665, z: -0.31510916, w: -0.51686233} + distancesB: {x: -0.6874999, y: -0.8325115, z: -0.049999956, w: -0.31511512} + center: {x: -4.7812495, y: -0.36874995, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -4.1437497, y: -1.0062499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.4229829, z: -0.6874999, w: -0.83251137} + distancesB: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.8325128} + center: {x: -4.1437497, y: -1.0062499, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -4.1437497, y: -0.36874995, z: 4.1437497, w: 0.31875} + firstChild: 3817 + - distancesA: {x: -0.6874999, y: -0.8325115, z: -0.049999956, w: -0.31511512} + distancesB: {x: -0.6874999, y: -0.8325129, z: -0.049999956, w: -0.31511882} + center: {x: -4.1437497, y: -0.36874995, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -3.5062497, y: -1.0062499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -3.5062497, y: -1.0062499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -3.5062497, y: -0.36874995, z: 2.8687499, w: 0.31875} + firstChild: 3825 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -3.5062497, y: -0.36874995, z: 3.5062497, w: 0.31875} + firstChild: 3833 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.8687499, y: -1.0062499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.8687499, y: -1.0062499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.8687499, y: -0.36874995, z: 2.8687499, w: 0.31875} + firstChild: 3841 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.8687499, y: -0.36874995, z: 3.5062497, w: 0.31875} + firstChild: 3849 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -3.5062497, y: -1.0062499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.8325488} + distancesB: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.8325144} + center: {x: -3.5062497, y: -1.0062499, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -3.5062497, y: -0.36874995, z: 4.1437497, w: 0.31875} + firstChild: 3857 + - distancesA: {x: -0.6874999, y: -0.8325489, z: -0.049999956, w: -0.31514108} + distancesB: {x: -0.6874999, y: -0.8325145, z: -0.049999956, w: -0.31512374} + center: {x: -3.5062497, y: -0.36874995, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.8687499, y: -1.0062499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.8325144} + distancesB: {x: -1.3249999, y: -1.4229817, z: -0.6874999, w: -0.83251643} + center: {x: -2.8687499, y: -1.0062499, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.8687499, y: -0.36874995, z: 4.1437497, w: 0.31875} + firstChild: 3865 + - distancesA: {x: -0.6874999, y: -0.8325145, z: -0.049999956, w: -0.31512374} + distancesB: {x: -0.6874999, y: -0.8325165, z: -0.049999956, w: -0.31512922} + center: {x: -2.8687499, y: -0.36874995, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.31510922, y: -0.31510964, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.26875004, z: 0.31875, w: 0.31875} + firstChild: 3873 + - distancesA: {x: -0.31510964, y: -0.315111, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.26875004, z: 0.95624995, w: 0.31875} + firstChild: 3881 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.90625, z: 0.31875, w: 0.31875} + firstChild: 3889 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.90625, z: 0.95624995, w: 0.31875} + firstChild: 3897 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -4.1437497, y: 0.26875004, z: 0.31875, w: 0.31875} + firstChild: 3905 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -4.1437497, y: 0.26875004, z: 0.95624995, w: 0.31875} + firstChild: 3913 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 0.90625, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 0.90625, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.315111, y: -0.3151132, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.26875004, z: 1.5937499, w: 0.31875} + firstChild: 3921 + - distancesA: {x: -0.3151132, y: -0.3151098, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.26875004, z: 2.2312498, w: 0.31875} + firstChild: 3929 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.90625, z: 1.5937499, w: 0.31875} + firstChild: 3937 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.90625, z: 2.2312498, w: 0.31875} + firstChild: 3945 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -4.1437497, y: 0.26875004, z: 1.5937499, w: 0.31875} + firstChild: 3953 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -4.1437497, y: 0.26875004, z: 2.2312498, w: 0.31875} + firstChild: 3961 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 0.90625, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 0.90625, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 1.5437499, z: 0.31875, w: 0.31875} + firstChild: 3969 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 1.5437499, z: 0.95624995, w: 0.31875} + firstChild: 3977 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.1812499, z: 0.31875, w: 0.31875} + firstChild: 3985 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.1812499, z: 0.95624995, w: 0.31875} + firstChild: 3993 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 1.5437499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 1.5437499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.1812499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.1812499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 1.5437499, z: 1.5937499, w: 0.31875} + firstChild: 4001 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 1.5437499, z: 2.2312498, w: 0.31875} + firstChild: 4009 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.1812499, z: 1.5937499, w: 0.31875} + firstChild: 4017 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.1812499, z: 2.2312498, w: 0.31875} + firstChild: 4025 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 1.5437499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 1.5437499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.1812499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.1812499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -3.5062497, y: 0.26875004, z: 0.31875, w: 0.31875} + firstChild: 4033 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -3.5062497, y: 0.26875004, z: 0.95624995, w: 0.31875} + firstChild: 4041 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -3.5062497, y: 0.90625, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -3.5062497, y: 0.90625, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.8687499, y: 0.26875004, z: 0.31875, w: 0.31875} + firstChild: 4049 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.8687499, y: 0.26875004, z: 0.95624995, w: 0.31875} + firstChild: 4057 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.8687499, y: 0.90625, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.8687499, y: 0.90625, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -3.5062497, y: 0.26875004, z: 1.5937499, w: 0.31875} + firstChild: 4065 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -3.5062497, y: 0.26875004, z: 2.2312498, w: 0.31875} + firstChild: 4073 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -3.5062497, y: 0.90625, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -3.5062497, y: 0.90625, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.8687499, y: 0.26875004, z: 1.5937499, w: 0.31875} + firstChild: 4081 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.8687499, y: 0.26875004, z: 2.2312498, w: 0.31875} + firstChild: 4089 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.8687499, y: 0.90625, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.8687499, y: 0.90625, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.31511, y: -0.31510964, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.26875004, z: 2.8687499, w: 0.31875} + firstChild: 4097 + - distancesA: {x: -0.31510964, y: -0.31510893, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.26875004, z: 3.5062497, w: 0.31875} + firstChild: 4105 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.90625, z: 2.8687499, w: 0.31875} + firstChild: 4113 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.90625, z: 3.5062497, w: 0.31875} + firstChild: 4121 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -4.1437497, y: 0.26875004, z: 2.8687499, w: 0.31875} + firstChild: 4129 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -4.1437497, y: 0.26875004, z: 3.5062497, w: 0.31875} + firstChild: 4137 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 0.90625, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 0.90625, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.31510893, y: -0.31510916, z: -0.09999943, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.26875004, z: 4.1437497, w: 0.31875} + firstChild: 4145 + - distancesA: {x: -0.31510916, y: -0.51686233, z: -0.09999943, w: -0.34850657} + distancesB: {x: -0.049999956, y: -0.31511512, z: 0.5375004, w: -0.09999943} + center: {x: -4.7812495, y: 0.26875004, z: 4.7812495, w: 0.31875} + firstChild: 4153 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 0.90625, z: 4.1437497, w: 0.31875} + firstChild: 4161 + - distancesA: {x: -0.09999943, y: -0.34850657, z: -0.09999943, w: -0.34850657} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -4.7812495, y: 0.90625, z: 4.7812495, w: 0.31875} + firstChild: 4169 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + center: {x: -4.1437497, y: 0.26875004, z: 4.1437497, w: 0.31875} + firstChild: 4177 + - distancesA: {x: -0.049999956, y: -0.31511512, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.31511882, z: 0.5375004, w: -0.09999943} + center: {x: -4.1437497, y: 0.26875004, z: 4.7812495, w: 0.31875} + firstChild: 4185 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -4.1437497, y: 0.90625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -4.1437497, y: 0.90625, z: 4.7812495, w: 0.31875} + firstChild: 4193 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 1.5437499, z: 2.8687499, w: 0.31875} + firstChild: 4201 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 1.5437499, z: 3.5062497, w: 0.31875} + firstChild: 4209 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.1812499, z: 2.8687499, w: 0.31875} + firstChild: 4217 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.1812499, z: 3.5062497, w: 0.31875} + firstChild: 4225 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 1.5437499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 1.5437499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.1812499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.1812499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 1.5437499, z: 4.1437497, w: 0.31875} + firstChild: 4233 + - distancesA: {x: -0.09999943, y: -0.34850657, z: -0.09999943, w: -0.34850657} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -4.7812495, y: 1.5437499, z: 4.7812495, w: 0.31875} + firstChild: 4241 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.1812499, z: 4.1437497, w: 0.31875} + firstChild: 4249 + - distancesA: {x: -0.09999943, y: -0.34850657, z: -0.09999943, w: -0.34850657} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -4.7812495, y: 2.1812499, z: 4.7812495, w: 0.31875} + firstChild: 4257 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -4.1437497, y: 1.5437499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -4.1437497, y: 1.5437499, z: 4.7812495, w: 0.31875} + firstChild: 4265 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -4.1437497, y: 2.1812499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -4.1437497, y: 2.1812499, z: 4.7812495, w: 0.31875} + firstChild: 4273 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -3.5062497, y: 0.26875004, z: 2.8687499, w: 0.31875} + firstChild: 4281 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -3.5062497, y: 0.26875004, z: 3.5062497, w: 0.31875} + firstChild: 4289 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -3.5062497, y: 0.90625, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + center: {x: -3.5062497, y: 0.90625, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.8687499, y: 0.26875004, z: 2.8687499, w: 0.31875} + firstChild: 4297 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.8687499, y: 0.26875004, z: 3.5062497, w: 0.31875} + firstChild: 4305 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.8687499, y: 0.90625, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + center: {x: -2.8687499, y: 0.90625, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + center: {x: -3.5062497, y: 0.26875004, z: 4.1437497, w: 0.31875} + firstChild: 4313 + - distancesA: {x: -0.049999956, y: -0.31514108, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.31512374, z: 0.5375004, w: -0.09999943} + center: {x: -3.5062497, y: 0.26875004, z: 4.7812495, w: 0.31875} + firstChild: 4321 + - distancesA: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -3.5062497, y: 0.90625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -3.5062497, y: 0.90625, z: 4.7812495, w: 0.31875} + firstChild: 4329 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + center: {x: -2.8687499, y: 0.26875004, z: 4.1437497, w: 0.31875} + firstChild: 4337 + - distancesA: {x: -0.049999956, y: -0.31512374, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.31512922, z: 0.5375004, w: -0.09999943} + center: {x: -2.8687499, y: 0.26875004, z: 4.7812495, w: 0.31875} + firstChild: 4345 + - distancesA: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -2.8687499, y: 0.90625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -2.8687499, y: 0.90625, z: 4.7812495, w: 0.31875} + firstChild: 4353 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -3.5062497, y: 1.5437499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -3.5062497, y: 1.5437499, z: 4.7812495, w: 0.31875} + firstChild: 4361 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -3.5062497, y: 2.1812499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -3.5062497, y: 2.1812499, z: 4.7812495, w: 0.31875} + firstChild: 4369 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -2.8687499, y: 1.5437499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -2.8687499, y: 1.5437499, z: 4.7812495, w: 0.31875} + firstChild: 4377 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -2.8687499, y: 2.1812499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -2.8687499, y: 2.1812499, z: 4.7812495, w: 0.31875} + firstChild: 4385 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.2312498, y: -1.0062499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.2312498, y: -1.0062499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.2312498, y: -0.36874995, z: 0.31875, w: 0.31875} + firstChild: 4393 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.2312498, y: -0.36874995, z: 0.95624995, w: 0.31875} + firstChild: 4401 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -1.5937499, y: -1.0062499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -1.5937499, y: -1.0062499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -1.5937499, y: -0.36874995, z: 0.31875, w: 0.31875} + firstChild: 4409 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -1.5937499, y: -0.36874995, z: 0.95624995, w: 0.31875} + firstChild: 4417 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.2312498, y: -1.0062499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.2312498, y: -1.0062499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.2312498, y: -0.36874995, z: 1.5937499, w: 0.31875} + firstChild: 4425 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.2312498, y: -0.36874995, z: 2.2312498, w: 0.31875} + firstChild: 4433 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -1.5937499, y: -1.0062499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -1.5937499, y: -1.0062499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -1.5937499, y: -0.36874995, z: 1.5937499, w: 0.31875} + firstChild: 4441 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -1.5937499, y: -0.36874995, z: 2.2312498, w: 0.31875} + firstChild: 4449 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.95624995, y: -1.0062499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.95624995, y: -1.0062499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.95624995, y: -0.36874995, z: 0.31875, w: 0.31875} + firstChild: 4457 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.95624995, y: -0.36874995, z: 0.95624995, w: 0.31875} + firstChild: 4465 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.31875, y: -1.0062499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.31875, y: -1.0062499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.31875, y: -0.36874995, z: 0.31875, w: 0.31875} + firstChild: 4473 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.31875, y: -0.36874995, z: 0.95624995, w: 0.31875} + firstChild: 4481 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.95624995, y: -1.0062499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.95624995, y: -1.0062499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.95624995, y: -0.36874995, z: 1.5937499, w: 0.31875} + firstChild: 4489 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.95624995, y: -0.36874995, z: 2.2312498, w: 0.31875} + firstChild: 4497 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.31875, y: -1.0062499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.31875, y: -1.0062499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.31875, y: -0.36874995, z: 1.5937499, w: 0.31875} + firstChild: 4505 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.31875, y: -0.36874995, z: 2.2312498, w: 0.31875} + firstChild: 4513 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.2312498, y: -1.0062499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.2312498, y: -1.0062499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.2312498, y: -0.36874995, z: 2.8687499, w: 0.31875} + firstChild: 4521 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.2312498, y: -0.36874995, z: 3.5062497, w: 0.31875} + firstChild: 4529 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -1.5937499, y: -1.0062499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -1.5937499, y: -1.0062499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -1.5937499, y: -0.36874995, z: 2.8687499, w: 0.31875} + firstChild: 4537 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -1.5937499, y: -0.36874995, z: 3.5062497, w: 0.31875} + firstChild: 4545 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -2.2312498, y: -1.0062499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.4229817, z: -0.6874999, w: -0.83251643} + distancesB: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.8325104} + center: {x: -2.2312498, y: -1.0062499, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -2.2312498, y: -0.36874995, z: 4.1437497, w: 0.31875} + firstChild: 4553 + - distancesA: {x: -0.6874999, y: -0.8325165, z: -0.049999956, w: -0.31512922} + distancesB: {x: -0.6874999, y: -0.83251053, z: -0.049999956, w: -0.3151131} + center: {x: -2.2312498, y: -0.36874995, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -1.5937499, y: -1.0062499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.8325104} + distancesB: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.8325096} + center: {x: -1.5937499, y: -1.0062499, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -1.5937499, y: -0.36874995, z: 4.1437497, w: 0.31875} + firstChild: 4561 + - distancesA: {x: -0.6874999, y: -0.83251053, z: -0.049999956, w: -0.3151131} + distancesB: {x: -0.6874999, y: -0.83250964, z: -0.049999956, w: -0.315111} + center: {x: -1.5937499, y: -0.36874995, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.95624995, y: -1.0062499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.95624995, y: -1.0062499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.95624995, y: -0.36874995, z: 2.8687499, w: 0.31875} + firstChild: 4569 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.95624995, y: -0.36874995, z: 3.5062497, w: 0.31875} + firstChild: 4577 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.31875, y: -1.0062499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.31875, y: -1.0062499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.31875, y: -0.36874995, z: 2.8687499, w: 0.31875} + firstChild: 4585 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.31875, y: -0.36874995, z: 3.5062497, w: 0.31875} + firstChild: 4593 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.95624995, y: -1.0062499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.8325096} + distancesB: {x: -1.3249999, y: -1.4229817, z: -0.6874999, w: -0.83251214} + center: {x: -0.95624995, y: -1.0062499, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.95624995, y: -0.36874995, z: 4.1437497, w: 0.31875} + firstChild: 4601 + - distancesA: {x: -0.6874999, y: -0.83250964, z: -0.049999956, w: -0.315111} + distancesB: {x: -0.6874999, y: -0.83251214, z: -0.049999956, w: -0.31511757} + center: {x: -0.95624995, y: -0.36874995, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: -0.31875, y: -1.0062499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.4229817, z: -0.6874999, w: -0.83251214} + distancesB: {x: -1.3249999, y: -1.4229817, z: -0.6874999, w: -0.8325089} + center: {x: -0.31875, y: -1.0062499, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: -0.31875, y: -0.36874995, z: 4.1437497, w: 0.31875} + firstChild: 4609 + - distancesA: {x: -0.6874999, y: -0.83251214, z: -0.049999956, w: -0.31511757} + distancesB: {x: -0.6874999, y: -0.8325089, z: -0.049999956, w: -0.31510922} + center: {x: -0.31875, y: -0.36874995, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.2312498, y: 0.26875004, z: 0.31875, w: 0.31875} + firstChild: 4617 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.2312498, y: 0.26875004, z: 0.95624995, w: 0.31875} + firstChild: 4625 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.2312498, y: 0.90625, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.2312498, y: 0.90625, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -1.5937499, y: 0.26875004, z: 0.31875, w: 0.31875} + firstChild: 4633 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -1.5937499, y: 0.26875004, z: 0.95624995, w: 0.31875} + firstChild: 4641 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -1.5937499, y: 0.90625, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -1.5937499, y: 0.90625, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.2312498, y: 0.26875004, z: 1.5937499, w: 0.31875} + firstChild: 4649 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.2312498, y: 0.26875004, z: 2.2312498, w: 0.31875} + firstChild: 4657 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.2312498, y: 0.90625, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.2312498, y: 0.90625, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -1.5937499, y: 0.26875004, z: 1.5937499, w: 0.31875} + firstChild: 4665 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -1.5937499, y: 0.26875004, z: 2.2312498, w: 0.31875} + firstChild: 4673 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -1.5937499, y: 0.90625, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -1.5937499, y: 0.90625, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.95624995, y: 0.26875004, z: 0.31875, w: 0.31875} + firstChild: 4681 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.95624995, y: 0.26875004, z: 0.95624995, w: 0.31875} + firstChild: 4689 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.95624995, y: 0.90625, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.95624995, y: 0.90625, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.31875, y: 0.26875004, z: 0.31875, w: 0.31875} + firstChild: 4697 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.31875, y: 0.26875004, z: 0.95624995, w: 0.31875} + firstChild: 4705 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.31875, y: 0.90625, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.31875, y: 0.90625, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.95624995, y: 0.26875004, z: 1.5937499, w: 0.31875} + firstChild: 4713 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.95624995, y: 0.26875004, z: 2.2312498, w: 0.31875} + firstChild: 4721 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.95624995, y: 0.90625, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.95624995, y: 0.90625, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.31875, y: 0.26875004, z: 1.5937499, w: 0.31875} + firstChild: 4729 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.31875, y: 0.26875004, z: 2.2312498, w: 0.31875} + firstChild: 4737 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.31875, y: 0.90625, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.31875, y: 0.90625, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.2312498, y: 0.26875004, z: 2.8687499, w: 0.31875} + firstChild: 4745 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -2.2312498, y: 0.26875004, z: 3.5062497, w: 0.31875} + firstChild: 4753 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -2.2312498, y: 0.90625, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + center: {x: -2.2312498, y: 0.90625, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -1.5937499, y: 0.26875004, z: 2.8687499, w: 0.31875} + firstChild: 4761 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -1.5937499, y: 0.26875004, z: 3.5062497, w: 0.31875} + firstChild: 4769 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -1.5937499, y: 0.90625, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + center: {x: -1.5937499, y: 0.90625, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + center: {x: -2.2312498, y: 0.26875004, z: 4.1437497, w: 0.31875} + firstChild: 4777 + - distancesA: {x: -0.049999956, y: -0.31512922, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.3151131, z: 0.5375004, w: -0.09999943} + center: {x: -2.2312498, y: 0.26875004, z: 4.7812495, w: 0.31875} + firstChild: 4785 + - distancesA: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -2.2312498, y: 0.90625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -2.2312498, y: 0.90625, z: 4.7812495, w: 0.31875} + firstChild: 4793 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + center: {x: -1.5937499, y: 0.26875004, z: 4.1437497, w: 0.31875} + firstChild: 4801 + - distancesA: {x: -0.049999956, y: -0.3151131, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.315111, z: 0.5375004, w: -0.09999943} + center: {x: -1.5937499, y: 0.26875004, z: 4.7812495, w: 0.31875} + firstChild: 4809 + - distancesA: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -1.5937499, y: 0.90625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -1.5937499, y: 0.90625, z: 4.7812495, w: 0.31875} + firstChild: 4817 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -2.2312498, y: 1.5437499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -2.2312498, y: 1.5437499, z: 4.7812495, w: 0.31875} + firstChild: 4825 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -2.2312498, y: 2.1812499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -2.2312498, y: 2.1812499, z: 4.7812495, w: 0.31875} + firstChild: 4833 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -1.5937499, y: 1.5437499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -1.5937499, y: 1.5437499, z: 4.7812495, w: 0.31875} + firstChild: 4841 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -1.5937499, y: 2.1812499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -1.5937499, y: 2.1812499, z: 4.7812495, w: 0.31875} + firstChild: 4849 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.95624995, y: 0.26875004, z: 2.8687499, w: 0.31875} + firstChild: 4857 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.95624995, y: 0.26875004, z: 3.5062497, w: 0.31875} + firstChild: 4865 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.95624995, y: 0.90625, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + center: {x: -0.95624995, y: 0.90625, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.31875, y: 0.26875004, z: 2.8687499, w: 0.31875} + firstChild: 4873 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: -0.31875, y: 0.26875004, z: 3.5062497, w: 0.31875} + firstChild: 4881 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: -0.31875, y: 0.90625, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + center: {x: -0.31875, y: 0.90625, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + center: {x: -0.95624995, y: 0.26875004, z: 4.1437497, w: 0.31875} + firstChild: 4889 + - distancesA: {x: -0.049999956, y: -0.315111, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.31511757, z: 0.5375004, w: -0.09999943} + center: {x: -0.95624995, y: 0.26875004, z: 4.7812495, w: 0.31875} + firstChild: 4897 + - distancesA: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -0.95624995, y: 0.90625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -0.95624995, y: 0.90625, z: 4.7812495, w: 0.31875} + firstChild: 4905 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + center: {x: -0.31875, y: 0.26875004, z: 4.1437497, w: 0.31875} + firstChild: 4913 + - distancesA: {x: -0.049999956, y: -0.31511757, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.31510922, z: 0.5375004, w: -0.09999943} + center: {x: -0.31875, y: 0.26875004, z: 4.7812495, w: 0.31875} + firstChild: 4921 + - distancesA: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -0.31875, y: 0.90625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -0.31875, y: 0.90625, z: 4.7812495, w: 0.31875} + firstChild: 4929 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -0.95624995, y: 1.5437499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -0.95624995, y: 1.5437499, z: 4.7812495, w: 0.31875} + firstChild: 4937 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -0.95624995, y: 2.1812499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -0.95624995, y: 2.1812499, z: 4.7812495, w: 0.31875} + firstChild: 4945 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -0.31875, y: 1.5437499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -0.31875, y: 1.5437499, z: 4.7812495, w: 0.31875} + firstChild: 4953 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -0.31875, y: 2.1812499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -0.31875, y: 2.1812499, z: 4.7812495, w: 0.31875} + firstChild: 4961 + - distancesA: {x: -0.34850657, y: -0.09999943, z: -0.34850657, w: -0.09999943} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -4.7812495, y: 2.8187501, z: -4.7812495, w: 0.31875} + firstChild: 4969 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.8187501, z: -4.1437497, w: 0.31875} + firstChild: 4977 + - distancesA: {x: -0.34850657, y: -0.09999943, z: -0.34850657, w: -0.09999943} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -4.7812495, y: 3.45625, z: -4.7812495, w: 0.31875} + firstChild: 4985 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 3.45625, z: -4.1437497, w: 0.31875} + firstChild: 4993 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -4.1437497, y: 2.8187501, z: -4.7812495, w: 0.31875} + firstChild: 5001 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -4.1437497, y: 2.8187501, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -4.1437497, y: 3.45625, z: -4.7812495, w: 0.31875} + firstChild: 5009 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -4.1437497, y: 3.45625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.8187501, z: -3.5062497, w: 0.31875} + firstChild: 5017 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.8187501, z: -2.8687499, w: 0.31875} + firstChild: 5025 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 3.45625, z: -3.5062497, w: 0.31875} + firstChild: 5033 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 3.45625, z: -2.8687499, w: 0.31875} + firstChild: 5041 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.8187501, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.8187501, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 3.45625, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 3.45625, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.34850657, y: -0.09999943, z: -0.34850657, w: -0.09999943} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -4.7812495, y: 4.09375, z: -4.7812495, w: 0.31875} + firstChild: 5049 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 4.09375, z: -4.1437497, w: 0.31875} + firstChild: 5057 + - distancesA: {x: -0.34850657, y: -0.09999943, z: -0.35207498, w: -0.11180276} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + center: {x: -4.7812495, y: 4.73125, z: -4.7812495, w: 0.31875} + firstChild: 5065 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: -4.7812495, y: 4.73125, z: -4.1437497, w: 0.31875} + firstChild: 5073 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -4.1437497, y: 4.09375, z: -4.7812495, w: 0.31875} + firstChild: 5081 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -4.1437497, y: 4.09375, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + center: {x: -4.1437497, y: 4.73125, z: -4.7812495, w: 0.31875} + firstChild: 5089 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + center: {x: -4.1437497, y: 4.73125, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 4.09375, z: -3.5062497, w: 0.31875} + firstChild: 5097 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 4.09375, z: -2.8687499, w: 0.31875} + firstChild: 5105 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: -4.7812495, y: 4.73125, z: -3.5062497, w: 0.31875} + firstChild: 5113 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: -4.7812495, y: 4.73125, z: -2.8687499, w: 0.31875} + firstChild: 5121 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 4.09375, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 4.09375, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: -4.1437497, y: 4.73125, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: -4.1437497, y: 4.73125, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -3.5062497, y: 2.8187501, z: -4.7812495, w: 0.31875} + firstChild: 5129 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -3.5062497, y: 2.8187501, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -3.5062497, y: 3.45625, z: -4.7812495, w: 0.31875} + firstChild: 5137 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -3.5062497, y: 3.45625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -2.8687499, y: 2.8187501, z: -4.7812495, w: 0.31875} + firstChild: 5145 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -2.8687499, y: 2.8187501, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -2.8687499, y: 3.45625, z: -4.7812495, w: 0.31875} + firstChild: 5153 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -2.8687499, y: 3.45625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -3.5062497, y: 4.09375, z: -4.7812495, w: 0.31875} + firstChild: 5161 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -3.5062497, y: 4.09375, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + center: {x: -3.5062497, y: 4.73125, z: -4.7812495, w: 0.31875} + firstChild: 5169 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + center: {x: -3.5062497, y: 4.73125, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -2.8687499, y: 4.09375, z: -4.7812495, w: 0.31875} + firstChild: 5177 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -2.8687499, y: 4.09375, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + center: {x: -2.8687499, y: 4.73125, z: -4.7812495, w: 0.31875} + firstChild: 5185 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + center: {x: -2.8687499, y: 4.73125, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.8187501, z: -2.2312498, w: 0.31875} + firstChild: 5193 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.8187501, z: -1.5937499, w: 0.31875} + firstChild: 5201 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 3.45625, z: -2.2312498, w: 0.31875} + firstChild: 5209 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 3.45625, z: -1.5937499, w: 0.31875} + firstChild: 5217 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.8187501, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.8187501, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 3.45625, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 3.45625, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.8187501, z: -0.95624995, w: 0.31875} + firstChild: 5225 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.8187501, z: -0.31875, w: 0.31875} + firstChild: 5233 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 3.45625, z: -0.95624995, w: 0.31875} + firstChild: 5241 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 3.45625, z: -0.31875, w: 0.31875} + firstChild: 5249 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.8187501, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.8187501, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 3.45625, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 3.45625, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 4.09375, z: -2.2312498, w: 0.31875} + firstChild: 5257 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 4.09375, z: -1.5937499, w: 0.31875} + firstChild: 5265 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: -4.7812495, y: 4.73125, z: -2.2312498, w: 0.31875} + firstChild: 5273 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: -4.7812495, y: 4.73125, z: -1.5937499, w: 0.31875} + firstChild: 5281 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 4.09375, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 4.09375, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: -4.1437497, y: 4.73125, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: -4.1437497, y: 4.73125, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 4.09375, z: -0.95624995, w: 0.31875} + firstChild: 5289 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 4.09375, z: -0.31875, w: 0.31875} + firstChild: 5297 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: -4.7812495, y: 4.73125, z: -0.95624995, w: 0.31875} + firstChild: 5305 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: -4.7812495, y: 4.73125, z: -0.31875, w: 0.31875} + firstChild: 5313 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 4.09375, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 4.09375, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: -4.1437497, y: 4.73125, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: -4.1437497, y: 4.73125, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.3520751, y: -0.11180318, z: -0.77078766, w: -0.69473505} + distancesB: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + center: {x: -4.7812495, y: 5.3687506, z: -4.7812495, w: 0.31875} + firstChild: 5321 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: -4.7812495, y: 5.3687506, z: -4.1437497, w: 0.31875} + firstChild: 5329 + - distancesA: {x: -0.77078766, y: -0.69473505, z: -1.3700666, w: -1.3287684} + distancesB: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + center: {x: -4.7812495, y: 6.0062504, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: -4.7812495, y: 6.0062504, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + distancesB: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + center: {x: -4.1437497, y: 5.3687506, z: -4.7812495, w: 0.31875} + firstChild: 5337 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + center: {x: -4.1437497, y: 5.3687506, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + distancesB: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + center: {x: -4.1437497, y: 6.0062504, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + center: {x: -4.1437497, y: 6.0062504, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: -4.7812495, y: 5.3687506, z: -3.5062497, w: 0.31875} + firstChild: 5345 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: -4.7812495, y: 5.3687506, z: -2.8687499, w: 0.31875} + firstChild: 5353 + - distancesA: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: -4.7812495, y: 6.0062504, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: -4.7812495, y: 6.0062504, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + center: {x: -4.1437497, y: 5.3687506, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + center: {x: -4.1437497, y: 5.3687506, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + center: {x: -4.1437497, y: 6.0062504, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + center: {x: -4.1437497, y: 6.0062504, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + distancesB: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + center: {x: -3.5062497, y: 5.3687506, z: -4.7812495, w: 0.31875} + firstChild: 5361 + - distancesA: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + distancesB: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + center: {x: -3.5062497, y: 5.3687506, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + distancesB: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + center: {x: -3.5062497, y: 6.0062504, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + distancesB: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + center: {x: -3.5062497, y: 6.0062504, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + distancesB: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + center: {x: -2.8687499, y: 5.3687506, z: -4.7812495, w: 0.31875} + firstChild: 5369 + - distancesA: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + distancesB: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + center: {x: -2.8687499, y: 5.3687506, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + distancesB: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + center: {x: -2.8687499, y: 6.0062504, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + distancesB: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + center: {x: -2.8687499, y: 6.0062504, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: -4.7812495, y: 5.3687506, z: -2.2312498, w: 0.31875} + firstChild: 5377 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: -4.7812495, y: 5.3687506, z: -1.5937499, w: 0.31875} + firstChild: 5385 + - distancesA: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: -4.7812495, y: 6.0062504, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: -4.7812495, y: 6.0062504, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + center: {x: -4.1437497, y: 5.3687506, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + center: {x: -4.1437497, y: 5.3687506, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + center: {x: -4.1437497, y: 6.0062504, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + center: {x: -4.1437497, y: 6.0062504, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: -4.7812495, y: 5.3687506, z: -0.95624995, w: 0.31875} + firstChild: 5393 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: -4.7812495, y: 5.3687506, z: -0.31875, w: 0.31875} + firstChild: 5401 + - distancesA: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: -4.7812495, y: 6.0062504, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: -4.7812495, y: 6.0062504, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + center: {x: -4.1437497, y: 5.3687506, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + center: {x: -4.1437497, y: 5.3687506, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + center: {x: -4.1437497, y: 6.0062504, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + center: {x: -4.1437497, y: 6.0062504, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -2.2312498, y: 2.8187501, z: -4.7812495, w: 0.31875} + firstChild: 5409 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -2.2312498, y: 2.8187501, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -2.2312498, y: 3.45625, z: -4.7812495, w: 0.31875} + firstChild: 5417 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -2.2312498, y: 3.45625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -1.5937499, y: 2.8187501, z: -4.7812495, w: 0.31875} + firstChild: 5425 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -1.5937499, y: 2.8187501, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -1.5937499, y: 3.45625, z: -4.7812495, w: 0.31875} + firstChild: 5433 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -1.5937499, y: 3.45625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -2.2312498, y: 4.09375, z: -4.7812495, w: 0.31875} + firstChild: 5441 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -2.2312498, y: 4.09375, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + center: {x: -2.2312498, y: 4.73125, z: -4.7812495, w: 0.31875} + firstChild: 5449 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + center: {x: -2.2312498, y: 4.73125, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -1.5937499, y: 4.09375, z: -4.7812495, w: 0.31875} + firstChild: 5457 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -1.5937499, y: 4.09375, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + center: {x: -1.5937499, y: 4.73125, z: -4.7812495, w: 0.31875} + firstChild: 5465 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + center: {x: -1.5937499, y: 4.73125, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -0.95624995, y: 2.8187501, z: -4.7812495, w: 0.31875} + firstChild: 5473 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -0.95624995, y: 2.8187501, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -0.95624995, y: 3.45625, z: -4.7812495, w: 0.31875} + firstChild: 5481 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -0.95624995, y: 3.45625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -0.31875, y: 2.8187501, z: -4.7812495, w: 0.31875} + firstChild: 5489 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -0.31875, y: 2.8187501, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -0.31875, y: 3.45625, z: -4.7812495, w: 0.31875} + firstChild: 5497 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -0.31875, y: 3.45625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -0.95624995, y: 4.09375, z: -4.7812495, w: 0.31875} + firstChild: 5505 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -0.95624995, y: 4.09375, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + center: {x: -0.95624995, y: 4.73125, z: -4.7812495, w: 0.31875} + firstChild: 5513 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + center: {x: -0.95624995, y: 4.73125, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: -0.31875, y: 4.09375, z: -4.7812495, w: 0.31875} + firstChild: 5521 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: -0.31875, y: 4.09375, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + center: {x: -0.31875, y: 4.73125, z: -4.7812495, w: 0.31875} + firstChild: 5529 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + center: {x: -0.31875, y: 4.73125, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + distancesB: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + center: {x: -2.2312498, y: 5.3687506, z: -4.7812495, w: 0.31875} + firstChild: 5537 + - distancesA: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + distancesB: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + center: {x: -2.2312498, y: 5.3687506, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + distancesB: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + center: {x: -2.2312498, y: 6.0062504, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + distancesB: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + center: {x: -2.2312498, y: 6.0062504, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + distancesB: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + center: {x: -1.5937499, y: 5.3687506, z: -4.7812495, w: 0.31875} + firstChild: 5545 + - distancesA: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + distancesB: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + center: {x: -1.5937499, y: 5.3687506, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + distancesB: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + center: {x: -1.5937499, y: 6.0062504, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + distancesB: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + center: {x: -1.5937499, y: 6.0062504, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + distancesB: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + center: {x: -0.95624995, y: 5.3687506, z: -4.7812495, w: 0.31875} + firstChild: 5553 + - distancesA: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + distancesB: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + center: {x: -0.95624995, y: 5.3687506, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + distancesB: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + center: {x: -0.95624995, y: 6.0062504, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + distancesB: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + center: {x: -0.95624995, y: 6.0062504, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + distancesB: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + center: {x: -0.31875, y: 5.3687506, z: -4.7812495, w: 0.31875} + firstChild: 5561 + - distancesA: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + distancesB: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + center: {x: -0.31875, y: 5.3687506, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + distancesB: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + center: {x: -0.31875, y: 6.0062504, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + distancesB: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + center: {x: -0.31875, y: 6.0062504, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.8187501, z: 0.31875, w: 0.31875} + firstChild: 5569 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.8187501, z: 0.95624995, w: 0.31875} + firstChild: 5577 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 3.45625, z: 0.31875, w: 0.31875} + firstChild: 5585 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 3.45625, z: 0.95624995, w: 0.31875} + firstChild: 5593 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.8187501, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.8187501, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 3.45625, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 3.45625, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.8187501, z: 1.5937499, w: 0.31875} + firstChild: 5601 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.8187501, z: 2.2312498, w: 0.31875} + firstChild: 5609 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 3.45625, z: 1.5937499, w: 0.31875} + firstChild: 5617 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 3.45625, z: 2.2312498, w: 0.31875} + firstChild: 5625 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.8187501, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.8187501, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 3.45625, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 3.45625, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 4.09375, z: 0.31875, w: 0.31875} + firstChild: 5633 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 4.09375, z: 0.95624995, w: 0.31875} + firstChild: 5641 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: -4.7812495, y: 4.73125, z: 0.31875, w: 0.31875} + firstChild: 5649 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: -4.7812495, y: 4.73125, z: 0.95624995, w: 0.31875} + firstChild: 5657 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 4.09375, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 4.09375, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: -4.1437497, y: 4.73125, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: -4.1437497, y: 4.73125, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 4.09375, z: 1.5937499, w: 0.31875} + firstChild: 5665 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 4.09375, z: 2.2312498, w: 0.31875} + firstChild: 5673 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: -4.7812495, y: 4.73125, z: 1.5937499, w: 0.31875} + firstChild: 5681 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: -4.7812495, y: 4.73125, z: 2.2312498, w: 0.31875} + firstChild: 5689 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 4.09375, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 4.09375, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: -4.1437497, y: 4.73125, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: -4.1437497, y: 4.73125, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.8187501, z: 2.8687499, w: 0.31875} + firstChild: 5697 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.8187501, z: 3.5062497, w: 0.31875} + firstChild: 5705 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 3.45625, z: 2.8687499, w: 0.31875} + firstChild: 5713 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 3.45625, z: 3.5062497, w: 0.31875} + firstChild: 5721 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.8187501, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 2.8187501, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 3.45625, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 3.45625, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 2.8187501, z: 4.1437497, w: 0.31875} + firstChild: 5729 + - distancesA: {x: -0.09999943, y: -0.34850657, z: -0.09999943, w: -0.34850657} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -4.7812495, y: 2.8187501, z: 4.7812495, w: 0.31875} + firstChild: 5737 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 3.45625, z: 4.1437497, w: 0.31875} + firstChild: 5745 + - distancesA: {x: -0.09999943, y: -0.34850657, z: -0.09999943, w: -0.34850657} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -4.7812495, y: 3.45625, z: 4.7812495, w: 0.31875} + firstChild: 5753 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -4.1437497, y: 2.8187501, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -4.1437497, y: 2.8187501, z: 4.7812495, w: 0.31875} + firstChild: 5761 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -4.1437497, y: 3.45625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -4.1437497, y: 3.45625, z: 4.7812495, w: 0.31875} + firstChild: 5769 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 4.09375, z: 2.8687499, w: 0.31875} + firstChild: 5777 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 4.09375, z: 3.5062497, w: 0.31875} + firstChild: 5785 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: -4.7812495, y: 4.73125, z: 2.8687499, w: 0.31875} + firstChild: 5793 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: -4.7812495, y: 4.73125, z: 3.5062497, w: 0.31875} + firstChild: 5801 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 4.09375, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + center: {x: -4.1437497, y: 4.09375, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: -4.1437497, y: 4.73125, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + center: {x: -4.1437497, y: 4.73125, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: -4.7812495, y: 4.09375, z: 4.1437497, w: 0.31875} + firstChild: 5809 + - distancesA: {x: -0.09999943, y: -0.34850657, z: -0.09999943, w: -0.34850657} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -4.7812495, y: 4.09375, z: 4.7812495, w: 0.31875} + firstChild: 5817 + - distancesA: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: -4.7812495, y: 4.73125, z: 4.1437497, w: 0.31875} + firstChild: 5825 + - distancesA: {x: -0.09999943, y: -0.34850657, z: -0.11180276, w: -0.35207498} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + center: {x: -4.7812495, y: 4.73125, z: 4.7812495, w: 0.31875} + firstChild: 5833 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -4.1437497, y: 4.09375, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -4.1437497, y: 4.09375, z: 4.7812495, w: 0.31875} + firstChild: 5841 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + center: {x: -4.1437497, y: 4.73125, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + center: {x: -4.1437497, y: 4.73125, z: 4.7812495, w: 0.31875} + firstChild: 5849 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -3.5062497, y: 2.8187501, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -3.5062497, y: 2.8187501, z: 4.7812495, w: 0.31875} + firstChild: 5857 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -3.5062497, y: 3.45625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -3.5062497, y: 3.45625, z: 4.7812495, w: 0.31875} + firstChild: 5865 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -2.8687499, y: 2.8187501, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -2.8687499, y: 2.8187501, z: 4.7812495, w: 0.31875} + firstChild: 5873 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -2.8687499, y: 3.45625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -2.8687499, y: 3.45625, z: 4.7812495, w: 0.31875} + firstChild: 5881 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -3.5062497, y: 4.09375, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -3.5062497, y: 4.09375, z: 4.7812495, w: 0.31875} + firstChild: 5889 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + center: {x: -3.5062497, y: 4.73125, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + center: {x: -3.5062497, y: 4.73125, z: 4.7812495, w: 0.31875} + firstChild: 5897 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -2.8687499, y: 4.09375, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -2.8687499, y: 4.09375, z: 4.7812495, w: 0.31875} + firstChild: 5905 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + center: {x: -2.8687499, y: 4.73125, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + center: {x: -2.8687499, y: 4.73125, z: 4.7812495, w: 0.31875} + firstChild: 5913 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: -4.7812495, y: 5.3687506, z: 0.31875, w: 0.31875} + firstChild: 5921 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: -4.7812495, y: 5.3687506, z: 0.95624995, w: 0.31875} + firstChild: 5929 + - distancesA: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: -4.7812495, y: 6.0062504, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: -4.7812495, y: 6.0062504, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + center: {x: -4.1437497, y: 5.3687506, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + center: {x: -4.1437497, y: 5.3687506, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + center: {x: -4.1437497, y: 6.0062504, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + center: {x: -4.1437497, y: 6.0062504, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: -4.7812495, y: 5.3687506, z: 1.5937499, w: 0.31875} + firstChild: 5937 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: -4.7812495, y: 5.3687506, z: 2.2312498, w: 0.31875} + firstChild: 5945 + - distancesA: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: -4.7812495, y: 6.0062504, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: -4.7812495, y: 6.0062504, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + center: {x: -4.1437497, y: 5.3687506, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + center: {x: -4.1437497, y: 5.3687506, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + center: {x: -4.1437497, y: 6.0062504, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + center: {x: -4.1437497, y: 6.0062504, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: -4.7812495, y: 5.3687506, z: 2.8687499, w: 0.31875} + firstChild: 5953 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: -4.7812495, y: 5.3687506, z: 3.5062497, w: 0.31875} + firstChild: 5961 + - distancesA: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: -4.7812495, y: 6.0062504, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: -4.7812495, y: 6.0062504, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + center: {x: -4.1437497, y: 5.3687506, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + center: {x: -4.1437497, y: 5.3687506, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + center: {x: -4.1437497, y: 6.0062504, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + center: {x: -4.1437497, y: 6.0062504, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: -4.7812495, y: 5.3687506, z: 4.1437497, w: 0.31875} + firstChild: 5969 + - distancesA: {x: -0.11180318, y: -0.3520751, z: -0.69473505, w: -0.77078766} + distancesB: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + center: {x: -4.7812495, y: 5.3687506, z: 4.7812495, w: 0.31875} + firstChild: 5977 + - distancesA: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: -4.7812495, y: 6.0062504, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: -0.77078766, z: -1.3287684, w: -1.3700666} + distancesB: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + center: {x: -4.7812495, y: 6.0062504, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + center: {x: -4.1437497, y: 5.3687506, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + distancesB: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + center: {x: -4.1437497, y: 5.3687506, z: 4.7812495, w: 0.31875} + firstChild: 5985 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + center: {x: -4.1437497, y: 6.0062504, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + distancesB: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + center: {x: -4.1437497, y: 6.0062504, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + distancesB: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + center: {x: -3.5062497, y: 5.3687506, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + distancesB: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + center: {x: -3.5062497, y: 5.3687506, z: 4.7812495, w: 0.31875} + firstChild: 5993 + - distancesA: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + distancesB: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + center: {x: -3.5062497, y: 6.0062504, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + distancesB: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + center: {x: -3.5062497, y: 6.0062504, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + distancesB: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + center: {x: -2.8687499, y: 5.3687506, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + distancesB: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + center: {x: -2.8687499, y: 5.3687506, z: 4.7812495, w: 0.31875} + firstChild: 6001 + - distancesA: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + distancesB: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + center: {x: -2.8687499, y: 6.0062504, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + distancesB: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + center: {x: -2.8687499, y: 6.0062504, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -2.2312498, y: 2.8187501, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -2.2312498, y: 2.8187501, z: 4.7812495, w: 0.31875} + firstChild: 6009 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -2.2312498, y: 3.45625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -2.2312498, y: 3.45625, z: 4.7812495, w: 0.31875} + firstChild: 6017 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -1.5937499, y: 2.8187501, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -1.5937499, y: 2.8187501, z: 4.7812495, w: 0.31875} + firstChild: 6025 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -1.5937499, y: 3.45625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -1.5937499, y: 3.45625, z: 4.7812495, w: 0.31875} + firstChild: 6033 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -2.2312498, y: 4.09375, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -2.2312498, y: 4.09375, z: 4.7812495, w: 0.31875} + firstChild: 6041 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + center: {x: -2.2312498, y: 4.73125, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + center: {x: -2.2312498, y: 4.73125, z: 4.7812495, w: 0.31875} + firstChild: 6049 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -1.5937499, y: 4.09375, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -1.5937499, y: 4.09375, z: 4.7812495, w: 0.31875} + firstChild: 6057 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + center: {x: -1.5937499, y: 4.73125, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + center: {x: -1.5937499, y: 4.73125, z: 4.7812495, w: 0.31875} + firstChild: 6065 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -0.95624995, y: 2.8187501, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -0.95624995, y: 2.8187501, z: 4.7812495, w: 0.31875} + firstChild: 6073 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -0.95624995, y: 3.45625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -0.95624995, y: 3.45625, z: 4.7812495, w: 0.31875} + firstChild: 6081 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -0.31875, y: 2.8187501, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -0.31875, y: 2.8187501, z: 4.7812495, w: 0.31875} + firstChild: 6089 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -0.31875, y: 3.45625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -0.31875, y: 3.45625, z: 4.7812495, w: 0.31875} + firstChild: 6097 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -0.95624995, y: 4.09375, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -0.95624995, y: 4.09375, z: 4.7812495, w: 0.31875} + firstChild: 6105 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + center: {x: -0.95624995, y: 4.73125, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + center: {x: -0.95624995, y: 4.73125, z: 4.7812495, w: 0.31875} + firstChild: 6113 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: -0.31875, y: 4.09375, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: -0.31875, y: 4.09375, z: 4.7812495, w: 0.31875} + firstChild: 6121 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + center: {x: -0.31875, y: 4.73125, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + center: {x: -0.31875, y: 4.73125, z: 4.7812495, w: 0.31875} + firstChild: 6129 + - distancesA: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + distancesB: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + center: {x: -2.2312498, y: 5.3687506, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + distancesB: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + center: {x: -2.2312498, y: 5.3687506, z: 4.7812495, w: 0.31875} + firstChild: 6137 + - distancesA: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + distancesB: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + center: {x: -2.2312498, y: 6.0062504, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + distancesB: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + center: {x: -2.2312498, y: 6.0062504, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + distancesB: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + center: {x: -1.5937499, y: 5.3687506, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + distancesB: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + center: {x: -1.5937499, y: 5.3687506, z: 4.7812495, w: 0.31875} + firstChild: 6145 + - distancesA: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + distancesB: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + center: {x: -1.5937499, y: 6.0062504, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + distancesB: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + center: {x: -1.5937499, y: 6.0062504, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + distancesB: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + center: {x: -0.95624995, y: 5.3687506, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + distancesB: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + center: {x: -0.95624995, y: 5.3687506, z: 4.7812495, w: 0.31875} + firstChild: 6153 + - distancesA: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + distancesB: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + center: {x: -0.95624995, y: 6.0062504, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + distancesB: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + center: {x: -0.95624995, y: 6.0062504, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + distancesB: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + center: {x: -0.31875, y: 5.3687506, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + distancesB: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + center: {x: -0.31875, y: 5.3687506, z: 4.7812495, w: 0.31875} + firstChild: 6161 + - distancesA: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + distancesB: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + center: {x: -0.31875, y: 6.0062504, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + distancesB: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + center: {x: -0.31875, y: 6.0062504, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.4229816, y: -1.3249999, z: -0.83250904, w: -0.6874999} + distancesB: {x: -1.4229817, y: -1.3249999, z: -0.83250904, w: -0.6874999} + center: {x: 0.31875, y: -1.0062499, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.31875, y: -1.0062499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.83250904, y: -0.6874999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -0.83250904, y: -0.6874999, z: -0.31510916, w: -0.049999956} + center: {x: 0.31875, y: -0.36874995, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.31875, y: -0.36874995, z: -4.1437497, w: 0.31875} + firstChild: 6169 + - distancesA: {x: -1.4229817, y: -1.3249999, z: -0.83250904, w: -0.6874999} + distancesB: {x: -1.422982, y: -1.3249999, z: -0.83250886, w: -0.6874999} + center: {x: 0.95624995, y: -1.0062499, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.95624995, y: -1.0062499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.83250904, y: -0.6874999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -0.8325089, y: -0.6874999, z: -0.31510916, w: -0.049999956} + center: {x: 0.95624995, y: -0.36874995, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.95624995, y: -0.36874995, z: -4.1437497, w: 0.31875} + firstChild: 6177 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.31875, y: -1.0062499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.31875, y: -1.0062499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.31875, y: -0.36874995, z: -3.5062497, w: 0.31875} + firstChild: 6185 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.31875, y: -0.36874995, z: -2.8687499, w: 0.31875} + firstChild: 6193 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.95624995, y: -1.0062499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.95624995, y: -1.0062499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.95624995, y: -0.36874995, z: -3.5062497, w: 0.31875} + firstChild: 6201 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.95624995, y: -0.36874995, z: -2.8687499, w: 0.31875} + firstChild: 6209 + - distancesA: {x: -1.422982, y: -1.3249999, z: -0.83250886, w: -0.6874999} + distancesB: {x: -1.4229825, y: -1.3249999, z: -0.83250904, w: -0.6874999} + center: {x: 1.5937499, y: -1.0062499, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 1.5937499, y: -1.0062499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325089, y: -0.6874999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -0.83250904, y: -0.6874999, z: -0.31510916, w: -0.049999956} + center: {x: 1.5937499, y: -0.36874995, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 1.5937499, y: -0.36874995, z: -4.1437497, w: 0.31875} + firstChild: 6217 + - distancesA: {x: -1.4229825, y: -1.3249999, z: -0.83250904, w: -0.6874999} + distancesB: {x: -1.4229819, y: -1.3249999, z: -0.83250886, w: -0.6874999} + center: {x: 2.2312498, y: -1.0062499, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.2312498, y: -1.0062499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.83250904, y: -0.6874999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -0.8325089, y: -0.6874999, z: -0.31510916, w: -0.049999956} + center: {x: 2.2312498, y: -0.36874995, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.2312498, y: -0.36874995, z: -4.1437497, w: 0.31875} + firstChild: 6225 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 1.5937499, y: -1.0062499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 1.5937499, y: -1.0062499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 1.5937499, y: -0.36874995, z: -3.5062497, w: 0.31875} + firstChild: 6233 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 1.5937499, y: -0.36874995, z: -2.8687499, w: 0.31875} + firstChild: 6241 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.2312498, y: -1.0062499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.2312498, y: -1.0062499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.2312498, y: -0.36874995, z: -3.5062497, w: 0.31875} + firstChild: 6249 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.2312498, y: -0.36874995, z: -2.8687499, w: 0.31875} + firstChild: 6257 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.31875, y: -1.0062499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.31875, y: -1.0062499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.31875, y: -0.36874995, z: -2.2312498, w: 0.31875} + firstChild: 6265 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.31875, y: -0.36874995, z: -1.5937499, w: 0.31875} + firstChild: 6273 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.95624995, y: -1.0062499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.95624995, y: -1.0062499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.95624995, y: -0.36874995, z: -2.2312498, w: 0.31875} + firstChild: 6281 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.95624995, y: -0.36874995, z: -1.5937499, w: 0.31875} + firstChild: 6289 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.31875, y: -1.0062499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.31875, y: -1.0062499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.31875, y: -0.36874995, z: -0.95624995, w: 0.31875} + firstChild: 6297 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.31875, y: -0.36874995, z: -0.31875, w: 0.31875} + firstChild: 6305 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.95624995, y: -1.0062499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.95624995, y: -1.0062499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.95624995, y: -0.36874995, z: -0.95624995, w: 0.31875} + firstChild: 6313 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.95624995, y: -0.36874995, z: -0.31875, w: 0.31875} + firstChild: 6321 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 1.5937499, y: -1.0062499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 1.5937499, y: -1.0062499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 1.5937499, y: -0.36874995, z: -2.2312498, w: 0.31875} + firstChild: 6329 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 1.5937499, y: -0.36874995, z: -1.5937499, w: 0.31875} + firstChild: 6337 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.2312498, y: -1.0062499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.2312498, y: -1.0062499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.2312498, y: -0.36874995, z: -2.2312498, w: 0.31875} + firstChild: 6345 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.2312498, y: -0.36874995, z: -1.5937499, w: 0.31875} + firstChild: 6353 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 1.5937499, y: -1.0062499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 1.5937499, y: -1.0062499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 1.5937499, y: -0.36874995, z: -0.95624995, w: 0.31875} + firstChild: 6361 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 1.5937499, y: -0.36874995, z: -0.31875, w: 0.31875} + firstChild: 6369 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.2312498, y: -1.0062499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.2312498, y: -1.0062499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.2312498, y: -0.36874995, z: -0.95624995, w: 0.31875} + firstChild: 6377 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.2312498, y: -0.36874995, z: -0.31875, w: 0.31875} + firstChild: 6385 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + center: {x: 0.31875, y: 0.26875004, z: -4.7812495, w: 0.31875} + firstChild: 6393 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + center: {x: 0.31875, y: 0.26875004, z: -4.1437497, w: 0.31875} + firstChild: 6401 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 0.31875, y: 0.90625, z: -4.7812495, w: 0.31875} + firstChild: 6409 + - distancesA: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + center: {x: 0.31875, y: 0.90625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + center: {x: 0.95624995, y: 0.26875004, z: -4.7812495, w: 0.31875} + firstChild: 6417 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + center: {x: 0.95624995, y: 0.26875004, z: -4.1437497, w: 0.31875} + firstChild: 6425 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 0.95624995, y: 0.90625, z: -4.7812495, w: 0.31875} + firstChild: 6433 + - distancesA: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + center: {x: 0.95624995, y: 0.90625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.31875, y: 0.26875004, z: -3.5062497, w: 0.31875} + firstChild: 6441 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.31875, y: 0.26875004, z: -2.8687499, w: 0.31875} + firstChild: 6449 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + center: {x: 0.31875, y: 0.90625, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.31875, y: 0.90625, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.95624995, y: 0.26875004, z: -3.5062497, w: 0.31875} + firstChild: 6457 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.95624995, y: 0.26875004, z: -2.8687499, w: 0.31875} + firstChild: 6465 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + center: {x: 0.95624995, y: 0.90625, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.95624995, y: 0.90625, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 0.31875, y: 1.5437499, z: -4.7812495, w: 0.31875} + firstChild: 6473 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 0.31875, y: 1.5437499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 0.31875, y: 2.1812499, z: -4.7812495, w: 0.31875} + firstChild: 6481 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 0.31875, y: 2.1812499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 0.95624995, y: 1.5437499, z: -4.7812495, w: 0.31875} + firstChild: 6489 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 0.95624995, y: 1.5437499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 0.95624995, y: 2.1812499, z: -4.7812495, w: 0.31875} + firstChild: 6497 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 0.95624995, y: 2.1812499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + center: {x: 1.5937499, y: 0.26875004, z: -4.7812495, w: 0.31875} + firstChild: 6505 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + center: {x: 1.5937499, y: 0.26875004, z: -4.1437497, w: 0.31875} + firstChild: 6513 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 1.5937499, y: 0.90625, z: -4.7812495, w: 0.31875} + firstChild: 6521 + - distancesA: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + center: {x: 1.5937499, y: 0.90625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + center: {x: 2.2312498, y: 0.26875004, z: -4.7812495, w: 0.31875} + firstChild: 6529 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + center: {x: 2.2312498, y: 0.26875004, z: -4.1437497, w: 0.31875} + firstChild: 6537 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 2.2312498, y: 0.90625, z: -4.7812495, w: 0.31875} + firstChild: 6545 + - distancesA: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + center: {x: 2.2312498, y: 0.90625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 1.5937499, y: 0.26875004, z: -3.5062497, w: 0.31875} + firstChild: 6553 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 1.5937499, y: 0.26875004, z: -2.8687499, w: 0.31875} + firstChild: 6561 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + center: {x: 1.5937499, y: 0.90625, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 1.5937499, y: 0.90625, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.2312498, y: 0.26875004, z: -3.5062497, w: 0.31875} + firstChild: 6569 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.2312498, y: 0.26875004, z: -2.8687499, w: 0.31875} + firstChild: 6577 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + center: {x: 2.2312498, y: 0.90625, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.2312498, y: 0.90625, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 1.5937499, y: 1.5437499, z: -4.7812495, w: 0.31875} + firstChild: 6585 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 1.5937499, y: 1.5437499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 1.5937499, y: 2.1812499, z: -4.7812495, w: 0.31875} + firstChild: 6593 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 1.5937499, y: 2.1812499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 2.2312498, y: 1.5437499, z: -4.7812495, w: 0.31875} + firstChild: 6601 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 2.2312498, y: 1.5437499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 2.2312498, y: 2.1812499, z: -4.7812495, w: 0.31875} + firstChild: 6609 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 2.2312498, y: 2.1812499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.31875, y: 0.26875004, z: -2.2312498, w: 0.31875} + firstChild: 6617 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.31875, y: 0.26875004, z: -1.5937499, w: 0.31875} + firstChild: 6625 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.31875, y: 0.90625, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.31875, y: 0.90625, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.95624995, y: 0.26875004, z: -2.2312498, w: 0.31875} + firstChild: 6633 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.95624995, y: 0.26875004, z: -1.5937499, w: 0.31875} + firstChild: 6641 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.95624995, y: 0.90625, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.95624995, y: 0.90625, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.31875, y: 0.26875004, z: -0.95624995, w: 0.31875} + firstChild: 6649 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.31875, y: 0.26875004, z: -0.31875, w: 0.31875} + firstChild: 6657 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.31875, y: 0.90625, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.31875, y: 0.90625, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.95624995, y: 0.26875004, z: -0.95624995, w: 0.31875} + firstChild: 6665 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.95624995, y: 0.26875004, z: -0.31875, w: 0.31875} + firstChild: 6673 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.95624995, y: 0.90625, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.95624995, y: 0.90625, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 1.5937499, y: 0.26875004, z: -2.2312498, w: 0.31875} + firstChild: 6681 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 1.5937499, y: 0.26875004, z: -1.5937499, w: 0.31875} + firstChild: 6689 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 1.5937499, y: 0.90625, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 1.5937499, y: 0.90625, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.2312498, y: 0.26875004, z: -2.2312498, w: 0.31875} + firstChild: 6697 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.2312498, y: 0.26875004, z: -1.5937499, w: 0.31875} + firstChild: 6705 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.2312498, y: 0.90625, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.2312498, y: 0.90625, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 1.5937499, y: 0.26875004, z: -0.95624995, w: 0.31875} + firstChild: 6713 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 1.5937499, y: 0.26875004, z: -0.31875, w: 0.31875} + firstChild: 6721 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 1.5937499, y: 0.90625, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 1.5937499, y: 0.90625, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.2312498, y: 0.26875004, z: -0.95624995, w: 0.31875} + firstChild: 6729 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.2312498, y: 0.26875004, z: -0.31875, w: 0.31875} + firstChild: 6737 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.2312498, y: 0.90625, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.2312498, y: 0.90625, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.4229816, y: -1.3249999, z: -0.83250886, w: -0.6874999} + distancesB: {x: -1.4229816, y: -1.3249999, z: -0.83250886, w: -0.6874999} + center: {x: 2.8687499, y: -1.0062499, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.8687499, y: -1.0062499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325089, y: -0.6874999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -0.8325089, y: -0.6874999, z: -0.31510916, w: -0.049999956} + center: {x: 2.8687499, y: -0.36874995, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.8687499, y: -0.36874995, z: -4.1437497, w: 0.31875} + firstChild: 6745 + - distancesA: {x: -1.4229816, y: -1.3249999, z: -0.83250886, w: -0.6874999} + distancesB: {x: -1.4229816, y: -1.3249999, z: -0.83250904, w: -0.6874999} + center: {x: 3.5062497, y: -1.0062499, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 3.5062497, y: -1.0062499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325089, y: -0.6874999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -0.83250904, y: -0.6874999, z: -0.31510916, w: -0.049999956} + center: {x: 3.5062497, y: -0.36874995, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 3.5062497, y: -0.36874995, z: -4.1437497, w: 0.31875} + firstChild: 6753 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.8687499, y: -1.0062499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.8687499, y: -1.0062499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.8687499, y: -0.36874995, z: -3.5062497, w: 0.31875} + firstChild: 6761 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.8687499, y: -0.36874995, z: -2.8687499, w: 0.31875} + firstChild: 6769 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 3.5062497, y: -1.0062499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 3.5062497, y: -1.0062499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 3.5062497, y: -0.36874995, z: -3.5062497, w: 0.31875} + firstChild: 6777 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 3.5062497, y: -0.36874995, z: -2.8687499, w: 0.31875} + firstChild: 6785 + - distancesA: {x: -1.4229816, y: -1.3249999, z: -0.83250904, w: -0.6874999} + distancesB: {x: -1.4229816, y: -1.3249999, z: -0.83250886, w: -0.6874999} + center: {x: 4.1437497, y: -1.0062499, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 4.1437497, y: -1.0062499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.83250904, y: -0.6874999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -0.8325089, y: -0.6874999, z: -0.31510916, w: -0.049999956} + center: {x: 4.1437497, y: -0.36874995, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 4.1437497, y: -0.36874995, z: -4.1437497, w: 0.31875} + firstChild: 6793 + - distancesA: {x: -1.4229816, y: -1.3249999, z: -0.83250886, w: -0.6874999} + distancesB: {x: -1.5167226, y: -1.422983, z: -0.9615866, w: -0.8325113} + center: {x: 4.7812495, y: -1.0062499, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.422983, y: -1.4229839, z: -0.8325113, w: -0.8325126} + center: {x: 4.7812495, y: -1.0062499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.8325089, y: -0.6874999, z: -0.31510916, w: -0.049999956} + distancesB: {x: -0.96158665, y: -0.8325113, z: -0.51686233, w: -0.31511536} + center: {x: 4.7812495, y: -0.36874995, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.8325113, y: -0.8325127, z: -0.31511536, w: -0.31510916} + center: {x: 4.7812495, y: -0.36874995, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 4.1437497, y: -1.0062499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 4.1437497, y: -1.0062499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 4.1437497, y: -0.36874995, z: -3.5062497, w: 0.31875} + firstChild: 6801 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 4.1437497, y: -0.36874995, z: -2.8687499, w: 0.31875} + firstChild: 6809 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.4229892, y: -1.4229848, z: -0.8325489, w: -0.83251446} + center: {x: 4.7812495, y: -1.0062499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.4229848, y: -1.422986, z: -0.83251446, w: -0.83250904} + center: {x: 4.7812495, y: -1.0062499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.832549, y: -0.8325144, z: -0.31510916, w: -0.31510916} + center: {x: 4.7812495, y: -0.36874995, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.8325144, y: -0.83250904, z: -0.31510916, w: -0.31510916} + center: {x: 4.7812495, y: -0.36874995, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.8687499, y: -1.0062499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.8687499, y: -1.0062499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.8687499, y: -0.36874995, z: -2.2312498, w: 0.31875} + firstChild: 6817 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.8687499, y: -0.36874995, z: -1.5937499, w: 0.31875} + firstChild: 6825 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 3.5062497, y: -1.0062499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 3.5062497, y: -1.0062499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 3.5062497, y: -0.36874995, z: -2.2312498, w: 0.31875} + firstChild: 6833 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 3.5062497, y: -0.36874995, z: -1.5937499, w: 0.31875} + firstChild: 6841 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.8687499, y: -1.0062499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.8687499, y: -1.0062499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.8687499, y: -0.36874995, z: -0.95624995, w: 0.31875} + firstChild: 6849 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.8687499, y: -0.36874995, z: -0.31875, w: 0.31875} + firstChild: 6857 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 3.5062497, y: -1.0062499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 3.5062497, y: -1.0062499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 3.5062497, y: -0.36874995, z: -0.95624995, w: 0.31875} + firstChild: 6865 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 3.5062497, y: -0.36874995, z: -0.31875, w: 0.31875} + firstChild: 6873 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 4.1437497, y: -1.0062499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 4.1437497, y: -1.0062499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 4.1437497, y: -0.36874995, z: -2.2312498, w: 0.31875} + firstChild: 6881 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 4.1437497, y: -0.36874995, z: -1.5937499, w: 0.31875} + firstChild: 6889 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.422986, y: -1.4229826, z: -0.83250904, w: -0.83250886} + center: {x: 4.7812495, y: -1.0062499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.4229826, y: -1.422982, z: -0.83250886, w: -0.83250904} + center: {x: 4.7812495, y: -1.0062499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.83250904, y: -0.8325089, z: -0.31510916, w: -0.31510878} + center: {x: 4.7812495, y: -0.36874995, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.8325089, y: -0.83250904, z: -0.31510878, w: -0.3151088} + center: {x: 4.7812495, y: -0.36874995, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 4.1437497, y: -1.0062499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 4.1437497, y: -1.0062499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 4.1437497, y: -0.36874995, z: -0.95624995, w: 0.31875} + firstChild: 6897 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 4.1437497, y: -0.36874995, z: -0.31875, w: 0.31875} + firstChild: 6905 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.422982, y: -1.4229835, z: -0.83250904, w: -0.83250886} + center: {x: 4.7812495, y: -1.0062499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.4229835, y: -1.4229816, z: -0.83250886, w: -0.83250904} + center: {x: 4.7812495, y: -1.0062499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.83250904, y: -0.8325089, z: -0.3151088, w: -0.3151088} + center: {x: 4.7812495, y: -0.36874995, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.8325089, y: -0.83250904, z: -0.3151088, w: -0.31510916} + center: {x: 4.7812495, y: -0.36874995, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + center: {x: 2.8687499, y: 0.26875004, z: -4.7812495, w: 0.31875} + firstChild: 6913 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + center: {x: 2.8687499, y: 0.26875004, z: -4.1437497, w: 0.31875} + firstChild: 6921 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 2.8687499, y: 0.90625, z: -4.7812495, w: 0.31875} + firstChild: 6929 + - distancesA: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + center: {x: 2.8687499, y: 0.90625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + center: {x: 3.5062497, y: 0.26875004, z: -4.7812495, w: 0.31875} + firstChild: 6937 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + center: {x: 3.5062497, y: 0.26875004, z: -4.1437497, w: 0.31875} + firstChild: 6945 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 3.5062497, y: 0.90625, z: -4.7812495, w: 0.31875} + firstChild: 6953 + - distancesA: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + center: {x: 3.5062497, y: 0.90625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.8687499, y: 0.26875004, z: -3.5062497, w: 0.31875} + firstChild: 6961 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.8687499, y: 0.26875004, z: -2.8687499, w: 0.31875} + firstChild: 6969 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + center: {x: 2.8687499, y: 0.90625, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.8687499, y: 0.90625, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 3.5062497, y: 0.26875004, z: -3.5062497, w: 0.31875} + firstChild: 6977 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 3.5062497, y: 0.26875004, z: -2.8687499, w: 0.31875} + firstChild: 6985 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + center: {x: 3.5062497, y: 0.90625, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + center: {x: 3.5062497, y: 0.90625, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 2.8687499, y: 1.5437499, z: -4.7812495, w: 0.31875} + firstChild: 6993 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 2.8687499, y: 1.5437499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 2.8687499, y: 2.1812499, z: -4.7812495, w: 0.31875} + firstChild: 7001 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 2.8687499, y: 2.1812499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 3.5062497, y: 1.5437499, z: -4.7812495, w: 0.31875} + firstChild: 7009 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 3.5062497, y: 1.5437499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 3.5062497, y: 2.1812499, z: -4.7812495, w: 0.31875} + firstChild: 7017 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 3.5062497, y: 2.1812499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + center: {x: 4.1437497, y: 0.26875004, z: -4.7812495, w: 0.31875} + firstChild: 7025 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.26875004, z: -4.1437497, w: 0.31875} + firstChild: 7033 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 4.1437497, y: 0.90625, z: -4.7812495, w: 0.31875} + firstChild: 7041 + - distancesA: {x: 0.5375004, y: 0.5875, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.90625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.31510916, y: -0.049999956, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.51686233, y: -0.31511536, z: -0.34850657, w: -0.09999943} + center: {x: 4.7812495, y: 0.26875004, z: -4.7812495, w: 0.31875} + firstChild: 7049 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.31511536, y: -0.31510916, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.26875004, z: -4.1437497, w: 0.31875} + firstChild: 7057 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.34850657, y: -0.09999943, z: -0.34850657, w: -0.09999943} + center: {x: 4.7812495, y: 0.90625, z: -4.7812495, w: 0.31875} + firstChild: 7065 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.90625, z: -4.1437497, w: 0.31875} + firstChild: 7073 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.26875004, z: -3.5062497, w: 0.31875} + firstChild: 7081 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.26875004, z: -2.8687499, w: 0.31875} + firstChild: 7089 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.90625, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.90625, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.31510916, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.26875004, z: -3.5062497, w: 0.31875} + firstChild: 7097 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.31510916, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.26875004, z: -2.8687499, w: 0.31875} + firstChild: 7105 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.90625, z: -3.5062497, w: 0.31875} + firstChild: 7113 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.90625, z: -2.8687499, w: 0.31875} + firstChild: 7121 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 4.1437497, y: 1.5437499, z: -4.7812495, w: 0.31875} + firstChild: 7129 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 1.5437499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 4.1437497, y: 2.1812499, z: -4.7812495, w: 0.31875} + firstChild: 7137 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.1812499, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.34850657, y: -0.09999943, z: -0.34850657, w: -0.09999943} + center: {x: 4.7812495, y: 1.5437499, z: -4.7812495, w: 0.31875} + firstChild: 7145 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 1.5437499, z: -4.1437497, w: 0.31875} + firstChild: 7153 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.34850657, y: -0.09999943, z: -0.34850657, w: -0.09999943} + center: {x: 4.7812495, y: 2.1812499, z: -4.7812495, w: 0.31875} + firstChild: 7161 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.1812499, z: -4.1437497, w: 0.31875} + firstChild: 7169 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 1.5437499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 1.5437499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.1812499, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.1812499, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 1.5437499, z: -3.5062497, w: 0.31875} + firstChild: 7177 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 1.5437499, z: -2.8687499, w: 0.31875} + firstChild: 7185 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.1812499, z: -3.5062497, w: 0.31875} + firstChild: 7193 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.1812499, z: -2.8687499, w: 0.31875} + firstChild: 7201 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.8687499, y: 0.26875004, z: -2.2312498, w: 0.31875} + firstChild: 7209 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.8687499, y: 0.26875004, z: -1.5937499, w: 0.31875} + firstChild: 7217 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.8687499, y: 0.90625, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.8687499, y: 0.90625, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 3.5062497, y: 0.26875004, z: -2.2312498, w: 0.31875} + firstChild: 7225 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 3.5062497, y: 0.26875004, z: -1.5937499, w: 0.31875} + firstChild: 7233 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + center: {x: 3.5062497, y: 0.90625, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + center: {x: 3.5062497, y: 0.90625, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.8687499, y: 0.26875004, z: -0.95624995, w: 0.31875} + firstChild: 7241 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.8687499, y: 0.26875004, z: -0.31875, w: 0.31875} + firstChild: 7249 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.8687499, y: 0.90625, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.8687499, y: 0.90625, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 3.5062497, y: 0.26875004, z: -0.95624995, w: 0.31875} + firstChild: 7257 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 3.5062497, y: 0.26875004, z: -0.31875, w: 0.31875} + firstChild: 7265 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + center: {x: 3.5062497, y: 0.90625, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + center: {x: 3.5062497, y: 0.90625, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.26875004, z: -2.2312498, w: 0.31875} + firstChild: 7273 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.26875004, z: -1.5937499, w: 0.31875} + firstChild: 7281 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.90625, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.90625, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.31510878, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.26875004, z: -2.2312498, w: 0.31875} + firstChild: 7289 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.31510878, y: -0.3151088, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.26875004, z: -1.5937499, w: 0.31875} + firstChild: 7297 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.90625, z: -2.2312498, w: 0.31875} + firstChild: 7305 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.90625, z: -1.5937499, w: 0.31875} + firstChild: 7313 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.26875004, z: -0.95624995, w: 0.31875} + firstChild: 7321 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.26875004, z: -0.31875, w: 0.31875} + firstChild: 7329 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.90625, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.90625, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.3151088, y: -0.3151088, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.26875004, z: -0.95624995, w: 0.31875} + firstChild: 7337 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.3151088, y: -0.31510916, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.26875004, z: -0.31875, w: 0.31875} + firstChild: 7345 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.90625, z: -0.95624995, w: 0.31875} + firstChild: 7353 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.90625, z: -0.31875, w: 0.31875} + firstChild: 7361 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 1.5437499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 1.5437499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.1812499, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.1812499, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 1.5437499, z: -2.2312498, w: 0.31875} + firstChild: 7369 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 1.5437499, z: -1.5937499, w: 0.31875} + firstChild: 7377 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.1812499, z: -2.2312498, w: 0.31875} + firstChild: 7385 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.1812499, z: -1.5937499, w: 0.31875} + firstChild: 7393 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 1.5437499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 1.5437499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.1812499, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.1812499, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 1.5437499, z: -0.95624995, w: 0.31875} + firstChild: 7401 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 1.5437499, z: -0.31875, w: 0.31875} + firstChild: 7409 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.1812499, z: -0.95624995, w: 0.31875} + firstChild: 7417 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.1812499, z: -0.31875, w: 0.31875} + firstChild: 7425 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.31875, y: -1.0062499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.31875, y: -1.0062499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.31875, y: -0.36874995, z: 0.31875, w: 0.31875} + firstChild: 7433 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.31875, y: -0.36874995, z: 0.95624995, w: 0.31875} + firstChild: 7441 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.95624995, y: -1.0062499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.95624995, y: -1.0062499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.95624995, y: -0.36874995, z: 0.31875, w: 0.31875} + firstChild: 7449 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.95624995, y: -0.36874995, z: 0.95624995, w: 0.31875} + firstChild: 7457 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.31875, y: -1.0062499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.31875, y: -1.0062499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.31875, y: -0.36874995, z: 1.5937499, w: 0.31875} + firstChild: 7465 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.31875, y: -0.36874995, z: 2.2312498, w: 0.31875} + firstChild: 7473 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.95624995, y: -1.0062499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.95624995, y: -1.0062499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.95624995, y: -0.36874995, z: 1.5937499, w: 0.31875} + firstChild: 7481 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.95624995, y: -0.36874995, z: 2.2312498, w: 0.31875} + firstChild: 7489 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 1.5937499, y: -1.0062499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 1.5937499, y: -1.0062499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 1.5937499, y: -0.36874995, z: 0.31875, w: 0.31875} + firstChild: 7497 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 1.5937499, y: -0.36874995, z: 0.95624995, w: 0.31875} + firstChild: 7505 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.2312498, y: -1.0062499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.2312498, y: -1.0062499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.2312498, y: -0.36874995, z: 0.31875, w: 0.31875} + firstChild: 7513 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.2312498, y: -0.36874995, z: 0.95624995, w: 0.31875} + firstChild: 7521 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 1.5937499, y: -1.0062499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 1.5937499, y: -1.0062499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 1.5937499, y: -0.36874995, z: 1.5937499, w: 0.31875} + firstChild: 7529 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 1.5937499, y: -0.36874995, z: 2.2312498, w: 0.31875} + firstChild: 7537 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.2312498, y: -1.0062499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.2312498, y: -1.0062499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.2312498, y: -0.36874995, z: 1.5937499, w: 0.31875} + firstChild: 7545 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.2312498, y: -0.36874995, z: 2.2312498, w: 0.31875} + firstChild: 7553 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.31875, y: -1.0062499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.31875, y: -1.0062499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.31875, y: -0.36874995, z: 2.8687499, w: 0.31875} + firstChild: 7561 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.31875, y: -0.36874995, z: 3.5062497, w: 0.31875} + firstChild: 7569 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.95624995, y: -1.0062499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.95624995, y: -1.0062499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.95624995, y: -0.36874995, z: 2.8687499, w: 0.31875} + firstChild: 7577 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.95624995, y: -0.36874995, z: 3.5062497, w: 0.31875} + firstChild: 7585 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.31875, y: -1.0062499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.4229817, z: -0.6874999, w: -0.8325089} + distancesB: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.8325091} + center: {x: 0.31875, y: -1.0062499, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.31875, y: -0.36874995, z: 4.1437497, w: 0.31875} + firstChild: 7593 + - distancesA: {x: -0.6874999, y: -0.8325089, z: -0.049999956, w: -0.31510922} + distancesB: {x: -0.6874999, y: -0.83250916, z: -0.049999956, w: -0.31510964} + center: {x: 0.31875, y: -0.36874995, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 0.95624995, y: -1.0062499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.83250904} + distancesB: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.8325097} + center: {x: 0.95624995, y: -1.0062499, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 0.95624995, y: -0.36874995, z: 4.1437497, w: 0.31875} + firstChild: 7601 + - distancesA: {x: -0.6874999, y: -0.8325091, z: -0.049999956, w: -0.31510964} + distancesB: {x: -0.6874999, y: -0.83250976, z: -0.049999956, w: -0.315111} + center: {x: 0.95624995, y: -0.36874995, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 1.5937499, y: -1.0062499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 1.5937499, y: -1.0062499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 1.5937499, y: -0.36874995, z: 2.8687499, w: 0.31875} + firstChild: 7609 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 1.5937499, y: -0.36874995, z: 3.5062497, w: 0.31875} + firstChild: 7617 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.2312498, y: -1.0062499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.2312498, y: -1.0062499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.2312498, y: -0.36874995, z: 2.8687499, w: 0.31875} + firstChild: 7625 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.2312498, y: -0.36874995, z: 3.5062497, w: 0.31875} + firstChild: 7633 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 1.5937499, y: -1.0062499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.83250964} + distancesB: {x: -1.3249999, y: -1.4229817, z: -0.6874999, w: -0.8325105} + center: {x: 1.5937499, y: -1.0062499, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 1.5937499, y: -0.36874995, z: 4.1437497, w: 0.31875} + firstChild: 7641 + - distancesA: {x: -0.6874999, y: -0.8325097, z: -0.049999956, w: -0.315111} + distancesB: {x: -0.6874999, y: -0.83251053, z: -0.049999956, w: -0.3151132} + center: {x: 1.5937499, y: -0.36874995, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.2312498, y: -1.0062499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.4229817, z: -0.6874999, w: -0.8325105} + distancesB: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.8325092} + center: {x: 2.2312498, y: -1.0062499, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.2312498, y: -0.36874995, z: 4.1437497, w: 0.31875} + firstChild: 7649 + - distancesA: {x: -0.6874999, y: -0.83251053, z: -0.049999956, w: -0.3151132} + distancesB: {x: -0.6874999, y: -0.8325093, z: -0.049999956, w: -0.3151098} + center: {x: 2.2312498, y: -0.36874995, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.31875, y: 0.26875004, z: 0.31875, w: 0.31875} + firstChild: 7657 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.31875, y: 0.26875004, z: 0.95624995, w: 0.31875} + firstChild: 7665 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.31875, y: 0.90625, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.31875, y: 0.90625, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.95624995, y: 0.26875004, z: 0.31875, w: 0.31875} + firstChild: 7673 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.95624995, y: 0.26875004, z: 0.95624995, w: 0.31875} + firstChild: 7681 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.95624995, y: 0.90625, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.95624995, y: 0.90625, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.31875, y: 0.26875004, z: 1.5937499, w: 0.31875} + firstChild: 7689 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.31875, y: 0.26875004, z: 2.2312498, w: 0.31875} + firstChild: 7697 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.31875, y: 0.90625, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.31875, y: 0.90625, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.95624995, y: 0.26875004, z: 1.5937499, w: 0.31875} + firstChild: 7705 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.95624995, y: 0.26875004, z: 2.2312498, w: 0.31875} + firstChild: 7713 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.95624995, y: 0.90625, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.95624995, y: 0.90625, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 1.5937499, y: 0.26875004, z: 0.31875, w: 0.31875} + firstChild: 7721 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 1.5937499, y: 0.26875004, z: 0.95624995, w: 0.31875} + firstChild: 7729 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 1.5937499, y: 0.90625, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 1.5937499, y: 0.90625, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.2312498, y: 0.26875004, z: 0.31875, w: 0.31875} + firstChild: 7737 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.2312498, y: 0.26875004, z: 0.95624995, w: 0.31875} + firstChild: 7745 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.2312498, y: 0.90625, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.2312498, y: 0.90625, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 1.5937499, y: 0.26875004, z: 1.5937499, w: 0.31875} + firstChild: 7753 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 1.5937499, y: 0.26875004, z: 2.2312498, w: 0.31875} + firstChild: 7761 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 1.5937499, y: 0.90625, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 1.5937499, y: 0.90625, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.2312498, y: 0.26875004, z: 1.5937499, w: 0.31875} + firstChild: 7769 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.2312498, y: 0.26875004, z: 2.2312498, w: 0.31875} + firstChild: 7777 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.2312498, y: 0.90625, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.2312498, y: 0.90625, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.31875, y: 0.26875004, z: 2.8687499, w: 0.31875} + firstChild: 7785 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.31875, y: 0.26875004, z: 3.5062497, w: 0.31875} + firstChild: 7793 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.31875, y: 0.90625, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + center: {x: 0.31875, y: 0.90625, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.95624995, y: 0.26875004, z: 2.8687499, w: 0.31875} + firstChild: 7801 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 0.95624995, y: 0.26875004, z: 3.5062497, w: 0.31875} + firstChild: 7809 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 0.95624995, y: 0.90625, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + center: {x: 0.95624995, y: 0.90625, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + center: {x: 0.31875, y: 0.26875004, z: 4.1437497, w: 0.31875} + firstChild: 7817 + - distancesA: {x: -0.049999956, y: -0.31510922, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.31510964, z: 0.5375004, w: -0.09999943} + center: {x: 0.31875, y: 0.26875004, z: 4.7812495, w: 0.31875} + firstChild: 7825 + - distancesA: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 0.31875, y: 0.90625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 0.31875, y: 0.90625, z: 4.7812495, w: 0.31875} + firstChild: 7833 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + center: {x: 0.95624995, y: 0.26875004, z: 4.1437497, w: 0.31875} + firstChild: 7841 + - distancesA: {x: -0.049999956, y: -0.31510964, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.315111, z: 0.5375004, w: -0.09999943} + center: {x: 0.95624995, y: 0.26875004, z: 4.7812495, w: 0.31875} + firstChild: 7849 + - distancesA: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 0.95624995, y: 0.90625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 0.95624995, y: 0.90625, z: 4.7812495, w: 0.31875} + firstChild: 7857 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 0.31875, y: 1.5437499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 0.31875, y: 1.5437499, z: 4.7812495, w: 0.31875} + firstChild: 7865 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 0.31875, y: 2.1812499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 0.31875, y: 2.1812499, z: 4.7812495, w: 0.31875} + firstChild: 7873 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 0.95624995, y: 1.5437499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 0.95624995, y: 1.5437499, z: 4.7812495, w: 0.31875} + firstChild: 7881 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 0.95624995, y: 2.1812499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 0.95624995, y: 2.1812499, z: 4.7812495, w: 0.31875} + firstChild: 7889 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 1.5937499, y: 0.26875004, z: 2.8687499, w: 0.31875} + firstChild: 7897 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 1.5937499, y: 0.26875004, z: 3.5062497, w: 0.31875} + firstChild: 7905 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 1.5937499, y: 0.90625, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + center: {x: 1.5937499, y: 0.90625, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.2312498, y: 0.26875004, z: 2.8687499, w: 0.31875} + firstChild: 7913 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.2312498, y: 0.26875004, z: 3.5062497, w: 0.31875} + firstChild: 7921 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.2312498, y: 0.90625, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + center: {x: 2.2312498, y: 0.90625, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + center: {x: 1.5937499, y: 0.26875004, z: 4.1437497, w: 0.31875} + firstChild: 7929 + - distancesA: {x: -0.049999956, y: -0.315111, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.3151132, z: 0.5375004, w: -0.09999943} + center: {x: 1.5937499, y: 0.26875004, z: 4.7812495, w: 0.31875} + firstChild: 7937 + - distancesA: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 1.5937499, y: 0.90625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 1.5937499, y: 0.90625, z: 4.7812495, w: 0.31875} + firstChild: 7945 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + center: {x: 2.2312498, y: 0.26875004, z: 4.1437497, w: 0.31875} + firstChild: 7953 + - distancesA: {x: -0.049999956, y: -0.3151132, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.3151098, z: 0.5375004, w: -0.09999943} + center: {x: 2.2312498, y: 0.26875004, z: 4.7812495, w: 0.31875} + firstChild: 7961 + - distancesA: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 2.2312498, y: 0.90625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 2.2312498, y: 0.90625, z: 4.7812495, w: 0.31875} + firstChild: 7969 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 1.5937499, y: 1.5437499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 1.5937499, y: 1.5437499, z: 4.7812495, w: 0.31875} + firstChild: 7977 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 1.5937499, y: 2.1812499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 1.5937499, y: 2.1812499, z: 4.7812495, w: 0.31875} + firstChild: 7985 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 2.2312498, y: 1.5437499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 2.2312498, y: 1.5437499, z: 4.7812495, w: 0.31875} + firstChild: 7993 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 2.2312498, y: 2.1812499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 2.2312498, y: 2.1812499, z: 4.7812495, w: 0.31875} + firstChild: 8001 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.8687499, y: -1.0062499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.8687499, y: -1.0062499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.8687499, y: -0.36874995, z: 0.31875, w: 0.31875} + firstChild: 8009 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.8687499, y: -0.36874995, z: 0.95624995, w: 0.31875} + firstChild: 8017 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 3.5062497, y: -1.0062499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 3.5062497, y: -1.0062499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 3.5062497, y: -0.36874995, z: 0.31875, w: 0.31875} + firstChild: 8025 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 3.5062497, y: -0.36874995, z: 0.95624995, w: 0.31875} + firstChild: 8033 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.8687499, y: -1.0062499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.8687499, y: -1.0062499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.8687499, y: -0.36874995, z: 1.5937499, w: 0.31875} + firstChild: 8041 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.8687499, y: -0.36874995, z: 2.2312498, w: 0.31875} + firstChild: 8049 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 3.5062497, y: -1.0062499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 3.5062497, y: -1.0062499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 3.5062497, y: -0.36874995, z: 1.5937499, w: 0.31875} + firstChild: 8057 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 3.5062497, y: -0.36874995, z: 2.2312498, w: 0.31875} + firstChild: 8065 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 4.1437497, y: -1.0062499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 4.1437497, y: -1.0062499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 4.1437497, y: -0.36874995, z: 0.31875, w: 0.31875} + firstChild: 8073 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 4.1437497, y: -0.36874995, z: 0.95624995, w: 0.31875} + firstChild: 8081 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.4229816, y: -1.4229817, z: -0.83250904, w: -0.83250904} + center: {x: 4.7812495, y: -1.0062499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.4229817, y: -1.422982, z: -0.83250904, w: -0.83250886} + center: {x: 4.7812495, y: -1.0062499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.83250904, y: -0.83250904, z: -0.31510916, w: -0.31510916} + center: {x: 4.7812495, y: -0.36874995, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.83250904, y: -0.8325089, z: -0.31510916, w: -0.31510916} + center: {x: 4.7812495, y: -0.36874995, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 4.1437497, y: -1.0062499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 4.1437497, y: -1.0062499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 4.1437497, y: -0.36874995, z: 1.5937499, w: 0.31875} + firstChild: 8089 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 4.1437497, y: -0.36874995, z: 2.2312498, w: 0.31875} + firstChild: 8097 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.422982, y: -1.4229825, z: -0.83250886, w: -0.83250904} + center: {x: 4.7812495, y: -1.0062499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.4229825, y: -1.4229819, z: -0.83250904, w: -0.83250886} + center: {x: 4.7812495, y: -1.0062499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.8325089, y: -0.83250904, z: -0.31510916, w: -0.31510916} + center: {x: 4.7812495, y: -0.36874995, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.83250904, y: -0.8325089, z: -0.31510916, w: -0.31510916} + center: {x: 4.7812495, y: -0.36874995, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.8687499, y: -1.0062499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.8687499, y: -1.0062499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.8687499, y: -0.36874995, z: 2.8687499, w: 0.31875} + firstChild: 8105 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.8687499, y: -0.36874995, z: 3.5062497, w: 0.31875} + firstChild: 8113 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 3.5062497, y: -1.0062499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 3.5062497, y: -1.0062499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 3.5062497, y: -0.36874995, z: 2.8687499, w: 0.31875} + firstChild: 8121 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 3.5062497, y: -0.36874995, z: 3.5062497, w: 0.31875} + firstChild: 8129 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 2.8687499, y: -1.0062499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.8325092} + distancesB: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.83250904} + center: {x: 2.8687499, y: -1.0062499, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 2.8687499, y: -0.36874995, z: 4.1437497, w: 0.31875} + firstChild: 8137 + - distancesA: {x: -0.6874999, y: -0.8325093, z: -0.049999956, w: -0.31511} + distancesB: {x: -0.6874999, y: -0.83250904, z: -0.049999956, w: -0.31510964} + center: {x: 2.8687499, y: -0.36874995, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 3.5062497, y: -1.0062499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.83250904} + distancesB: {x: -1.3249999, y: -1.4229817, z: -0.6874999, w: -0.83250886} + center: {x: 3.5062497, y: -1.0062499, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 3.5062497, y: -0.36874995, z: 4.1437497, w: 0.31875} + firstChild: 8145 + - distancesA: {x: -0.6874999, y: -0.83250904, z: -0.049999956, w: -0.31510964} + distancesB: {x: -0.6874999, y: -0.8325089, z: -0.049999956, w: -0.31510893} + center: {x: 3.5062497, y: -0.36874995, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 4.1437497, y: -1.0062499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 4.1437497, y: -1.0062499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 4.1437497, y: -0.36874995, z: 2.8687499, w: 0.31875} + firstChild: 8153 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 4.1437497, y: -0.36874995, z: 3.5062497, w: 0.31875} + firstChild: 8161 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.4229816, y: -1.4229816, z: -0.83250886, w: -0.83250886} + center: {x: 4.7812495, y: -1.0062499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.4229816, y: -1.4229816, z: -0.83250886, w: -0.83250904} + center: {x: 4.7812495, y: -1.0062499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.8325089, y: -0.8325089, z: -0.31510916, w: -0.31510916} + center: {x: 4.7812495, y: -0.36874995, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.8325089, y: -0.83250904, z: -0.31510916, w: -0.31510916} + center: {x: 4.7812495, y: -0.36874995, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + center: {x: 4.1437497, y: -1.0062499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.4229817, z: -0.6874999, w: -0.83250886} + distancesB: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.83250904} + center: {x: 4.1437497, y: -1.0062499, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + center: {x: 4.1437497, y: -0.36874995, z: 4.1437497, w: 0.31875} + firstChild: 8169 + - distancesA: {x: -0.6874999, y: -0.8325089, z: -0.049999956, w: -0.31510893} + distancesB: {x: -0.6874999, y: -0.83250904, z: -0.049999956, w: -0.31510916} + center: {x: 4.1437497, y: -0.36874995, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.3249999, z: -0.6874999, w: -0.6874999} + distancesB: {x: -1.4229816, y: -1.4229816, z: -0.83250904, w: -0.83250886} + center: {x: 4.7812495, y: -1.0062499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -1.3249999, y: -1.4229816, z: -0.6874999, w: -0.83250904} + distancesB: {x: -1.4229816, y: -1.5167226, z: -0.83250886, w: -0.9615866} + center: {x: 4.7812495, y: -1.0062499, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.83250904, y: -0.8325089, z: -0.31510916, w: -0.31510916} + center: {x: 4.7812495, y: -0.36874995, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.83250904, z: -0.049999956, w: -0.31510916} + distancesB: {x: -0.8325089, y: -0.96158665, z: -0.31510916, w: -0.51686233} + center: {x: 4.7812495, y: -0.36874995, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.8687499, y: 0.26875004, z: 0.31875, w: 0.31875} + firstChild: 8177 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.8687499, y: 0.26875004, z: 0.95624995, w: 0.31875} + firstChild: 8185 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.8687499, y: 0.90625, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.8687499, y: 0.90625, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 3.5062497, y: 0.26875004, z: 0.31875, w: 0.31875} + firstChild: 8193 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 3.5062497, y: 0.26875004, z: 0.95624995, w: 0.31875} + firstChild: 8201 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + center: {x: 3.5062497, y: 0.90625, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + center: {x: 3.5062497, y: 0.90625, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.8687499, y: 0.26875004, z: 1.5937499, w: 0.31875} + firstChild: 8209 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.8687499, y: 0.26875004, z: 2.2312498, w: 0.31875} + firstChild: 8217 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.8687499, y: 0.90625, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.8687499, y: 0.90625, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 3.5062497, y: 0.26875004, z: 1.5937499, w: 0.31875} + firstChild: 8225 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 3.5062497, y: 0.26875004, z: 2.2312498, w: 0.31875} + firstChild: 8233 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + center: {x: 3.5062497, y: 0.90625, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + center: {x: 3.5062497, y: 0.90625, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.26875004, z: 0.31875, w: 0.31875} + firstChild: 8241 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.26875004, z: 0.95624995, w: 0.31875} + firstChild: 8249 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.90625, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.90625, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.31510916, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.26875004, z: 0.31875, w: 0.31875} + firstChild: 8257 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.31510916, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.26875004, z: 0.95624995, w: 0.31875} + firstChild: 8265 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.90625, z: 0.31875, w: 0.31875} + firstChild: 8273 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.90625, z: 0.95624995, w: 0.31875} + firstChild: 8281 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.26875004, z: 1.5937499, w: 0.31875} + firstChild: 8289 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.26875004, z: 2.2312498, w: 0.31875} + firstChild: 8297 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.90625, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.90625, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.31510916, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.26875004, z: 1.5937499, w: 0.31875} + firstChild: 8305 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.31510916, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.26875004, z: 2.2312498, w: 0.31875} + firstChild: 8313 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.90625, z: 1.5937499, w: 0.31875} + firstChild: 8321 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.90625, z: 2.2312498, w: 0.31875} + firstChild: 8329 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 1.5437499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 1.5437499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.1812499, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.1812499, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 1.5437499, z: 0.31875, w: 0.31875} + firstChild: 8337 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 1.5437499, z: 0.95624995, w: 0.31875} + firstChild: 8345 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.1812499, z: 0.31875, w: 0.31875} + firstChild: 8353 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.1812499, z: 0.95624995, w: 0.31875} + firstChild: 8361 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 1.5437499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 1.5437499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.1812499, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.1812499, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 1.5437499, z: 1.5937499, w: 0.31875} + firstChild: 8369 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 1.5437499, z: 2.2312498, w: 0.31875} + firstChild: 8377 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.1812499, z: 1.5937499, w: 0.31875} + firstChild: 8385 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.1812499, z: 2.2312498, w: 0.31875} + firstChild: 8393 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.8687499, y: 0.26875004, z: 2.8687499, w: 0.31875} + firstChild: 8401 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 2.8687499, y: 0.26875004, z: 3.5062497, w: 0.31875} + firstChild: 8409 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + center: {x: 2.8687499, y: 0.90625, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + center: {x: 2.8687499, y: 0.90625, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 3.5062497, y: 0.26875004, z: 2.8687499, w: 0.31875} + firstChild: 8417 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + center: {x: 3.5062497, y: 0.26875004, z: 3.5062497, w: 0.31875} + firstChild: 8425 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.225} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + center: {x: 3.5062497, y: 0.90625, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.225, w: 1.1750003} + distancesB: {x: 0.5875, y: 0.5875, z: 1.1750003, w: 1.1750003} + center: {x: 3.5062497, y: 0.90625, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + center: {x: 2.8687499, y: 0.26875004, z: 4.1437497, w: 0.31875} + firstChild: 8433 + - distancesA: {x: -0.049999956, y: -0.31511, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.31510964, z: 0.5375004, w: -0.09999943} + center: {x: 2.8687499, y: 0.26875004, z: 4.7812495, w: 0.31875} + firstChild: 8441 + - distancesA: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 2.8687499, y: 0.90625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 2.8687499, y: 0.90625, z: 4.7812495, w: 0.31875} + firstChild: 8449 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + center: {x: 3.5062497, y: 0.26875004, z: 4.1437497, w: 0.31875} + firstChild: 8457 + - distancesA: {x: -0.049999956, y: -0.31510964, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.31510893, z: 0.5375004, w: -0.09999943} + center: {x: 3.5062497, y: 0.26875004, z: 4.7812495, w: 0.31875} + firstChild: 8465 + - distancesA: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 3.5062497, y: 0.90625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 3.5062497, y: 0.90625, z: 4.7812495, w: 0.31875} + firstChild: 8473 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 2.8687499, y: 1.5437499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 2.8687499, y: 1.5437499, z: 4.7812495, w: 0.31875} + firstChild: 8481 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 2.8687499, y: 2.1812499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 2.8687499, y: 2.1812499, z: 4.7812495, w: 0.31875} + firstChild: 8489 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 3.5062497, y: 1.5437499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 3.5062497, y: 1.5437499, z: 4.7812495, w: 0.31875} + firstChild: 8497 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 3.5062497, y: 2.1812499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 3.5062497, y: 2.1812499, z: 4.7812495, w: 0.31875} + firstChild: 8505 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.26875004, z: 2.8687499, w: 0.31875} + firstChild: 8513 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5875} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.26875004, z: 3.5062497, w: 0.31875} + firstChild: 8521 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.90625, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5875, y: 0.5875, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.90625, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.31510916, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.26875004, z: 2.8687499, w: 0.31875} + firstChild: 8529 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.31510916, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.26875004, z: 3.5062497, w: 0.31875} + firstChild: 8537 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.90625, z: 2.8687499, w: 0.31875} + firstChild: 8545 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.90625, z: 3.5062497, w: 0.31875} + firstChild: 8553 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5875, w: 0.5375004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.26875004, z: 4.1437497, w: 0.31875} + firstChild: 8561 + - distancesA: {x: -0.049999956, y: -0.31510893, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.049999956, y: -0.31510916, z: 0.5375004, w: -0.09999943} + center: {x: 4.1437497, y: 0.26875004, z: 4.7812495, w: 0.31875} + firstChild: 8569 + - distancesA: {x: 0.5875, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 0.90625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 4.1437497, y: 0.90625, z: 4.7812495, w: 0.31875} + firstChild: 8577 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.31510916, y: -0.31510916, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.26875004, z: 4.1437497, w: 0.31875} + firstChild: 8585 + - distancesA: {x: -0.049999956, y: -0.31510916, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.31510916, y: -0.51686233, z: -0.09999943, w: -0.34850657} + center: {x: 4.7812495, y: 0.26875004, z: 4.7812495, w: 0.31875} + firstChild: 8593 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 0.90625, z: 4.1437497, w: 0.31875} + firstChild: 8601 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.09999943, y: -0.34850657, z: -0.09999943, w: -0.34850657} + center: {x: 4.7812495, y: 0.90625, z: 4.7812495, w: 0.31875} + firstChild: 8609 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 1.5437499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 1.5437499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.1812499, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.1812499, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 1.5437499, z: 2.8687499, w: 0.31875} + firstChild: 8617 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 1.5437499, z: 3.5062497, w: 0.31875} + firstChild: 8625 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.1812499, z: 2.8687499, w: 0.31875} + firstChild: 8633 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.1812499, z: 3.5062497, w: 0.31875} + firstChild: 8641 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 1.5437499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 4.1437497, y: 1.5437499, z: 4.7812495, w: 0.31875} + firstChild: 8649 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.1812499, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 4.1437497, y: 2.1812499, z: 4.7812495, w: 0.31875} + firstChild: 8657 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 1.5437499, z: 4.1437497, w: 0.31875} + firstChild: 8665 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.09999943, y: -0.34850657, z: -0.09999943, w: -0.34850657} + center: {x: 4.7812495, y: 1.5437499, z: 4.7812495, w: 0.31875} + firstChild: 8673 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.1812499, z: 4.1437497, w: 0.31875} + firstChild: 8681 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.09999943, y: -0.34850657, z: -0.09999943, w: -0.34850657} + center: {x: 4.7812495, y: 2.1812499, z: 4.7812495, w: 0.31875} + firstChild: 8689 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 0.31875, y: 2.8187501, z: -4.7812495, w: 0.31875} + firstChild: 8697 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 0.31875, y: 2.8187501, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 0.31875, y: 3.45625, z: -4.7812495, w: 0.31875} + firstChild: 8705 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 0.31875, y: 3.45625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 0.95624995, y: 2.8187501, z: -4.7812495, w: 0.31875} + firstChild: 8713 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 0.95624995, y: 2.8187501, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 0.95624995, y: 3.45625, z: -4.7812495, w: 0.31875} + firstChild: 8721 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 0.95624995, y: 3.45625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 0.31875, y: 4.09375, z: -4.7812495, w: 0.31875} + firstChild: 8729 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 0.31875, y: 4.09375, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + center: {x: 0.31875, y: 4.73125, z: -4.7812495, w: 0.31875} + firstChild: 8737 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + center: {x: 0.31875, y: 4.73125, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 0.95624995, y: 4.09375, z: -4.7812495, w: 0.31875} + firstChild: 8745 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 0.95624995, y: 4.09375, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + center: {x: 0.95624995, y: 4.73125, z: -4.7812495, w: 0.31875} + firstChild: 8753 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + center: {x: 0.95624995, y: 4.73125, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 1.5937499, y: 2.8187501, z: -4.7812495, w: 0.31875} + firstChild: 8761 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 1.5937499, y: 2.8187501, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 1.5937499, y: 3.45625, z: -4.7812495, w: 0.31875} + firstChild: 8769 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 1.5937499, y: 3.45625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 2.2312498, y: 2.8187501, z: -4.7812495, w: 0.31875} + firstChild: 8777 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 2.2312498, y: 2.8187501, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 2.2312498, y: 3.45625, z: -4.7812495, w: 0.31875} + firstChild: 8785 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 2.2312498, y: 3.45625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 1.5937499, y: 4.09375, z: -4.7812495, w: 0.31875} + firstChild: 8793 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 1.5937499, y: 4.09375, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + center: {x: 1.5937499, y: 4.73125, z: -4.7812495, w: 0.31875} + firstChild: 8801 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + center: {x: 1.5937499, y: 4.73125, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 2.2312498, y: 4.09375, z: -4.7812495, w: 0.31875} + firstChild: 8809 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 2.2312498, y: 4.09375, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + center: {x: 2.2312498, y: 4.73125, z: -4.7812495, w: 0.31875} + firstChild: 8817 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + center: {x: 2.2312498, y: 4.73125, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + distancesB: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + center: {x: 0.31875, y: 5.3687506, z: -4.7812495, w: 0.31875} + firstChild: 8825 + - distancesA: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + distancesB: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + center: {x: 0.31875, y: 5.3687506, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + distancesB: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + center: {x: 0.31875, y: 6.0062504, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + distancesB: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + center: {x: 0.31875, y: 6.0062504, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + distancesB: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + center: {x: 0.95624995, y: 5.3687506, z: -4.7812495, w: 0.31875} + firstChild: 8833 + - distancesA: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + distancesB: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + center: {x: 0.95624995, y: 5.3687506, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + distancesB: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + center: {x: 0.95624995, y: 6.0062504, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + distancesB: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + center: {x: 0.95624995, y: 6.0062504, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + distancesB: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + center: {x: 1.5937499, y: 5.3687506, z: -4.7812495, w: 0.31875} + firstChild: 8841 + - distancesA: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + distancesB: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + center: {x: 1.5937499, y: 5.3687506, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + distancesB: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + center: {x: 1.5937499, y: 6.0062504, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + distancesB: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + center: {x: 1.5937499, y: 6.0062504, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + distancesB: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + center: {x: 2.2312498, y: 5.3687506, z: -4.7812495, w: 0.31875} + firstChild: 8849 + - distancesA: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + distancesB: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + center: {x: 2.2312498, y: 5.3687506, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + distancesB: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + center: {x: 2.2312498, y: 6.0062504, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + distancesB: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + center: {x: 2.2312498, y: 6.0062504, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 2.8687499, y: 2.8187501, z: -4.7812495, w: 0.31875} + firstChild: 8857 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 2.8687499, y: 2.8187501, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 2.8687499, y: 3.45625, z: -4.7812495, w: 0.31875} + firstChild: 8865 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 2.8687499, y: 3.45625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 3.5062497, y: 2.8187501, z: -4.7812495, w: 0.31875} + firstChild: 8873 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 3.5062497, y: 2.8187501, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 3.5062497, y: 3.45625, z: -4.7812495, w: 0.31875} + firstChild: 8881 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 3.5062497, y: 3.45625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 2.8687499, y: 4.09375, z: -4.7812495, w: 0.31875} + firstChild: 8889 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 2.8687499, y: 4.09375, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + center: {x: 2.8687499, y: 4.73125, z: -4.7812495, w: 0.31875} + firstChild: 8897 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + center: {x: 2.8687499, y: 4.73125, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 3.5062497, y: 4.09375, z: -4.7812495, w: 0.31875} + firstChild: 8905 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + center: {x: 3.5062497, y: 4.09375, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + center: {x: 3.5062497, y: 4.73125, z: -4.7812495, w: 0.31875} + firstChild: 8913 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + distancesB: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + center: {x: 3.5062497, y: 4.73125, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 4.1437497, y: 2.8187501, z: -4.7812495, w: 0.31875} + firstChild: 8921 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.8187501, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 4.1437497, y: 3.45625, z: -4.7812495, w: 0.31875} + firstChild: 8929 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 3.45625, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.34850657, y: -0.09999943, z: -0.34850657, w: -0.09999943} + center: {x: 4.7812495, y: 2.8187501, z: -4.7812495, w: 0.31875} + firstChild: 8937 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.8187501, z: -4.1437497, w: 0.31875} + firstChild: 8945 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.34850657, y: -0.09999943, z: -0.34850657, w: -0.09999943} + center: {x: 4.7812495, y: 3.45625, z: -4.7812495, w: 0.31875} + firstChild: 8953 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 3.45625, z: -4.1437497, w: 0.31875} + firstChild: 8961 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.8187501, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.8187501, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 3.45625, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 3.45625, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.8187501, z: -3.5062497, w: 0.31875} + firstChild: 8969 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.8187501, z: -2.8687499, w: 0.31875} + firstChild: 8977 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 3.45625, z: -3.5062497, w: 0.31875} + firstChild: 8985 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 3.45625, z: -2.8687499, w: 0.31875} + firstChild: 8993 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + center: {x: 4.1437497, y: 4.09375, z: -4.7812495, w: 0.31875} + firstChild: 9001 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5375004, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 4.09375, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + distancesB: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + center: {x: 4.1437497, y: 4.73125, z: -4.7812495, w: 0.31875} + firstChild: 9009 + - distancesA: {x: 0.5375004, y: 1.1750002, z: 0.5398209, w: 1.1760635} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: 4.1437497, y: 4.73125, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.09999943, w: 0.5375004} + distancesB: {x: -0.34850657, y: -0.09999943, z: -0.34850657, w: -0.09999943} + center: {x: 4.7812495, y: 4.09375, z: -4.7812495, w: 0.31875} + firstChild: 9017 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 4.09375, z: -4.1437497, w: 0.31875} + firstChild: 9025 + - distancesA: {x: -0.09999943, y: 0.5375004, z: -0.11180276, w: 0.5398209} + distancesB: {x: -0.34850657, y: -0.09999943, z: -0.35207498, w: -0.11180276} + center: {x: 4.7812495, y: 4.73125, z: -4.7812495, w: 0.31875} + firstChild: 9033 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.7812495, y: 4.73125, z: -4.1437497, w: 0.31875} + firstChild: 9041 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 4.09375, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 4.09375, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: 4.1437497, y: 4.73125, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: 4.1437497, y: 4.73125, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 4.09375, z: -3.5062497, w: 0.31875} + firstChild: 9049 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 4.09375, z: -2.8687499, w: 0.31875} + firstChild: 9057 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.7812495, y: 4.73125, z: -3.5062497, w: 0.31875} + firstChild: 9065 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.7812495, y: 4.73125, z: -2.8687499, w: 0.31875} + firstChild: 9073 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.8187501, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.8187501, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 3.45625, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 3.45625, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.8187501, z: -2.2312498, w: 0.31875} + firstChild: 9081 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.8187501, z: -1.5937499, w: 0.31875} + firstChild: 9089 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 3.45625, z: -2.2312498, w: 0.31875} + firstChild: 9097 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 3.45625, z: -1.5937499, w: 0.31875} + firstChild: 9105 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.8187501, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.8187501, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 3.45625, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 3.45625, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.8187501, z: -0.95624995, w: 0.31875} + firstChild: 9113 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.8187501, z: -0.31875, w: 0.31875} + firstChild: 9121 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 3.45625, z: -0.95624995, w: 0.31875} + firstChild: 9129 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 3.45625, z: -0.31875, w: 0.31875} + firstChild: 9137 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 4.09375, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 4.09375, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: 4.1437497, y: 4.73125, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: 4.1437497, y: 4.73125, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 4.09375, z: -2.2312498, w: 0.31875} + firstChild: 9145 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 4.09375, z: -1.5937499, w: 0.31875} + firstChild: 9153 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.7812495, y: 4.73125, z: -2.2312498, w: 0.31875} + firstChild: 9161 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.7812495, y: 4.73125, z: -1.5937499, w: 0.31875} + firstChild: 9169 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 4.09375, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 4.09375, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: 4.1437497, y: 4.73125, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: 4.1437497, y: 4.73125, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 4.09375, z: -0.95624995, w: 0.31875} + firstChild: 9177 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 4.09375, z: -0.31875, w: 0.31875} + firstChild: 9185 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.7812495, y: 4.73125, z: -0.95624995, w: 0.31875} + firstChild: 9193 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.7812495, y: 4.73125, z: -0.31875, w: 0.31875} + firstChild: 9201 + - distancesA: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + distancesB: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + center: {x: 2.8687499, y: 5.3687506, z: -4.7812495, w: 0.31875} + firstChild: 9209 + - distancesA: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + distancesB: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + center: {x: 2.8687499, y: 5.3687506, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + distancesB: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + center: {x: 2.8687499, y: 6.0062504, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + distancesB: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + center: {x: 2.8687499, y: 6.0062504, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + distancesB: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + center: {x: 3.5062497, y: 5.3687506, z: -4.7812495, w: 0.31875} + firstChild: 9217 + - distancesA: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + distancesB: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + center: {x: 3.5062497, y: 5.3687506, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + distancesB: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + center: {x: 3.5062497, y: 6.0062504, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + distancesB: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + center: {x: 3.5062497, y: 6.0062504, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + distancesB: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + center: {x: 4.1437497, y: 5.3687506, z: -4.7812495, w: 0.31875} + firstChild: 9225 + - distancesA: {x: 0.539821, y: 1.1760635, z: 0.8726761, w: 1.3613532} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: 4.1437497, y: 5.3687506, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + distancesB: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + center: {x: 4.1437497, y: 6.0062504, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 1.3613532, z: 1.4298714, w: 1.7709464} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: 4.1437497, y: 6.0062504, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.11180318, y: 0.539821, z: -0.69473505, w: 0.8726761} + distancesB: {x: -0.3520751, y: -0.11180318, z: -0.77078766, w: -0.69473505} + center: {x: 4.7812495, y: 5.3687506, z: -4.7812495, w: 0.31875} + firstChild: 9233 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + center: {x: 4.7812495, y: 5.3687506, z: -4.1437497, w: 0.31875} + firstChild: 9241 + - distancesA: {x: -0.69473505, y: 0.8726761, z: -1.3287684, w: 1.4298714} + distancesB: {x: -0.77078766, y: -0.69473505, z: -1.3700666, w: -1.3287684} + center: {x: 4.7812495, y: 6.0062504, z: -4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + center: {x: 4.7812495, y: 6.0062504, z: -4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: 4.1437497, y: 5.3687506, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: 4.1437497, y: 5.3687506, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: 4.1437497, y: 6.0062504, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: 4.1437497, y: 6.0062504, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + center: {x: 4.7812495, y: 5.3687506, z: -3.5062497, w: 0.31875} + firstChild: 9249 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + center: {x: 4.7812495, y: 5.3687506, z: -2.8687499, w: 0.31875} + firstChild: 9257 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + center: {x: 4.7812495, y: 6.0062504, z: -3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + center: {x: 4.7812495, y: 6.0062504, z: -2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: 4.1437497, y: 5.3687506, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: 4.1437497, y: 5.3687506, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: 4.1437497, y: 6.0062504, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: 4.1437497, y: 6.0062504, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + center: {x: 4.7812495, y: 5.3687506, z: -2.2312498, w: 0.31875} + firstChild: 9265 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + center: {x: 4.7812495, y: 5.3687506, z: -1.5937499, w: 0.31875} + firstChild: 9273 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + center: {x: 4.7812495, y: 6.0062504, z: -2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + center: {x: 4.7812495, y: 6.0062504, z: -1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: 4.1437497, y: 5.3687506, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: 4.1437497, y: 5.3687506, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: 4.1437497, y: 6.0062504, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: 4.1437497, y: 6.0062504, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + center: {x: 4.7812495, y: 5.3687506, z: -0.95624995, w: 0.31875} + firstChild: 9281 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + center: {x: 4.7812495, y: 5.3687506, z: -0.31875, w: 0.31875} + firstChild: 9289 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + center: {x: 4.7812495, y: 6.0062504, z: -0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + center: {x: 4.7812495, y: 6.0062504, z: -0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 0.31875, y: 2.8187501, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 0.31875, y: 2.8187501, z: 4.7812495, w: 0.31875} + firstChild: 9297 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 0.31875, y: 3.45625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 0.31875, y: 3.45625, z: 4.7812495, w: 0.31875} + firstChild: 9305 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 0.95624995, y: 2.8187501, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 0.95624995, y: 2.8187501, z: 4.7812495, w: 0.31875} + firstChild: 9313 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 0.95624995, y: 3.45625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 0.95624995, y: 3.45625, z: 4.7812495, w: 0.31875} + firstChild: 9321 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 0.31875, y: 4.09375, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 0.31875, y: 4.09375, z: 4.7812495, w: 0.31875} + firstChild: 9329 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + center: {x: 0.31875, y: 4.73125, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + center: {x: 0.31875, y: 4.73125, z: 4.7812495, w: 0.31875} + firstChild: 9337 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 0.95624995, y: 4.09375, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 0.95624995, y: 4.09375, z: 4.7812495, w: 0.31875} + firstChild: 9345 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + center: {x: 0.95624995, y: 4.73125, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + center: {x: 0.95624995, y: 4.73125, z: 4.7812495, w: 0.31875} + firstChild: 9353 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 1.5937499, y: 2.8187501, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 1.5937499, y: 2.8187501, z: 4.7812495, w: 0.31875} + firstChild: 9361 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 1.5937499, y: 3.45625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 1.5937499, y: 3.45625, z: 4.7812495, w: 0.31875} + firstChild: 9369 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 2.2312498, y: 2.8187501, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 2.2312498, y: 2.8187501, z: 4.7812495, w: 0.31875} + firstChild: 9377 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 2.2312498, y: 3.45625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 2.2312498, y: 3.45625, z: 4.7812495, w: 0.31875} + firstChild: 9385 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 1.5937499, y: 4.09375, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 1.5937499, y: 4.09375, z: 4.7812495, w: 0.31875} + firstChild: 9393 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + center: {x: 1.5937499, y: 4.73125, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + center: {x: 1.5937499, y: 4.73125, z: 4.7812495, w: 0.31875} + firstChild: 9401 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 2.2312498, y: 4.09375, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 2.2312498, y: 4.09375, z: 4.7812495, w: 0.31875} + firstChild: 9409 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + center: {x: 2.2312498, y: 4.73125, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + center: {x: 2.2312498, y: 4.73125, z: 4.7812495, w: 0.31875} + firstChild: 9417 + - distancesA: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + distancesB: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + center: {x: 0.31875, y: 5.3687506, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + distancesB: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + center: {x: 0.31875, y: 5.3687506, z: 4.7812495, w: 0.31875} + firstChild: 9425 + - distancesA: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + distancesB: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + center: {x: 0.31875, y: 6.0062504, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + distancesB: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + center: {x: 0.31875, y: 6.0062504, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + distancesB: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + center: {x: 0.95624995, y: 5.3687506, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + distancesB: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + center: {x: 0.95624995, y: 5.3687506, z: 4.7812495, w: 0.31875} + firstChild: 9433 + - distancesA: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + distancesB: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + center: {x: 0.95624995, y: 6.0062504, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + distancesB: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + center: {x: 0.95624995, y: 6.0062504, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + distancesB: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + center: {x: 1.5937499, y: 5.3687506, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + distancesB: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + center: {x: 1.5937499, y: 5.3687506, z: 4.7812495, w: 0.31875} + firstChild: 9441 + - distancesA: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + distancesB: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + center: {x: 1.5937499, y: 6.0062504, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + distancesB: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + center: {x: 1.5937499, y: 6.0062504, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + distancesB: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + center: {x: 2.2312498, y: 5.3687506, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + distancesB: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + center: {x: 2.2312498, y: 5.3687506, z: 4.7812495, w: 0.31875} + firstChild: 9449 + - distancesA: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + distancesB: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + center: {x: 2.2312498, y: 6.0062504, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + distancesB: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + center: {x: 2.2312498, y: 6.0062504, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.8187501, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.8187501, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 3.45625, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 3.45625, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.8187501, z: 0.31875, w: 0.31875} + firstChild: 9457 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.8187501, z: 0.95624995, w: 0.31875} + firstChild: 9465 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 3.45625, z: 0.31875, w: 0.31875} + firstChild: 9473 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 3.45625, z: 0.95624995, w: 0.31875} + firstChild: 9481 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.8187501, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.8187501, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 3.45625, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 3.45625, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.8187501, z: 1.5937499, w: 0.31875} + firstChild: 9489 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.8187501, z: 2.2312498, w: 0.31875} + firstChild: 9497 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 3.45625, z: 1.5937499, w: 0.31875} + firstChild: 9505 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 3.45625, z: 2.2312498, w: 0.31875} + firstChild: 9513 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 4.09375, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 4.09375, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: 4.1437497, y: 4.73125, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: 4.1437497, y: 4.73125, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 4.09375, z: 0.31875, w: 0.31875} + firstChild: 9521 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 4.09375, z: 0.95624995, w: 0.31875} + firstChild: 9529 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.7812495, y: 4.73125, z: 0.31875, w: 0.31875} + firstChild: 9537 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.7812495, y: 4.73125, z: 0.95624995, w: 0.31875} + firstChild: 9545 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 4.09375, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 4.09375, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: 4.1437497, y: 4.73125, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: 4.1437497, y: 4.73125, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 4.09375, z: 1.5937499, w: 0.31875} + firstChild: 9553 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 4.09375, z: 2.2312498, w: 0.31875} + firstChild: 9561 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.7812495, y: 4.73125, z: 1.5937499, w: 0.31875} + firstChild: 9569 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.7812495, y: 4.73125, z: 2.2312498, w: 0.31875} + firstChild: 9577 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 2.8687499, y: 2.8187501, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 2.8687499, y: 2.8187501, z: 4.7812495, w: 0.31875} + firstChild: 9585 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 2.8687499, y: 3.45625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 2.8687499, y: 3.45625, z: 4.7812495, w: 0.31875} + firstChild: 9593 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 3.5062497, y: 2.8187501, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 3.5062497, y: 2.8187501, z: 4.7812495, w: 0.31875} + firstChild: 9601 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 3.5062497, y: 3.45625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 3.5062497, y: 3.45625, z: 4.7812495, w: 0.31875} + firstChild: 9609 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 2.8687499, y: 4.09375, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 2.8687499, y: 4.09375, z: 4.7812495, w: 0.31875} + firstChild: 9617 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + center: {x: 2.8687499, y: 4.73125, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + center: {x: 2.8687499, y: 4.73125, z: 4.7812495, w: 0.31875} + firstChild: 9625 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + center: {x: 3.5062497, y: 4.09375, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 3.5062497, y: 4.09375, z: 4.7812495, w: 0.31875} + firstChild: 9633 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + distancesB: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + center: {x: 3.5062497, y: 4.73125, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + center: {x: 3.5062497, y: 4.73125, z: 4.7812495, w: 0.31875} + firstChild: 9641 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.8187501, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.8187501, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 3.45625, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 3.45625, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.8187501, z: 2.8687499, w: 0.31875} + firstChild: 9649 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.8187501, z: 3.5062497, w: 0.31875} + firstChild: 9657 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 3.45625, z: 2.8687499, w: 0.31875} + firstChild: 9665 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 3.45625, z: 3.5062497, w: 0.31875} + firstChild: 9673 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 2.8187501, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 4.1437497, y: 2.8187501, z: 4.7812495, w: 0.31875} + firstChild: 9681 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 3.45625, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 4.1437497, y: 3.45625, z: 4.7812495, w: 0.31875} + firstChild: 9689 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 2.8187501, z: 4.1437497, w: 0.31875} + firstChild: 9697 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.09999943, y: -0.34850657, z: -0.09999943, w: -0.34850657} + center: {x: 4.7812495, y: 2.8187501, z: 4.7812495, w: 0.31875} + firstChild: 9705 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 3.45625, z: 4.1437497, w: 0.31875} + firstChild: 9713 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.09999943, y: -0.34850657, z: -0.09999943, w: -0.34850657} + center: {x: 4.7812495, y: 3.45625, z: 4.7812495, w: 0.31875} + firstChild: 9721 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 4.09375, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1750002, w: 1.1750002} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 4.09375, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: 4.1437497, y: 4.73125, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1750002, y: 1.1750002, z: 1.1760635, w: 1.1760635} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: 4.1437497, y: 4.73125, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 4.09375, z: 2.8687499, w: 0.31875} + firstChild: 9729 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 4.09375, z: 3.5062497, w: 0.31875} + firstChild: 9737 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.7812495, y: 4.73125, z: 2.8687499, w: 0.31875} + firstChild: 9745 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.7812495, y: 4.73125, z: 3.5062497, w: 0.31875} + firstChild: 9753 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1750002, w: 0.5375004} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + center: {x: 4.1437497, y: 4.09375, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + center: {x: 4.1437497, y: 4.09375, z: 4.7812495, w: 0.31875} + firstChild: 9761 + - distancesA: {x: 1.1750002, y: 0.5375004, z: 1.1760635, w: 0.5398209} + distancesB: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + center: {x: 4.1437497, y: 4.73125, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + distancesB: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + center: {x: 4.1437497, y: 4.73125, z: 4.7812495, w: 0.31875} + firstChild: 9769 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5375004, w: 0.5375004} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.09999943, w: -0.09999943} + center: {x: 4.7812495, y: 4.09375, z: 4.1437497, w: 0.31875} + firstChild: 9777 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5375004, w: -0.09999943} + distancesB: {x: -0.09999943, y: -0.34850657, z: -0.09999943, w: -0.34850657} + center: {x: 4.7812495, y: 4.09375, z: 4.7812495, w: 0.31875} + firstChild: 9785 + - distancesA: {x: 0.5375004, y: 0.5375004, z: 0.5398209, w: 0.5398209} + distancesB: {x: -0.09999943, y: -0.09999943, z: -0.11180276, w: -0.11180276} + center: {x: 4.7812495, y: 4.73125, z: 4.1437497, w: 0.31875} + firstChild: 9793 + - distancesA: {x: 0.5375004, y: -0.09999943, z: 0.5398209, w: -0.11180276} + distancesB: {x: -0.09999943, y: -0.34850657, z: -0.11180276, w: -0.35207498} + center: {x: 4.7812495, y: 4.73125, z: 4.7812495, w: 0.31875} + firstChild: 9801 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: 4.1437497, y: 5.3687506, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: 4.1437497, y: 5.3687506, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: 4.1437497, y: 6.0062504, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: 4.1437497, y: 6.0062504, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + center: {x: 4.7812495, y: 5.3687506, z: 0.31875, w: 0.31875} + firstChild: 9809 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + center: {x: 4.7812495, y: 5.3687506, z: 0.95624995, w: 0.31875} + firstChild: 9817 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + center: {x: 4.7812495, y: 6.0062504, z: 0.31875, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + center: {x: 4.7812495, y: 6.0062504, z: 0.95624995, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: 4.1437497, y: 5.3687506, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: 4.1437497, y: 5.3687506, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: 4.1437497, y: 6.0062504, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: 4.1437497, y: 6.0062504, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + center: {x: 4.7812495, y: 5.3687506, z: 1.5937499, w: 0.31875} + firstChild: 9825 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + center: {x: 4.7812495, y: 5.3687506, z: 2.2312498, w: 0.31875} + firstChild: 9833 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + center: {x: 4.7812495, y: 6.0062504, z: 1.5937499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + center: {x: 4.7812495, y: 6.0062504, z: 2.2312498, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + distancesB: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + center: {x: 2.8687499, y: 5.3687506, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + distancesB: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + center: {x: 2.8687499, y: 5.3687506, z: 4.7812495, w: 0.31875} + firstChild: 9841 + - distancesA: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + distancesB: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + center: {x: 2.8687499, y: 6.0062504, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + distancesB: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + center: {x: 2.8687499, y: 6.0062504, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + distancesB: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + center: {x: 3.5062497, y: 5.3687506, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + distancesB: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + center: {x: 3.5062497, y: 5.3687506, z: 4.7812495, w: 0.31875} + firstChild: 9849 + - distancesA: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + distancesB: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + center: {x: 3.5062497, y: 6.0062504, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + distancesB: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + center: {x: 3.5062497, y: 6.0062504, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: 4.1437497, y: 5.3687506, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 1.1760635, z: 1.3613532, w: 1.3613532} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: 4.1437497, y: 5.3687506, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: 4.1437497, y: 6.0062504, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.3613532, y: 1.3613532, z: 1.7709464, w: 1.7709464} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: 4.1437497, y: 6.0062504, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + center: {x: 4.7812495, y: 5.3687506, z: 2.8687499, w: 0.31875} + firstChild: 9857 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + center: {x: 4.7812495, y: 5.3687506, z: 3.5062497, w: 0.31875} + firstChild: 9865 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + center: {x: 4.7812495, y: 6.0062504, z: 2.8687499, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + center: {x: 4.7812495, y: 6.0062504, z: 3.5062497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 1.1760635, y: 0.539821, z: 1.3613532, w: 0.8726761} + distancesB: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + center: {x: 4.1437497, y: 5.3687506, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + distancesB: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + center: {x: 4.1437497, y: 5.3687506, z: 4.7812495, w: 0.31875} + firstChild: 9873 + - distancesA: {x: 1.3613532, y: 0.8726761, z: 1.7709464, w: 1.4298714} + distancesB: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + center: {x: 4.1437497, y: 6.0062504, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + distancesB: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + center: {x: 4.1437497, y: 6.0062504, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.539821, y: 0.539821, z: 0.8726761, w: 0.8726761} + distancesB: {x: -0.11180318, y: -0.11180318, z: -0.69473505, w: -0.69473505} + center: {x: 4.7812495, y: 5.3687506, z: 4.1437497, w: 0.31875} + firstChild: 9881 + - distancesA: {x: 0.539821, y: -0.11180318, z: 0.8726761, w: -0.69473505} + distancesB: {x: -0.11180318, y: -0.3520751, z: -0.69473505, w: -0.77078766} + center: {x: 4.7812495, y: 5.3687506, z: 4.7812495, w: 0.31875} + firstChild: 9889 + - distancesA: {x: 0.8726761, y: 0.8726761, z: 1.4298714, w: 1.4298714} + distancesB: {x: -0.69473505, y: -0.69473505, z: -1.3287684, w: -1.3287684} + center: {x: 4.7812495, y: 6.0062504, z: 4.1437497, w: 0.31875} + firstChild: -1 + - distancesA: {x: 0.8726761, y: -0.69473505, z: 1.4298714, w: -1.3287684} + distancesB: {x: -0.69473505, y: -0.77078766, z: -1.3287684, w: -1.3700666} + center: {x: 4.7812495, y: 6.0062504, z: 4.7812495, w: 0.31875} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.51686305, y: -0.3631176, z: -0.38181642, w: -0.20391569} + distancesB: {x: -0.36311758, y: -0.18227313, z: -0.20391886, w: 0.035077635} + center: {x: -4.9406247, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3631176, y: -0.31511548, z: -0.20391569, w: -0.1437002} + distancesB: {x: -0.18227313, y: -0.12004278, z: 0.035077635, w: 0.1335152} + center: {x: -4.9406247, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.38181642, y: -0.20391569, z: -0.34850723, w: -0.16412279} + distancesB: {x: -0.2039191, y: 0.035077628, z: -0.16412257, w: 0.10178145} + center: {x: -4.9406247, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.20391569, y: -0.14370018, z: -0.16412279, w: -0.09999991} + distancesB: {x: 0.035077628, y: 0.13351516, z: 0.10178145, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36311758, y: -0.18227313, z: -0.20391886, w: 0.035077635} + distancesB: {x: -0.31511572, y: -0.12004272, z: -0.14369535, w: 0.1335152} + center: {x: -4.6218743, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.18227313, y: -0.12004278, z: 0.035077635, w: 0.1335152} + distancesB: {x: -0.12004272, y: -0.049999956, z: 0.1335152, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.2039191, y: 0.035077628, z: -0.16412257, w: 0.10178145} + distancesB: {x: -0.14369535, y: 0.13351516, z: -0.09999991, w: 0.21875048} + center: {x: -4.6218743, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.035077628, y: 0.13351516, z: 0.10178145, w: 0.21875048} + distancesB: {x: 0.13351516, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151155, y: -0.31514144, z: -0.1437002, w: -0.1437002} + distancesB: {x: -0.12004279, y: -0.12013312, z: 0.1335152, w: 0.13359644} + center: {x: -4.9406247, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31514144, y: -0.31511924, z: -0.1437002, w: -0.1437002} + distancesB: {x: -0.12013312, y: -0.12005256, z: 0.13359644, w: 0.13352399} + center: {x: -4.9406247, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14370018, y: -0.14370018, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13351518, y: 0.1335964, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14370018, y: -0.14370018, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.1335964, y: 0.13352397, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12004279, y: -0.12013312, z: 0.1335152, w: 0.13359644} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12013312, y: -0.12005256, z: 0.13359644, w: 0.13352399} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13351518, y: 0.1335964, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.1335964, y: 0.13352397, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.34850723, y: -0.16412279, z: -0.34850723, w: -0.16412216} + distancesB: {x: -0.16412257, y: 0.10178145, z: -0.16412279, w: 0.10178145} + center: {x: -4.9406247, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412279, y: -0.09999991, z: -0.16412216, w: -0.09999991} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.34850723, y: -0.16412216, z: -0.34850723, w: -0.16412236} + distancesB: {x: -0.16412279, y: 0.10178145, z: -0.16412258, w: 0.10178145} + center: {x: -4.9406247, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412216, y: -0.09999991, z: -0.16412236, w: -0.09999991} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412257, y: 0.10178145, z: -0.16412279, w: 0.10178145} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.6218743, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412279, y: 0.10178145, z: -0.16412258, w: 0.10178145} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.6218743, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31511572, y: -0.12004279, z: -0.14369535, w: 0.1335152} + distancesB: {x: -0.31511006, y: -0.12013312, z: -0.1436874, w: 0.13359644} + center: {x: -4.303125, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12004279, y: -0.049999956, z: 0.1335152, w: 0.26875004} + distancesB: {x: -0.12013312, y: -0.049999956, z: 0.13359644, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14369535, y: 0.13351518, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.1335964, z: -0.09999991, w: 0.21875048} + center: {x: -4.303125, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13351518, y: 0.26875, z: 0.21875048, w: 0.53749996} + distancesB: {x: 0.1335964, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: -4.303125, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31511006, y: -0.12013312, z: -0.1436874, w: 0.13359644} + distancesB: {x: -0.3151093, y: -0.1200525, z: -0.1436874, w: 0.13352399} + center: {x: -3.9843748, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12013312, y: -0.049999956, z: 0.13359644, w: 0.26875004} + distancesB: {x: -0.1200525, y: -0.049999956, z: 0.13352399, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.1335964, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13352397, z: -0.09999991, w: 0.21875048} + center: {x: -3.9843748, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.1335964, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13352397, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: -3.9843748, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.303125, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.303125, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.303125, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.303125, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.9843748, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.9843748, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.9843748, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.9843748, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31514144, y: -0.31514144, z: -0.1437002, w: -0.1437002} + distancesB: {x: -0.12030266, y: -0.12015635, z: 0.13374878, w: 0.13361731} + center: {x: -4.9406247, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31514144, y: -0.3151241, z: -0.1437002, w: -0.1437002} + distancesB: {x: -0.12015635, y: -0.12006461, z: 0.13361731, w: 0.13353492} + center: {x: -4.9406247, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14370018, y: -0.14370018, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13374877, y: 0.13361728, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14370018, y: -0.14370018, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13361728, y: 0.13353491, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12030266, y: -0.12015635, z: 0.13374878, w: 0.13361731} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12015635, y: -0.12006461, z: 0.13361731, w: 0.13353492} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13374877, y: 0.13361728, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13361728, y: 0.13353491, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151241, y: -0.31514144, z: -0.1437002, w: -0.1437002} + distancesB: {x: -0.12006461, y: -0.120181985, z: 0.13353492, w: 0.13364027} + center: {x: -4.9406247, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31514144, y: -0.31512958, z: -0.1437002, w: -0.1437002} + distancesB: {x: -0.120181985, y: -0.12007898, z: 0.13364027, w: 0.13354804} + center: {x: -4.9406247, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14370018, y: -0.14370018, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13353491, y: 0.13364026, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14370018, y: -0.14370018, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13364026, y: 0.13354802, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12006461, y: -0.120181985, z: 0.13353492, w: 0.13364027} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120181985, y: -0.12007898, z: 0.13364027, w: 0.13354804} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13353491, y: 0.13364026, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13364026, y: 0.13354802, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.34850723, y: -0.16412236, z: -0.34850723, w: -0.16412216} + distancesB: {x: -0.16412258, y: 0.10178145, z: -0.16412267, w: 0.10178145} + center: {x: -4.9406247, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412236, y: -0.09999991, z: -0.16412216, w: -0.09999991} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.34850723, y: -0.16412216, z: -0.34850723, w: -0.16412236} + distancesB: {x: -0.16412267, y: 0.10178145, z: -0.16412228, w: 0.101781085} + center: {x: -4.9406247, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412216, y: -0.09999991, z: -0.16412236, w: -0.09999991} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.101781085, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412258, y: 0.10178145, z: -0.16412267, w: 0.10178145} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.6218743, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412267, y: 0.10178145, z: -0.16412228, w: 0.101781085} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.6218743, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.101781085, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.34850723, y: -0.16412236, z: -0.34850723, w: -0.16412279} + distancesB: {x: -0.16412228, y: 0.101781085, z: -0.16412239, w: 0.10178145} + center: {x: -4.9406247, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412236, y: -0.09999991, z: -0.16412279, w: -0.09999991} + distancesB: {x: 0.101781085, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.34850723, y: -0.16412279, z: -0.34850723, w: -0.16412257} + distancesB: {x: -0.16412239, y: 0.10178145, z: -0.16412286, w: 0.10178145} + center: {x: -4.9406247, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412279, y: -0.09999991, z: -0.16412257, w: -0.09999991} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412228, y: 0.101781085, z: -0.16412239, w: 0.10178145} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.6218743, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.101781085, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412239, y: 0.10178145, z: -0.16412286, w: 0.10178145} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.6218743, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.303125, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.303125, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.303125, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.303125, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.9843748, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.9843748, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.9843748, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.9843748, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.303125, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.303125, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.303125, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.303125, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.9843748, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.9843748, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.9843748, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.9843748, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.12030248, z: -0.1436874, w: 0.1337488} + distancesB: {x: -0.3151093, y: -0.120156296, z: -0.1436874, w: 0.13361731} + center: {x: -3.6656246, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12030248, y: -0.049999956, z: 0.1337488, w: 0.26875004} + distancesB: {x: -0.120156296, y: -0.049999956, z: 0.13361731, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1436874, y: 0.13374877, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13361728, z: -0.09999991, w: 0.21875048} + center: {x: -3.6656246, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13374877, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13361728, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: -3.6656246, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.120156296, z: -0.1436874, w: 0.13361731} + distancesB: {x: -0.3151093, y: -0.12006461, z: -0.14368741, w: 0.13353513} + center: {x: -3.3468747, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120156296, y: -0.049999956, z: 0.13361731, w: 0.26875004} + distancesB: {x: -0.12006461, y: -0.049999956, z: 0.13353513, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13361728, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13353512, z: -0.09999991, w: 0.21875048} + center: {x: -3.3468747, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13361728, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13353512, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: -3.3468747, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.6656246, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.6656246, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.6656246, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.6656246, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.3468747, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.3468747, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.3468747, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.3468747, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.12006461, z: -0.14368741, w: 0.13353513} + distancesB: {x: -0.3151093, y: -0.12018183, z: -0.1436874, w: 0.13364027} + center: {x: -3.0281248, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12006461, y: -0.049999956, z: 0.13353513, w: 0.26875004} + distancesB: {x: -0.12018183, y: -0.049999956, z: 0.13364027, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13353512, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.1436874, y: 0.13364026, z: -0.09999991, w: 0.21875048} + center: {x: -3.0281248, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13353512, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13364026, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: -3.0281248, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.12018183, z: -0.1436874, w: 0.13364027} + distancesB: {x: -0.3151093, y: -0.12007892, z: -0.1436874, w: 0.13354774} + center: {x: -2.709375, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12018183, y: -0.049999956, z: 0.13364027, w: 0.26875004} + distancesB: {x: -0.12007892, y: -0.049999956, z: 0.13354774, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1436874, y: 0.13364026, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.1436874, y: 0.13354771, z: -0.09999991, w: 0.21875048} + center: {x: -2.709375, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13364026, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13354771, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: -2.709375, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.0281248, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.0281248, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.0281248, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.0281248, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.709375, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.709375, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.709375, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.709375, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.6656246, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.6656246, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.6656246, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.6656246, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.3468747, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.3468747, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.3468747, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.3468747, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.6656246, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.6656246, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.6656246, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.6656246, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.3468747, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.3468747, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.3468747, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.3468747, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.0281248, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.0281248, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.0281248, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.0281248, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.709375, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.709375, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.709375, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.709375, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.0281248, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.0281248, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.0281248, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.0281248, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.709375, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.709375, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.709375, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.709375, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31512958, y: -0.3151111, z: -0.1437002, w: -0.1436907} + distancesB: {x: -0.12007897, y: -0.12003061, z: 0.13354802, w: 0.13350455} + center: {x: -4.9406247, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151111, y: -0.31511346, z: -0.1436907, w: -0.14369594} + distancesB: {x: -0.12003061, y: -0.120036885, z: 0.13350455, w: 0.13351019} + center: {x: -4.9406247, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14370018, y: -0.14369072, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13354802, y: 0.13350452, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14369072, y: -0.14369595, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350452, y: 0.13351017, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12007897, y: -0.12003061, z: 0.13354802, w: 0.13350455} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12003061, y: -0.120036885, z: 0.13350455, w: 0.13351019} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13354802, y: 0.13350452, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350452, y: 0.13351017, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31511346, y: -0.3151132, z: -0.14369594, w: -0.14369528} + distancesB: {x: -0.120036885, y: -0.12003609, z: 0.13351019, w: 0.13350947} + center: {x: -4.9406247, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151132, y: -0.31511134, z: -0.14369528, w: -0.14369115} + distancesB: {x: -0.12003609, y: -0.120031156, z: 0.13350947, w: 0.13350503} + center: {x: -4.9406247, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14369595, y: -0.14369528, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13351019, y: 0.13350946, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14369528, y: -0.14369117, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350946, y: 0.13350502, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120036885, y: -0.12003609, z: 0.13351019, w: 0.13350947} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12003609, y: -0.120031156, z: 0.13350947, w: 0.13350503} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13351019, y: 0.13350946, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350946, y: 0.13350502, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31511137, y: -0.3151162, z: -0.14369115, w: -0.1437002} + distancesB: {x: -0.120031156, y: -0.12004387, z: 0.13350503, w: 0.13351645} + center: {x: -4.9406247, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151162, y: -0.31511796, z: -0.1437002, w: -0.1437002} + distancesB: {x: -0.12004387, y: -0.120048605, z: 0.13351645, w: 0.13352071} + center: {x: -4.9406247, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14369117, y: -0.14370018, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350502, y: 0.13351642, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14370018, y: -0.14370018, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13351642, y: 0.13352068, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120031156, y: -0.12004387, z: 0.13350503, w: 0.13351645} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12004387, y: -0.120048605, z: 0.13351645, w: 0.13352071} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350502, y: 0.13351642, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13351642, y: 0.13352068, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31511796, y: -0.31512, z: -0.1437002, w: -0.1437002} + distancesB: {x: -0.120048605, y: -0.1200539, z: 0.13352071, w: 0.13352548} + center: {x: -4.9406247, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31512, y: -0.31510958, z: -0.1437002, w: -0.14368732} + distancesB: {x: -0.12005391, y: -0.12002655, z: 0.13352548, w: 0.1335009} + center: {x: -4.9406247, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14370018, y: -0.14370018, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13352068, y: 0.13352546, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14370018, y: -0.14368732, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13352546, y: 0.13350089, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120048605, y: -0.1200539, z: 0.13352071, w: 0.13352548} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12005391, y: -0.12002655, z: 0.13352548, w: 0.1335009} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13352068, y: 0.13352546, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13352546, y: 0.13350089, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.120078914, z: -0.1436874, w: 0.13354772} + distancesB: {x: -0.3151093, y: -0.12003061, z: -0.14368787, w: 0.13350426} + center: {x: -2.3906248, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120078914, y: -0.049999956, z: 0.13354772, w: 0.26875004} + distancesB: {x: -0.12003061, y: -0.049999956, z: 0.13350426, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1436874, y: 0.13354771, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368787, y: 0.13350424, z: -0.09999991, w: 0.21875048} + center: {x: -2.3906248, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13354771, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350424, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: -2.3906248, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.12003061, z: -0.14368787, w: 0.13350426} + distancesB: {x: -0.3151093, y: -0.12003688, z: -0.14368741, w: 0.13350989} + center: {x: -2.0718749, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12003061, y: -0.049999956, z: 0.13350426, w: 0.26875004} + distancesB: {x: -0.12003688, y: -0.049999956, z: 0.13350989, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368787, y: 0.13350424, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13350987, z: -0.09999991, w: 0.21875048} + center: {x: -2.0718749, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350424, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350987, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: -2.0718749, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.3906248, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.3906248, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.3906248, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.3906248, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.0718749, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.0718749, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.0718749, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.0718749, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.12003688, z: -0.14368741, w: 0.13350989} + distancesB: {x: -0.3151093, y: -0.12003608, z: -0.14368741, w: 0.13350917} + center: {x: -1.7531248, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12003688, y: -0.049999956, z: 0.13350989, w: 0.26875004} + distancesB: {x: -0.12003608, y: -0.049999956, z: 0.13350917, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350989, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13350916, z: -0.09999991, w: 0.21875048} + center: {x: -1.7531248, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350989, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350916, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: -1.7531248, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.12003608, z: -0.14368741, w: 0.13350917} + distancesB: {x: -0.3151093, y: -0.120031156, z: -0.1436874, w: 0.13350473} + center: {x: -1.4343749, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12003608, y: -0.049999956, z: 0.13350917, w: 0.26875004} + distancesB: {x: -0.120031156, y: -0.049999956, z: 0.13350473, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350916, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13350472, z: -0.09999991, w: 0.21875048} + center: {x: -1.4343749, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350916, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350472, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: -1.4343749, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.7531248, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.7531248, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.7531248, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.7531248, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.4343749, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.4343749, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.4343749, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.4343749, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.3906248, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.3906248, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.3906248, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.3906248, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.0718749, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.0718749, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.0718749, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.0718749, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.3906248, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.3906248, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.3906248, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.3906248, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.0718749, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.0718749, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.0718749, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.0718749, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.7531248, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.7531248, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.7531248, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.7531248, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.4343749, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.4343749, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.4343749, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.4343749, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.7531248, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.7531248, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.7531248, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.7531248, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.4343749, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.4343749, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.4343749, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.4343749, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.120031156, z: -0.1436874, w: 0.13350473} + distancesB: {x: -0.3151093, y: -0.120026484, z: -0.1436874, w: 0.13351619} + center: {x: -1.1156249, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120031156, y: -0.049999956, z: 0.13350473, w: 0.26875004} + distancesB: {x: -0.120026484, y: -0.049999956, z: 0.13351619, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350472, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.1436874, y: 0.13351616, z: -0.09999991, w: 0.21875048} + center: {x: -1.1156249, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350472, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13351616, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: -1.1156249, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.120026484, z: -0.1436874, w: 0.13351619} + distancesB: {x: -0.3151093, y: -0.120026484, z: -0.1436874, w: 0.13352044} + center: {x: -0.79687494, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.049999956, z: 0.13351619, w: 0.26875004} + distancesB: {x: -0.120026484, y: -0.049999956, z: 0.13352044, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1436874, y: 0.13351616, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.1436874, y: 0.13352044, z: -0.09999991, w: 0.21875048} + center: {x: -0.79687494, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13351616, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13352044, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: -0.79687494, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.1156249, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.1156249, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.1156249, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.1156249, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.79687494, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.79687494, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.79687494, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.79687494, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.120026484, z: -0.1436874, w: 0.13352044} + distancesB: {x: -0.3151093, y: -0.12002649, z: -0.14368741, w: 0.13352522} + center: {x: -0.47812498, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.049999956, z: 0.13352044, w: 0.26875004} + distancesB: {x: -0.12002649, y: -0.049999956, z: 0.13352522, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1436874, y: 0.13352044, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.1335252, z: -0.09999991, w: 0.21875048} + center: {x: -0.47812498, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13352044, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.1335252, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: -0.47812498, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.12002649, z: -0.14368741, w: 0.13352522} + distancesB: {x: -0.31510967, y: -0.12002672, z: -0.14368741, w: 0.13350084} + center: {x: -0.159375, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002649, y: -0.049999956, z: 0.13352522, w: 0.26875004} + distancesB: {x: -0.12002672, y: -0.049999956, z: 0.13350084, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.1335252, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + center: {x: -0.159375, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.1335252, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: -0.159375, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.47812498, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.47812498, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.47812498, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.47812498, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.159375, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.159375, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.159375, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.159375, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.1156249, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.1156249, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.1156249, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.1156249, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.79687494, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.79687494, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.79687494, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.79687494, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.1156249, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.1156249, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.1156249, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.1156249, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.79687494, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.79687494, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.79687494, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.79687494, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.47812498, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.47812498, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.47812498, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.47812498, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.159375, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.159375, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.159375, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.159375, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.47812498, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.47812498, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.47812498, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.47812498, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.159375, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.159375, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.159375, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.159375, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -4.303125, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -4.303125, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.9843748, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.9843748, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.6656246, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.6656246, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.3468747, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.3468747, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -3.0281248, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -3.0281248, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.709375, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.709375, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31510958, y: -0.31510967, z: -0.14368732, w: -0.14368756} + distancesB: {x: -0.12002655, y: -0.120026834, z: 0.1335009, w: 0.13350083} + center: {x: -4.9406247, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31510967, y: -0.31511, z: -0.14368756, w: -0.14368841} + distancesB: {x: -0.120026834, y: -0.1200277, z: 0.13350083, w: 0.13350083} + center: {x: -4.9406247, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368732, y: -0.14368756, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350089, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368756, y: -0.14368843, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002655, y: -0.120026834, z: 0.1335009, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026834, y: -0.1200277, z: 0.13350083, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350089, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31511, y: -0.31511053, z: -0.14368829, w: -0.14368974} + distancesB: {x: -0.1200277, y: -0.12002914, z: 0.13350083, w: 0.13350083} + center: {x: -4.9406247, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31511053, y: -0.31511137, z: -0.14368974, w: -0.1436914} + distancesB: {x: -0.12002914, y: -0.120026715, z: 0.13350083, w: 0.13350083} + center: {x: -4.9406247, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368829, y: -0.14368974, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368974, y: -0.14369142, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1200277, y: -0.12002914, z: 0.13350083, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002914, y: -0.120026715, z: 0.13350083, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31511137, y: -0.31511235, z: -0.1436914, w: -0.14369357} + distancesB: {x: -0.12002672, y: -0.120026715, z: 0.13350083, w: 0.13350083} + center: {x: -4.9406247, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31511235, y: -0.31511354, z: -0.14369357, w: -0.14369619} + distancesB: {x: -0.120026715, y: -0.12002649, z: 0.13350083, w: 0.13350083} + center: {x: -4.9406247, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14369142, y: -0.14369358, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14369358, y: -0.1436962, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002672, y: -0.120026715, z: 0.13350083, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026715, y: -0.12002649, z: 0.13350083, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31511354, y: -0.31511497, z: -0.14369619, w: -0.14369932} + distancesB: {x: -0.12002649, y: -0.120026484, z: 0.13350083, w: 0.13350083} + center: {x: -4.9406247, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31511497, y: -0.31511015, z: -0.14369932, w: -0.14368922} + distancesB: {x: -0.120026484, y: -0.120026484, z: 0.13350083, w: 0.13350084} + center: {x: -4.9406247, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1436962, y: -0.14369933, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14369933, y: -0.14368923, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002649, y: -0.120026484, z: 0.13350083, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.120026484, z: 0.13350083, w: 0.13350084} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31511036, y: -0.31511104, z: -0.14368922, w: -0.1436907} + distancesB: {x: -0.12002649, y: -0.12002672, z: 0.13350084, w: 0.13350083} + center: {x: -4.9406247, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31511104, y: -0.31511003, z: -0.1436907, w: -0.14368846} + distancesB: {x: -0.12002672, y: -0.12002672, z: 0.13350083, w: 0.13350083} + center: {x: -4.9406247, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368923, y: -0.14369072, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14369072, y: -0.14368847, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002649, y: -0.12002672, z: 0.13350084, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002672, y: -0.12002672, z: 0.13350083, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31511003, y: -0.31511047, z: -0.14368846, w: -0.14368962} + distancesB: {x: -0.12002672, y: -0.120026484, z: 0.13350083, w: 0.13350083} + center: {x: -4.9406247, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31511047, y: -0.31510928, z: -0.14368962, w: -0.14368758} + distancesB: {x: -0.120026484, y: -0.120026484, z: 0.13350083, w: 0.13350083} + center: {x: -4.9406247, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368847, y: -0.14368963, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368963, y: -0.1436876, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002672, y: -0.120026484, z: 0.13350083, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.120026484, z: 0.13350083, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31510928, y: -0.3151093, z: -0.14368758, w: -0.14368747} + distancesB: {x: -0.120026484, y: -0.120026484, z: 0.13350083, w: 0.13350083} + center: {x: -4.9406247, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.3151093, z: -0.14368747, w: -0.14368741} + distancesB: {x: -0.120026484, y: -0.12002672, z: 0.13350083, w: 0.13350083} + center: {x: -4.9406247, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1436876, y: -0.14368749, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368749, y: -0.14368741, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.120026484, z: 0.13350083, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.12002672, z: 0.13350083, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.6218743, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.53749996} + center: {x: -4.6218743, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.36311758, z: -0.14368741, w: -0.20391886} + distancesB: {x: -0.12002672, y: -0.18227313, z: 0.13350083, w: 0.035077635} + center: {x: -4.9406247, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36311758, y: -0.51686305, z: -0.20391886, w: -0.38181642} + distancesB: {x: -0.18227313, y: -0.3631176, z: 0.035077635, w: -0.20391569} + center: {x: -4.9406247, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: -0.2039191, z: -0.09999991, w: -0.16412257} + distancesB: {x: 0.13350083, y: 0.035077628, z: 0.21875048, w: 0.10178145} + center: {x: -4.9406247, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.2039191, y: -0.38181642, z: -0.16412257, w: -0.34850723} + distancesB: {x: 0.035077628, y: -0.20391569, z: 0.10178145, w: -0.16412279} + center: {x: -4.9406247, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002672, y: -0.18227313, z: 0.13350083, w: 0.035077635} + distancesB: {x: -0.049999956, y: -0.12004278, z: 0.26875004, w: 0.1335152} + center: {x: -4.6218743, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.18227313, y: -0.3631176, z: 0.035077635, w: -0.20391569} + distancesB: {x: -0.12004278, y: -0.31511548, z: 0.1335152, w: -0.1437002} + center: {x: -4.6218743, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.035077628, z: 0.21875048, w: 0.10178145} + distancesB: {x: 0.26875, y: 0.13351516, z: 0.5375008, w: 0.21875048} + center: {x: -4.6218743, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.035077628, y: -0.20391569, z: 0.10178145, w: -0.16412279} + distancesB: {x: 0.13351516, y: -0.14370018, z: 0.21875048, w: -0.09999991} + center: {x: -4.6218743, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 0.746875, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.065625, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 0.746875, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + center: {x: -4.6218743, y: 0.746875, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.065625, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + center: {x: -4.6218743, y: 1.065625, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.16412257, z: -0.09999991, w: -0.16412279} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: -4.9406247, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412257, y: -0.34850723, z: -0.16412279, w: -0.34850723} + distancesB: {x: 0.10178145, y: -0.16412279, z: 0.10178145, w: -0.16412216} + center: {x: -4.9406247, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.16412279, z: -0.09999991, w: -0.16412258} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: -4.9406247, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412279, y: -0.34850723, z: -0.16412258, w: -0.34850723} + distancesB: {x: 0.10178145, y: -0.16412216, z: 0.10178145, w: -0.16412236} + center: {x: -4.9406247, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.6218743, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412279, z: 0.10178145, w: -0.16412216} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.6218743, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.6218743, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412216, z: 0.10178145, w: -0.16412236} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.6218743, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -4.303125, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -4.303125, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: -4.303125, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.9843748, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.9843748, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: -3.9843748, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12004279, z: 0.26875004, w: 0.1335152} + distancesB: {x: -0.049999956, y: -0.12013312, z: 0.26875004, w: 0.13359644} + center: {x: -4.303125, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12004279, y: -0.3151155, z: 0.1335152, w: -0.1437002} + distancesB: {x: -0.12013312, y: -0.31514144, z: 0.13359644, w: -0.1437002} + center: {x: -4.303125, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13351518, z: 0.53749996, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.1335964, z: 0.5375008, w: 0.21875048} + center: {x: -4.303125, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13351518, y: -0.14370018, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.1335964, y: -0.14370018, z: 0.21875048, w: -0.09999991} + center: {x: -4.303125, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12013312, z: 0.26875004, w: 0.13359644} + distancesB: {x: -0.049999956, y: -0.12005256, z: 0.26875004, w: 0.13352399} + center: {x: -3.9843748, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12013312, y: -0.31514144, z: 0.13359644, w: -0.1437002} + distancesB: {x: -0.12005256, y: -0.31511924, z: 0.13352399, w: -0.1437002} + center: {x: -3.9843748, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.1335964, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13352397, z: 0.5375008, w: 0.21875048} + center: {x: -3.9843748, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.1335964, y: -0.14370018, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13352397, y: -0.14370018, z: 0.21875048, w: -0.09999991} + center: {x: -3.9843748, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.303125, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.303125, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.303125, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.303125, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.9843748, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.9843748, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.9843748, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.9843748, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.384375, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 1.7031249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.384375, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + center: {x: -4.6218743, y: 1.384375, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 1.7031249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + center: {x: -4.6218743, y: 1.7031249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.16412258, z: -0.09999991, w: -0.16412267} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: -4.9406247, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412258, y: -0.34850723, z: -0.16412267, w: -0.34850723} + distancesB: {x: 0.10178145, y: -0.16412236, z: 0.10178145, w: -0.16412216} + center: {x: -4.9406247, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.16412267, z: -0.09999991, w: -0.16412228} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.101781085} + center: {x: -4.9406247, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412267, y: -0.34850723, z: -0.16412228, w: -0.34850723} + distancesB: {x: 0.10178145, y: -0.16412216, z: 0.101781085, w: -0.16412236} + center: {x: -4.9406247, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.6218743, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412236, z: 0.10178145, w: -0.16412216} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.6218743, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.101781085} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.6218743, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412216, z: 0.101781085, w: -0.16412236} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.6218743, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.021875, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.3406248, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.021875, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + center: {x: -4.6218743, y: 2.021875, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.3406248, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + center: {x: -4.6218743, y: 2.3406248, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.16412228, z: -0.09999991, w: -0.16412239} + distancesB: {x: 0.21875048, y: 0.101781085, z: 0.21875048, w: 0.10178145} + center: {x: -4.9406247, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412228, y: -0.34850723, z: -0.16412239, w: -0.34850723} + distancesB: {x: 0.101781085, y: -0.16412236, z: 0.10178145, w: -0.16412279} + center: {x: -4.9406247, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.16412239, z: -0.09999991, w: -0.16412286} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: -4.9406247, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412239, y: -0.34850723, z: -0.16412286, w: -0.34850723} + distancesB: {x: 0.10178145, y: -0.16412279, z: 0.10178145, w: -0.16412257} + center: {x: -4.9406247, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.101781085, z: 0.21875048, w: 0.10178145} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.6218743, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.101781085, y: -0.16412236, z: 0.10178145, w: -0.16412279} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.6218743, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.6218743, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412279, z: 0.10178145, w: -0.16412257} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.6218743, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.303125, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.303125, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.303125, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.303125, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.9843748, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.9843748, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.9843748, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.9843748, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.303125, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.303125, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.303125, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.303125, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.9843748, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.9843748, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.9843748, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.9843748, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.6656246, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.6656246, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: -3.6656246, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.3468747, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.3468747, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: -3.3468747, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12030266, z: 0.26875004, w: 0.13374878} + distancesB: {x: -0.049999956, y: -0.12015635, z: 0.26875004, w: 0.13361731} + center: {x: -3.6656246, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12030266, y: -0.31514144, z: 0.13374878, w: -0.1437002} + distancesB: {x: -0.12015635, y: -0.31514144, z: 0.13361731, w: -0.1437002} + center: {x: -3.6656246, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13374877, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13361728, z: 0.5375008, w: 0.21875048} + center: {x: -3.6656246, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13374877, y: -0.14370018, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13361728, y: -0.14370018, z: 0.21875048, w: -0.09999991} + center: {x: -3.6656246, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12015635, z: 0.26875004, w: 0.13361731} + distancesB: {x: -0.049999956, y: -0.12006461, z: 0.26875004, w: 0.13353492} + center: {x: -3.3468747, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12015635, y: -0.31514144, z: 0.13361731, w: -0.1437002} + distancesB: {x: -0.12006461, y: -0.3151241, z: 0.13353492, w: -0.1437002} + center: {x: -3.3468747, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13361728, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13353491, z: 0.5375008, w: 0.21875048} + center: {x: -3.3468747, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13361728, y: -0.14370018, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13353491, y: -0.14370018, z: 0.21875048, w: -0.09999991} + center: {x: -3.3468747, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.6656246, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.6656246, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.6656246, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.6656246, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.3468747, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.3468747, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.3468747, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.3468747, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -3.0281248, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -3.0281248, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: -3.0281248, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.709375, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.709375, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: -2.709375, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12006461, z: 0.26875004, w: 0.13353492} + distancesB: {x: -0.049999956, y: -0.120181985, z: 0.26875004, w: 0.13364027} + center: {x: -3.0281248, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12006461, y: -0.3151241, z: 0.13353492, w: -0.1437002} + distancesB: {x: -0.120181985, y: -0.31514144, z: 0.13364027, w: -0.1437002} + center: {x: -3.0281248, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13353491, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13364026, z: 0.5375008, w: 0.21875048} + center: {x: -3.0281248, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13353491, y: -0.14370018, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13364026, y: -0.14370018, z: 0.21875048, w: -0.09999991} + center: {x: -3.0281248, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.120181985, z: 0.26875004, w: 0.13364027} + distancesB: {x: -0.049999956, y: -0.12007898, z: 0.26875004, w: 0.13354804} + center: {x: -2.709375, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120181985, y: -0.31514144, z: 0.13364027, w: -0.1437002} + distancesB: {x: -0.12007898, y: -0.31512958, z: 0.13354804, w: -0.1437002} + center: {x: -2.709375, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13364026, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13354802, z: 0.5375008, w: 0.21875048} + center: {x: -2.709375, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13364026, y: -0.14370018, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13354802, y: -0.14370018, z: 0.21875048, w: -0.09999991} + center: {x: -2.709375, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.0281248, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.0281248, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.0281248, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.0281248, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.709375, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.709375, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.709375, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.709375, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.6656246, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.6656246, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.6656246, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.6656246, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.3468747, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.3468747, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.3468747, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.3468747, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.6656246, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.6656246, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.6656246, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.6656246, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.3468747, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.3468747, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.3468747, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.3468747, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.0281248, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.0281248, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.0281248, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.0281248, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.709375, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.709375, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.709375, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.709375, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.0281248, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.0281248, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.0281248, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.0281248, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.709375, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.709375, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.709375, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.709375, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.3906248, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.3906248, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -2.0718749, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -2.0718749, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.7531248, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.7531248, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.4343749, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.4343749, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -1.1156249, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -1.1156249, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.79687494, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.79687494, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.47812498, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.47812498, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: -0.159375, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: -0.159375, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.3906248, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.3906248, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: -2.3906248, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -2.0718749, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -2.0718749, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: -2.0718749, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12007897, z: 0.26875004, w: 0.13354802} + distancesB: {x: -0.049999956, y: -0.12003061, z: 0.26875004, w: 0.13350455} + center: {x: -2.3906248, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12007897, y: -0.31512958, z: 0.13354802, w: -0.1437002} + distancesB: {x: -0.12003061, y: -0.3151111, z: 0.13350455, w: -0.1436907} + center: {x: -2.3906248, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13354802, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350452, z: 0.5375008, w: 0.21875048} + center: {x: -2.3906248, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13354802, y: -0.14370018, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350452, y: -0.14369072, z: 0.21875048, w: -0.09999991} + center: {x: -2.3906248, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12003061, z: 0.26875004, w: 0.13350455} + distancesB: {x: -0.049999956, y: -0.120036885, z: 0.26875004, w: 0.13351019} + center: {x: -2.0718749, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12003061, y: -0.3151111, z: 0.13350455, w: -0.1436907} + distancesB: {x: -0.120036885, y: -0.31511346, z: 0.13351019, w: -0.14369594} + center: {x: -2.0718749, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350452, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13351017, z: 0.5375008, w: 0.21875048} + center: {x: -2.0718749, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350452, y: -0.14369072, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13351017, y: -0.14369595, z: 0.21875048, w: -0.09999991} + center: {x: -2.0718749, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.3906248, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.3906248, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.3906248, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.3906248, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.0718749, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.0718749, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.0718749, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.0718749, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.7531248, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.7531248, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: -1.7531248, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.4343749, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.4343749, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: -1.4343749, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.120036885, z: 0.26875004, w: 0.13351019} + distancesB: {x: -0.049999956, y: -0.12003609, z: 0.26875004, w: 0.13350947} + center: {x: -1.7531248, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120036885, y: -0.31511346, z: 0.13351019, w: -0.14369594} + distancesB: {x: -0.12003609, y: -0.3151132, z: 0.13350947, w: -0.14369528} + center: {x: -1.7531248, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13351019, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350946, z: 0.5375008, w: 0.21875048} + center: {x: -1.7531248, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13351019, y: -0.14369595, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350946, y: -0.14369528, z: 0.21875048, w: -0.09999991} + center: {x: -1.7531248, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12003609, z: 0.26875004, w: 0.13350947} + distancesB: {x: -0.049999956, y: -0.120031156, z: 0.26875004, w: 0.13350503} + center: {x: -1.4343749, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12003609, y: -0.3151132, z: 0.13350947, w: -0.14369528} + distancesB: {x: -0.120031156, y: -0.31511134, z: 0.13350503, w: -0.14369115} + center: {x: -1.4343749, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350946, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350502, z: 0.5375008, w: 0.21875048} + center: {x: -1.4343749, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350946, y: -0.14369528, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350502, y: -0.14369117, z: 0.21875048, w: -0.09999991} + center: {x: -1.4343749, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.7531248, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.7531248, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.7531248, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.7531248, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.4343749, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.4343749, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.4343749, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.4343749, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.3906248, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.3906248, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.3906248, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.3906248, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.0718749, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.0718749, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.0718749, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.0718749, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.3906248, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.3906248, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.3906248, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.3906248, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.0718749, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.0718749, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.0718749, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.0718749, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.7531248, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.7531248, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.7531248, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.7531248, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.4343749, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.4343749, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.4343749, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.4343749, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.7531248, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.7531248, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.7531248, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.7531248, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.4343749, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.4343749, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.4343749, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.4343749, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -1.1156249, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -1.1156249, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: -1.1156249, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.79687494, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.79687494, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: -0.79687494, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.120031156, z: 0.26875004, w: 0.13350503} + distancesB: {x: -0.049999956, y: -0.12004387, z: 0.26875004, w: 0.13351645} + center: {x: -1.1156249, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120031156, y: -0.31511137, z: 0.13350503, w: -0.14369115} + distancesB: {x: -0.12004387, y: -0.3151162, z: 0.13351645, w: -0.1437002} + center: {x: -1.1156249, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350502, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13351642, z: 0.5375008, w: 0.21875048} + center: {x: -1.1156249, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350502, y: -0.14369117, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13351642, y: -0.14370018, z: 0.21875048, w: -0.09999991} + center: {x: -1.1156249, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12004387, z: 0.26875004, w: 0.13351645} + distancesB: {x: -0.049999956, y: -0.120048605, z: 0.26875004, w: 0.13352071} + center: {x: -0.79687494, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12004387, y: -0.3151162, z: 0.13351645, w: -0.1437002} + distancesB: {x: -0.120048605, y: -0.31511796, z: 0.13352071, w: -0.1437002} + center: {x: -0.79687494, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13351642, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13352068, z: 0.5375008, w: 0.21875048} + center: {x: -0.79687494, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13351642, y: -0.14370018, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13352068, y: -0.14370018, z: 0.21875048, w: -0.09999991} + center: {x: -0.79687494, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.1156249, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.1156249, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.1156249, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.1156249, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.79687494, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.79687494, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.79687494, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.79687494, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.47812498, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.47812498, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: -0.47812498, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: -0.159375, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: -0.159375, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: -0.159375, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.120048605, z: 0.26875004, w: 0.13352071} + distancesB: {x: -0.049999956, y: -0.1200539, z: 0.26875004, w: 0.13352548} + center: {x: -0.47812498, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120048605, y: -0.31511796, z: 0.13352071, w: -0.1437002} + distancesB: {x: -0.1200539, y: -0.31512, z: 0.13352548, w: -0.1437002} + center: {x: -0.47812498, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13352068, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13352546, z: 0.5375008, w: 0.21875048} + center: {x: -0.47812498, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13352068, y: -0.14370018, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13352546, y: -0.14370018, z: 0.21875048, w: -0.09999991} + center: {x: -0.47812498, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12005391, z: 0.26875004, w: 0.13352548} + distancesB: {x: -0.049999956, y: -0.12002655, z: 0.26875004, w: 0.1335009} + center: {x: -0.159375, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12005391, y: -0.31512, z: 0.13352548, w: -0.1437002} + distancesB: {x: -0.12002655, y: -0.31510958, z: 0.1335009, w: -0.14368732} + center: {x: -0.159375, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13352546, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350089, z: 0.5375008, w: 0.21875048} + center: {x: -0.159375, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13352546, y: -0.14370018, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350089, y: -0.14368732, z: 0.21875048, w: -0.09999991} + center: {x: -0.159375, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.47812498, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.47812498, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.47812498, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.47812498, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.159375, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.159375, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.159375, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.159375, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.1156249, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.1156249, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.1156249, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.1156249, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.79687494, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.79687494, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.79687494, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.79687494, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.1156249, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.1156249, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.1156249, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.1156249, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.79687494, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.79687494, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.79687494, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.79687494, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.47812498, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.47812498, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.47812498, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.47812498, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.159375, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.159375, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.159375, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.159375, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.47812498, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.47812498, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.47812498, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.47812498, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.159375, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.159375, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.159375, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.159375, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.34850723, y: -0.16412257, z: -0.34850723, w: -0.16412279} + distancesB: {x: -0.1641226, y: 0.10178145, z: -0.1641224, w: 0.10178145} + center: {x: -4.9406247, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412257, y: -0.09999991, z: -0.16412279, w: -0.09999991} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.34850723, y: -0.16412279, z: -0.34850723, w: -0.16412257} + distancesB: {x: -0.1641224, y: 0.10178145, z: -0.16412283, w: 0.10178145} + center: {x: -4.9406247, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412279, y: -0.09999991, z: -0.16412257, w: -0.09999991} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1641226, y: 0.10178145, z: -0.1641224, w: 0.10178145} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.6218743, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1641224, y: 0.10178145, z: -0.16412283, w: 0.10178145} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.6218743, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.34850723, y: -0.16412257, z: -0.34850723, w: -0.16412279} + distancesB: {x: -0.16412283, y: 0.10178145, z: -0.16412297, w: 0.10178145} + center: {x: -4.9406247, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412257, y: -0.09999991, z: -0.16412279, w: -0.09999991} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.34850723, y: -0.16412279, z: -0.34850723, w: -0.16412279} + distancesB: {x: -0.16412297, y: 0.10178145, z: -0.16412242, w: 0.10178145} + center: {x: -4.9406247, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412279, y: -0.09999991, z: -0.16412279, w: -0.09999991} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412283, y: 0.10178145, z: -0.16412297, w: 0.10178145} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.6218743, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412297, y: 0.10178145, z: -0.16412242, w: 0.10178145} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.6218743, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.303125, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.303125, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.303125, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.303125, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.9843748, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.9843748, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.9843748, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.9843748, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.303125, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.303125, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.303125, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.303125, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.9843748, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.9843748, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.9843748, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.9843748, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.34850723, y: -0.16412279, z: -0.34850723, w: -0.16412216} + distancesB: {x: -0.16412242, y: 0.10178145, z: -0.16412258, w: 0.10178145} + center: {x: -4.9406247, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412279, y: -0.09999991, z: -0.16412216, w: -0.09999991} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.34850723, y: -0.16412216, z: -0.34850723, w: -0.16412243} + distancesB: {x: -0.16412258, y: 0.10178145, z: -0.16412243, w: 0.10178145} + center: {x: -4.9406247, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412216, y: -0.09999991, z: -0.16412243, w: -0.09999991} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412242, y: 0.10178145, z: -0.16412258, w: 0.10178145} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.6218743, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412258, y: 0.10178145, z: -0.16412243, w: 0.10178145} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.6218743, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.34850723, y: -0.16412348, z: -0.34850723, w: -0.16412257} + distancesB: {x: -0.1641237, y: 0.10178145, z: -0.16412257, w: 0.1017818} + center: {x: -4.9406247, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412348, y: -0.09999991, z: -0.16412257, w: -0.09999991} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.1017818, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.34850723, y: -0.16412257, z: -0.3520757, w: -0.17156968} + distancesB: {x: -0.16412257, y: 0.1017818, z: -0.17156953, w: 0.1133995} + center: {x: -4.9406247, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412257, y: -0.09999991, z: -0.17156968, w: -0.1118034} + distancesB: {x: 0.1017818, y: 0.21875048, z: 0.1133995, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1641237, y: 0.10178145, z: -0.16412257, w: 0.1017818} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.6218743, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.1017818, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412257, y: 0.1017818, z: -0.17156953, w: 0.1133995} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: -4.6218743, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.1017818, y: 0.21875048, z: 0.1133995, w: 0.22439204} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.53749996, y: 0.5375008, z: 0.5398205, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.303125, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.303125, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.303125, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.303125, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.9843748, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.9843748, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.9843748, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.9843748, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -4.303125, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -4.303125, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: -4.303125, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.53749996, z: 0.22439204, w: 0.5398205} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: -4.303125, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.9843748, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.9843748, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: -3.9843748, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: -3.9843748, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.6656246, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.6656246, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.6656246, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.6656246, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.3468747, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.3468747, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.3468747, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.3468747, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.6656246, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.6656246, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.6656246, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.6656246, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.3468747, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.3468747, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.3468747, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.3468747, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.0281248, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.0281248, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.0281248, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.0281248, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.709375, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.709375, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.709375, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.709375, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.0281248, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.0281248, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.0281248, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.0281248, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.709375, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.709375, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.709375, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.709375, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.6656246, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.6656246, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.6656246, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.6656246, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.3468747, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.3468747, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.3468747, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.3468747, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.6656246, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.6656246, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: -3.6656246, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: -3.6656246, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.3468747, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.3468747, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: -3.3468747, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: -3.3468747, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.0281248, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.0281248, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.0281248, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.0281248, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.709375, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.709375, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.709375, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.709375, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -3.0281248, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -3.0281248, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: -3.0281248, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: -3.0281248, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.709375, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.709375, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: -2.709375, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: -2.709375, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3520757, y: -0.17156968, z: -0.50737983, w: -0.40362495} + distancesB: {x: -0.17156953, y: 0.1133995, z: -0.40362453, w: 0.3825394} + center: {x: -4.9406247, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.17156968, y: -0.1118034, z: -0.40362495, w: -0.3820693} + distancesB: {x: 0.1133995, y: 0.22439204, z: 0.3825394, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: 9897 + - distancesA: {x: -0.50737983, y: -0.40362495, z: -0.77078843, w: -0.7068194} + distancesB: {x: -0.40362453, y: 0.3825394, z: -0.70681894, w: 0.6949943} + center: {x: -4.9406247, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.40362495, y: -0.3820693, z: -0.7068194, w: -0.6947356} + distancesB: {x: 0.3825394, y: 0.42875254, z: 0.6949943, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.17156953, y: 0.1133995, z: -0.40362453, w: 0.3825394} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: -4.6218743, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 9905 + - distancesA: {x: 0.1133995, y: 0.22439204, z: 0.3825394, w: 0.42875254} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.40362453, y: 0.3825394, z: -0.70681894, w: 0.6949943} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: -4.6218743, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.3825394, y: 0.42875254, z: 0.6949943, w: 0.72146326} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: -4.303125, w: 0.159375} + firstChild: 9913 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: -3.9843748, w: 0.159375} + firstChild: 9921 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.5398205, y: 0.53982145, z: 0.6518306, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518306, y: 0.6518314, z: 0.87267613, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: -4.303125, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 9929 + - distancesA: {x: 0.22439204, y: 0.5398205, z: 0.42875254, w: 0.6518306} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: -4.303125, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: -4.303125, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518306, z: 0.72146326, w: 0.87267613} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: -4.303125, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: -3.9843748, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 9937 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: -3.9843748, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: -3.9843748, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: -3.9843748, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: -3.6656246, w: 0.159375} + firstChild: 9945 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: -3.3468747, w: 0.159375} + firstChild: 9953 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: -3.0281248, w: 0.159375} + firstChild: 9961 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: -2.709375, w: 0.159375} + firstChild: 9969 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: -3.6656246, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 9977 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: -3.6656246, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: -3.6656246, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: -3.6656246, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: -3.3468747, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 9985 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: -3.3468747, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: -3.3468747, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: -3.3468747, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: -3.0281248, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 9993 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: -3.0281248, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: -3.0281248, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: -3.0281248, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: -2.709375, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10001 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: -2.709375, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: -2.709375, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: -2.709375, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: -2.3906248, w: 0.159375} + firstChild: 10009 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: -2.0718749, w: 0.159375} + firstChild: 10017 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: -1.7531248, w: 0.159375} + firstChild: 10025 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: -1.4343749, w: 0.159375} + firstChild: 10033 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: -1.1156249, w: 0.159375} + firstChild: 10041 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: -0.79687494, w: 0.159375} + firstChild: 10049 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: -0.47812498, w: 0.159375} + firstChild: 10057 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: -0.159375, w: 0.159375} + firstChild: 10065 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.3906248, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.3906248, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.3906248, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.3906248, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.0718749, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.0718749, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.0718749, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.0718749, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.3906248, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.3906248, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.3906248, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.3906248, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.0718749, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.0718749, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.0718749, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.0718749, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.7531248, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.7531248, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.7531248, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.7531248, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.4343749, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.4343749, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.4343749, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.4343749, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.7531248, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.7531248, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.7531248, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.7531248, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.4343749, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.4343749, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.4343749, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.4343749, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.3906248, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.3906248, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.3906248, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.3906248, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.0718749, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.0718749, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.0718749, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.0718749, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.3906248, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.3906248, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: -2.3906248, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: -2.3906248, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -2.0718749, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -2.0718749, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: -2.0718749, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: -2.0718749, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.7531248, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.7531248, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.7531248, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.7531248, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.4343749, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.4343749, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.4343749, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.4343749, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.7531248, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.7531248, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: -1.7531248, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: -1.7531248, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.4343749, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.4343749, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: -1.4343749, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: -1.4343749, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.1156249, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.1156249, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.1156249, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.1156249, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.79687494, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.79687494, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.79687494, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.79687494, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.1156249, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.1156249, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.1156249, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.1156249, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.79687494, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.79687494, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.79687494, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.79687494, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.47812498, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.47812498, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.47812498, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.47812498, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.159375, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.159375, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.159375, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.159375, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.47812498, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.47812498, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.47812498, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.47812498, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.159375, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.159375, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.159375, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.159375, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.1156249, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.1156249, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.1156249, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.1156249, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.79687494, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.79687494, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.79687494, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.79687494, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -1.1156249, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -1.1156249, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: -1.1156249, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: -1.1156249, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.79687494, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.79687494, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: -0.79687494, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: -0.79687494, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.47812498, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.47812498, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.47812498, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.47812498, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.159375, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.159375, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.159375, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.159375, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.47812498, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.47812498, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: -0.47812498, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: -0.47812498, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: -0.159375, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: -0.159375, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: -0.159375, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: -0.159375, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: -2.3906248, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10073 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: -2.3906248, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: -2.3906248, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: -2.3906248, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: -2.0718749, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10081 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: -2.0718749, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: -2.0718749, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: -2.0718749, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: -1.7531248, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10089 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: -1.7531248, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: -1.7531248, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: -1.7531248, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: -1.4343749, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10097 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: -1.4343749, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: -1.4343749, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: -1.4343749, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: -1.1156249, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10105 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: -1.1156249, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: -1.1156249, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: -1.1156249, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: -0.79687494, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10113 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: -0.79687494, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: -0.79687494, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: -0.79687494, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: -0.47812498, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10121 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: -0.47812498, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: -0.47812498, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: -0.47812498, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: -0.159375, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10129 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: -0.159375, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: -0.159375, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: -0.159375, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.6593752, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 2.978125, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.6593752, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + center: {x: -4.6218743, y: 2.6593752, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 2.978125, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + center: {x: -4.6218743, y: 2.978125, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.1641226, z: -0.09999991, w: -0.1641224} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: -4.9406247, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1641226, y: -0.34850723, z: -0.1641224, w: -0.34850723} + distancesB: {x: 0.10178145, y: -0.16412257, z: 0.10178145, w: -0.16412279} + center: {x: -4.9406247, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.1641224, z: -0.09999991, w: -0.16412283} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: -4.9406247, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1641224, y: -0.34850723, z: -0.16412283, w: -0.34850723} + distancesB: {x: 0.10178145, y: -0.16412279, z: 0.10178145, w: -0.16412257} + center: {x: -4.9406247, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.6218743, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412257, z: 0.10178145, w: -0.16412279} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.6218743, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.6218743, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412279, z: 0.10178145, w: -0.16412257} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.6218743, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.296875, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.615625, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.296875, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + center: {x: -4.6218743, y: 3.296875, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.615625, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + center: {x: -4.6218743, y: 3.615625, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.16412283, z: -0.09999991, w: -0.16412297} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: -4.9406247, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412283, y: -0.34850723, z: -0.16412297, w: -0.34850723} + distancesB: {x: 0.10178145, y: -0.16412257, z: 0.10178145, w: -0.16412279} + center: {x: -4.9406247, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.16412297, z: -0.09999991, w: -0.16412242} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: -4.9406247, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412297, y: -0.34850723, z: -0.16412242, w: -0.34850723} + distancesB: {x: 0.10178145, y: -0.16412279, z: 0.10178145, w: -0.16412279} + center: {x: -4.9406247, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.6218743, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412257, z: 0.10178145, w: -0.16412279} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.6218743, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.6218743, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412279, z: 0.10178145, w: -0.16412279} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.6218743, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.303125, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.303125, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.303125, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.303125, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.9843748, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.9843748, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.9843748, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.9843748, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.303125, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.303125, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.303125, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.303125, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.9843748, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.9843748, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.9843748, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.9843748, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 3.934375, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.253125, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 3.934375, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + center: {x: -4.6218743, y: 3.934375, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.253125, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + center: {x: -4.6218743, y: 4.253125, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.16412242, z: -0.09999991, w: -0.16412258} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: -4.9406247, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412242, y: -0.34850723, z: -0.16412258, w: -0.34850723} + distancesB: {x: 0.10178145, y: -0.16412279, z: 0.10178145, w: -0.16412216} + center: {x: -4.9406247, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.16412258, z: -0.09999991, w: -0.16412243} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: -4.9406247, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412258, y: -0.34850723, z: -0.16412243, w: -0.34850723} + distancesB: {x: 0.10178145, y: -0.16412216, z: 0.10178145, w: -0.16412243} + center: {x: -4.9406247, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.6218743, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412279, z: 0.10178145, w: -0.16412216} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.6218743, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.6218743, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412216, z: 0.10178145, w: -0.16412243} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.6218743, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: -4.9406247, y: 4.5718746, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: -4.9406247, y: 4.890625, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + center: {x: -4.6218743, y: 4.5718746, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + center: {x: -4.6218743, y: 4.5718746, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + center: {x: -4.6218743, y: 4.890625, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.53749996, z: 0.53982145, w: 0.5398205} + center: {x: -4.6218743, y: 4.890625, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.1641237, z: -0.09999991, w: -0.16412257} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.1017818} + center: {x: -4.9406247, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1641237, y: -0.34850723, z: -0.16412257, w: -0.34850723} + distancesB: {x: 0.10178145, y: -0.16412348, z: 0.1017818, w: -0.16412257} + center: {x: -4.9406247, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: -0.16412257, z: -0.1118034, w: -0.17156953} + distancesB: {x: 0.21875048, y: 0.1017818, z: 0.22439204, w: 0.1133995} + center: {x: -4.9406247, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412257, y: -0.34850723, z: -0.17156953, w: -0.3520757} + distancesB: {x: 0.1017818, y: -0.16412257, z: 0.1133995, w: -0.17156968} + center: {x: -4.9406247, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.1017818} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.6218743, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412348, z: 0.1017818, w: -0.16412257} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.6218743, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.1017818, z: 0.22439204, w: 0.1133995} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: -4.6218743, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.1017818, y: -0.16412257, z: 0.1133995, w: -0.17156968} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: -4.6218743, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.303125, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.303125, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.303125, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.303125, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.9843748, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.9843748, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.9843748, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.9843748, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -4.303125, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -4.303125, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.21875048, z: 0.5398205, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: -4.303125, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: -4.303125, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.9843748, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.9843748, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: -3.9843748, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: -3.9843748, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.6656246, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.6656246, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.6656246, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.6656246, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.3468747, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.3468747, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.3468747, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.3468747, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.6656246, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.6656246, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.6656246, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.6656246, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.3468747, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.3468747, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.3468747, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.3468747, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.0281248, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.0281248, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.0281248, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.0281248, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.709375, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.709375, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.709375, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.709375, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.0281248, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.0281248, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.0281248, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.0281248, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.709375, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.709375, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.709375, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.709375, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.6656246, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.6656246, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.6656246, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.6656246, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.3468747, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.3468747, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.3468747, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.3468747, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.6656246, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.6656246, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: -3.6656246, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: -3.6656246, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.3468747, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.3468747, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: -3.3468747, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: -3.3468747, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.0281248, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.0281248, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.0281248, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.0281248, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.709375, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.709375, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.709375, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.709375, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -3.0281248, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -3.0281248, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: -3.0281248, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: -3.0281248, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.709375, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.709375, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: -2.709375, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: -2.709375, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: 0.159375, w: 0.159375} + firstChild: 10137 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: 0.47812498, w: 0.159375} + firstChild: 10145 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: 0.79687494, w: 0.159375} + firstChild: 10153 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: 1.1156249, w: 0.159375} + firstChild: 10161 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: 1.4343749, w: 0.159375} + firstChild: 10169 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: 1.7531248, w: 0.159375} + firstChild: 10177 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: 2.0718749, w: 0.159375} + firstChild: 10185 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: 2.3906248, w: 0.159375} + firstChild: 10193 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: 2.709375, w: 0.159375} + firstChild: 10201 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: 3.0281248, w: 0.159375} + firstChild: 10209 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: 3.3468747, w: 0.159375} + firstChild: 10217 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: 3.6656246, w: 0.159375} + firstChild: 10225 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: 3.9843748, w: 0.159375} + firstChild: 10233 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: -4.9406247, y: 5.2093754, z: 4.303125, w: 0.159375} + firstChild: 10241 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: -4.9406247, y: 5.528126, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + center: {x: -4.6218743, y: 5.2093754, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.5398205, z: 0.6518314, w: 0.6518306} + center: {x: -4.6218743, y: 5.2093754, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + center: {x: -4.6218743, y: 5.528126, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.6518306, z: 0.8726768, w: 0.87267613} + center: {x: -4.6218743, y: 5.528126, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.17156953, z: -0.3820693, w: -0.40362453} + distancesB: {x: 0.22439204, y: 0.1133995, z: 0.42875254, w: 0.3825394} + center: {x: -4.9406247, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: 10249 + - distancesA: {x: -0.17156953, y: -0.3520757, z: -0.40362453, w: -0.50737983} + distancesB: {x: 0.1133995, y: -0.17156968, z: 0.3825394, w: -0.40362495} + center: {x: -4.9406247, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: -0.40362453, z: -0.6947356, w: -0.70681894} + distancesB: {x: 0.42875254, y: 0.3825394, z: 0.72146326, w: 0.6949943} + center: {x: -4.9406247, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.40362453, y: -0.50737983, z: -0.70681894, w: -0.77078843} + distancesB: {x: 0.3825394, y: -0.40362495, z: 0.6949943, w: -0.7068194} + center: {x: -4.9406247, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.1133995, z: 0.42875254, w: 0.3825394} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: -4.6218743, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.1133995, y: -0.17156968, z: 0.3825394, w: -0.40362495} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: -4.6218743, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10257 + - distancesA: {x: 0.42875254, y: 0.3825394, z: 0.72146326, w: 0.6949943} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: -4.6218743, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.3825394, y: -0.40362495, z: 0.6949943, w: -0.7068194} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: -4.6218743, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5398205, y: 0.22439204, z: 0.6518306, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: -4.303125, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: -4.303125, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10265 + - distancesA: {x: 0.6518306, y: 0.42875254, z: 0.87267613, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: -4.303125, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: -4.303125, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: -3.9843748, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: -3.9843748, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10273 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: -3.9843748, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: -3.9843748, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: -3.6656246, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: -3.6656246, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10281 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: -3.6656246, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: -3.6656246, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: -3.3468747, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: -3.3468747, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10289 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: -3.3468747, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: -3.3468747, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: -3.0281248, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: -3.0281248, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10297 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: -3.0281248, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: -3.0281248, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: -2.709375, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: -2.709375, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10305 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: -2.709375, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: -2.709375, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.3906248, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.3906248, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.3906248, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.3906248, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.0718749, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.0718749, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.0718749, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.0718749, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.3906248, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.3906248, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.3906248, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.3906248, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.0718749, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.0718749, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.0718749, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.0718749, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.7531248, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.7531248, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.7531248, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.7531248, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.4343749, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.4343749, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.4343749, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.4343749, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.7531248, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.7531248, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.7531248, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.7531248, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.4343749, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.4343749, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.4343749, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.4343749, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.3906248, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.3906248, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.3906248, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.3906248, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.0718749, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.0718749, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.0718749, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.0718749, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.3906248, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.3906248, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: -2.3906248, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: -2.3906248, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -2.0718749, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -2.0718749, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: -2.0718749, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: -2.0718749, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.7531248, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.7531248, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.7531248, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.7531248, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.4343749, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.4343749, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.4343749, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.4343749, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.7531248, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.7531248, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: -1.7531248, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: -1.7531248, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.4343749, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.4343749, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: -1.4343749, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: -1.4343749, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.1156249, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.1156249, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.1156249, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.1156249, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.79687494, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.79687494, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.79687494, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.79687494, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.1156249, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.1156249, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.1156249, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.1156249, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.79687494, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.79687494, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.79687494, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.79687494, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.47812498, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.47812498, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.47812498, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.47812498, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.159375, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.159375, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.159375, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.159375, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.47812498, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.47812498, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.47812498, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.47812498, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.159375, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.159375, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.159375, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.159375, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.1156249, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.1156249, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.1156249, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.1156249, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.79687494, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.79687494, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.79687494, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.79687494, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -1.1156249, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -1.1156249, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: -1.1156249, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: -1.1156249, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.79687494, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.79687494, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: -0.79687494, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: -0.79687494, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.47812498, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.47812498, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.47812498, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.47812498, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.159375, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.159375, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.159375, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.159375, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.47812498, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.47812498, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: -0.47812498, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: -0.47812498, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: -0.159375, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: -0.159375, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: -0.159375, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: -0.159375, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: -2.3906248, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: -2.3906248, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10313 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: -2.3906248, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: -2.3906248, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: -2.0718749, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: -2.0718749, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10321 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: -2.0718749, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: -2.0718749, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: -1.7531248, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: -1.7531248, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10329 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: -1.7531248, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: -1.7531248, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: -1.4343749, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: -1.4343749, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10337 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: -1.4343749, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: -1.4343749, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: -1.1156249, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: -1.1156249, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10345 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: -1.1156249, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: -1.1156249, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: -0.79687494, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: -0.79687494, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10353 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: -0.79687494, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: -0.79687494, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: -0.47812498, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: -0.47812498, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10361 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: -0.47812498, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: -0.47812498, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: -0.159375, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: -0.159375, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10369 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: -0.159375, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: -0.159375, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31510967, y: -0.12002672, z: -0.14368741, w: 0.13350084} + distancesB: {x: -0.31510967, y: -0.120026715, z: -0.14368741, w: 0.13350049} + center: {x: 0.159375, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002672, y: -0.049999956, z: 0.13350084, w: 0.26875004} + distancesB: {x: -0.120026715, y: -0.049999956, z: 0.13350049, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13350047, z: -0.09999991, w: 0.21875048} + center: {x: 0.159375, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350047, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: 0.159375, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31510967, y: -0.120026715, z: -0.14368741, w: 0.13350049} + distancesB: {x: -0.31510967, y: -0.120026484, z: -0.1436874, w: 0.13350049} + center: {x: 0.47812498, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026715, y: -0.049999956, z: 0.13350049, w: 0.26875004} + distancesB: {x: -0.120026484, y: -0.049999956, z: 0.13350049, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350047, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13350047, z: -0.09999991, w: 0.21875048} + center: {x: 0.47812498, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350047, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350047, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: 0.47812498, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.159375, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.159375, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.159375, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.159375, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.47812498, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.47812498, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.47812498, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.47812498, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31510967, y: -0.12002649, z: -0.14368741, w: 0.13350049} + distancesB: {x: -0.31510967, y: -0.12002649, z: -0.1436874, w: 0.13350049} + center: {x: 0.79687494, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002649, y: -0.049999956, z: 0.13350049, w: 0.26875004} + distancesB: {x: -0.12002649, y: -0.049999956, z: 0.13350049, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350047, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13350047, z: -0.09999991, w: 0.21875048} + center: {x: 0.79687494, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350047, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350047, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: 0.79687494, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31510967, y: -0.12002649, z: -0.1436874, w: 0.13350049} + distancesB: {x: -0.31510967, y: -0.120026484, z: -0.1436874, w: 0.13350084} + center: {x: 1.1156249, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002649, y: -0.049999956, z: 0.13350049, w: 0.26875004} + distancesB: {x: -0.120026484, y: -0.049999956, z: 0.13350084, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350047, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13350047, z: -0.09999991, w: 0.21875048} + center: {x: 1.1156249, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350047, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350047, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: 1.1156249, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.79687494, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.79687494, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.79687494, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.79687494, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.1156249, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.1156249, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.1156249, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.1156249, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.159375, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.159375, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.159375, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.159375, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.47812498, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.47812498, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.47812498, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.47812498, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.159375, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.159375, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.159375, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.159375, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.47812498, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.47812498, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.47812498, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.47812498, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.79687494, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.79687494, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.79687494, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.79687494, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.1156249, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.1156249, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.1156249, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.1156249, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.79687494, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.79687494, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.79687494, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.79687494, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.1156249, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.1156249, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.1156249, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.1156249, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31510967, y: -0.120026484, z: -0.1436874, w: 0.13350084} + distancesB: {x: -0.31510967, y: -0.1200265, z: -0.1436874, w: 0.13350084} + center: {x: 1.4343749, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.049999956, z: 0.13350084, w: 0.26875004} + distancesB: {x: -0.1200265, y: -0.049999956, z: 0.13350084, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350047, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13350084, z: -0.09999991, w: 0.21875048} + center: {x: 1.4343749, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350047, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350084, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: 1.4343749, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31510967, y: -0.1200265, z: -0.1436874, w: 0.13350084} + distancesB: {x: -0.31510967, y: -0.12002672, z: -0.1436874, w: 0.13350083} + center: {x: 1.7531248, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1200265, y: -0.049999956, z: 0.13350084, w: 0.26875004} + distancesB: {x: -0.12002672, y: -0.049999956, z: 0.13350083, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350084, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368787, y: 0.13350083, z: -0.09999991, w: 0.21875048} + center: {x: 1.7531248, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350084, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: 1.7531248, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.4343749, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.4343749, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.4343749, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.4343749, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.7531248, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.7531248, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.7531248, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.7531248, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31510967, y: -0.12002672, z: -0.1436874, w: 0.13350083} + distancesB: {x: -0.31510967, y: -0.120026484, z: -0.1436874, w: 0.13350084} + center: {x: 2.0718749, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002672, y: -0.049999956, z: 0.13350083, w: 0.26875004} + distancesB: {x: -0.120026484, y: -0.049999956, z: 0.13350084, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368787, y: 0.13350083, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + center: {x: 2.0718749, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: 2.0718749, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31510967, y: -0.120026484, z: -0.1436874, w: 0.13350084} + distancesB: {x: -0.31510967, y: -0.1200265, z: -0.1436874, w: 0.13350084} + center: {x: 2.3906248, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.049999956, z: 0.13350084, w: 0.26875004} + distancesB: {x: -0.1200265, y: -0.049999956, z: 0.13350084, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.1436874, y: 0.13350083, z: -0.09999991, w: 0.21875048} + center: {x: 2.3906248, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: 2.3906248, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.0718749, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.0718749, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.0718749, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.0718749, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.3906248, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.3906248, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.3906248, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.3906248, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.4343749, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.4343749, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.4343749, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.4343749, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.7531248, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.7531248, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.7531248, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.7531248, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.4343749, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.4343749, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.4343749, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.4343749, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.7531248, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.7531248, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.7531248, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.7531248, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.0718749, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.0718749, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.0718749, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.0718749, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.3906248, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.3906248, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.3906248, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.3906248, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.0718749, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.0718749, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.0718749, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.0718749, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.3906248, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.3906248, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.3906248, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.3906248, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31510967, y: -0.1200265, z: -0.14368741, w: 0.13350084} + distancesB: {x: -0.31510967, y: -0.120026484, z: -0.14368741, w: 0.13350084} + center: {x: 2.709375, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1200265, y: -0.049999956, z: 0.13350084, w: 0.26875004} + distancesB: {x: -0.120026484, y: -0.049999956, z: 0.13350084, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + center: {x: 2.709375, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: 2.709375, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.31510967, y: -0.120026484, z: -0.14368741, w: 0.13350084} + distancesB: {x: -0.3151093, y: -0.12002649, z: -0.14368741, w: 0.13350084} + center: {x: 3.0281248, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.049999956, z: 0.13350084, w: 0.26875004} + distancesB: {x: -0.12002649, y: -0.049999956, z: 0.13350084, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + center: {x: 3.0281248, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: 3.0281248, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.709375, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.709375, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.709375, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.709375, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.0281248, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.0281248, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.0281248, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.0281248, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.12002649, z: -0.14368741, w: 0.13350084} + distancesB: {x: -0.3151093, y: -0.12002672, z: -0.14368741, w: 0.13350084} + center: {x: 3.3468747, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002649, y: -0.049999956, z: 0.13350084, w: 0.26875004} + distancesB: {x: -0.12002672, y: -0.049999956, z: 0.13350084, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + center: {x: 3.3468747, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: 3.3468747, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.12002672, z: -0.14368741, w: 0.13350084} + distancesB: {x: -0.3151093, y: -0.120026484, z: -0.1436874, w: 0.13350084} + center: {x: 3.6656246, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002672, y: -0.049999956, z: 0.13350084, w: 0.26875004} + distancesB: {x: -0.120026484, y: -0.049999956, z: 0.13350084, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + center: {x: 3.6656246, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: 3.6656246, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.3468747, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.3468747, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.3468747, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.3468747, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.6656246, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.6656246, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.6656246, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.6656246, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.709375, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.709375, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.709375, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.709375, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.0281248, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.0281248, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.0281248, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.0281248, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.709375, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.709375, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.709375, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.709375, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.0281248, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.0281248, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.0281248, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.0281248, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.3468747, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.3468747, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.3468747, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.3468747, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.6656246, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.6656246, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.6656246, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.6656246, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.3468747, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.3468747, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.3468747, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.3468747, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.6656246, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.6656246, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.6656246, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.6656246, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.1200265, z: -0.1436874, w: 0.13350084} + distancesB: {x: -0.3151093, y: -0.120026484, z: -0.1436874, w: 0.13350084} + center: {x: 3.9843748, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1200265, y: -0.049999956, z: 0.13350084, w: 0.26875004} + distancesB: {x: -0.120026484, y: -0.049999956, z: 0.13350084, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + center: {x: 3.9843748, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + center: {x: 3.9843748, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.120026484, z: -0.1436874, w: 0.13350084} + distancesB: {x: -0.3151093, y: -0.1200265, z: -0.1436874, w: 0.13350084} + center: {x: 4.303125, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.049999956, z: 0.13350084, w: 0.26875004} + distancesB: {x: -0.1200265, y: -0.049999956, z: 0.13350084, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + center: {x: 4.303125, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.9843748, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.9843748, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.9843748, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.9843748, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 4.303125, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + center: {x: 4.303125, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 4.303125, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + center: {x: 4.303125, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3151093, y: -0.120026484, z: -0.1436874, w: 0.13350084} + distancesB: {x: -0.3631176, y: -0.18227313, z: -0.20391569, w: 0.035077635} + center: {x: 4.6218743, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.049999956, z: 0.13350084, w: 0.26875004} + distancesB: {x: -0.18227313, y: -0.12004272, z: 0.035077635, w: 0.1335152} + center: {x: 4.6218743, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.14368741, y: 0.13350083, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.20391569, y: 0.035077628, z: -0.16412279, w: 0.10178145} + center: {x: 4.6218743, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.26875, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.035077628, y: 0.13351516, z: 0.10178145, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3631176, y: -0.18227313, z: -0.20391569, w: 0.035077635} + distancesB: {x: -0.51686305, y: -0.36311758, z: -0.38181642, w: -0.20391886} + center: {x: 4.9406247, y: 0.109375045, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.18227313, y: -0.12004272, z: 0.035077635, w: 0.1335152} + distancesB: {x: -0.36311758, y: -0.31511572, z: -0.20391886, w: -0.14369535} + center: {x: 4.9406247, y: 0.109375045, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.20391569, y: 0.035077628, z: -0.16412279, w: 0.10178145} + distancesB: {x: -0.38181642, y: -0.2039191, z: -0.34850723, w: -0.16412257} + center: {x: 4.9406247, y: 0.42812502, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.035077628, y: 0.13351516, z: 0.10178145, w: 0.21875048} + distancesB: {x: -0.2039191, y: -0.14369535, z: -0.16412257, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.12004279, y: -0.12013312, z: 0.1335152, w: 0.13359644} + center: {x: 4.6218743, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.12013312, y: -0.1200525, z: 0.13359644, w: 0.13352399} + center: {x: 4.6218743, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.5375008} + distancesB: {x: 0.13351518, y: 0.1335964, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.1335964, y: 0.13352397, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12004279, y: -0.12013312, z: 0.1335152, w: 0.13359644} + distancesB: {x: -0.31511572, y: -0.31511006, z: -0.14369535, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12013312, y: -0.1200525, z: 0.13359644, w: 0.13352399} + distancesB: {x: -0.31511006, y: -0.3151093, z: -0.1436874, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13351518, y: 0.1335964, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14369535, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.1335964, y: 0.13352397, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.16412279, y: 0.10178145, z: -0.16412216, w: 0.10178145} + center: {x: 4.6218743, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.16412216, y: 0.10178145, z: -0.16412236, w: 0.10178145} + center: {x: 4.6218743, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412279, y: 0.10178145, z: -0.16412216, w: 0.10178145} + distancesB: {x: -0.34850723, y: -0.16412257, z: -0.34850723, w: -0.16412279} + center: {x: 4.9406247, y: 0.746875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: -0.16412257, y: -0.09999991, z: -0.16412279, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412216, y: 0.10178145, z: -0.16412236, w: 0.10178145} + distancesB: {x: -0.34850723, y: -0.16412279, z: -0.34850723, w: -0.16412258} + center: {x: 4.9406247, y: 1.065625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: -0.16412279, y: -0.09999991, z: -0.16412258, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.12030248, y: -0.120156296, z: 0.1337488, w: 0.13361731} + center: {x: 4.6218743, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.120156296, y: -0.12006461, z: 0.13361731, w: 0.13353513} + center: {x: 4.6218743, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13374877, y: 0.13361728, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13361728, y: 0.13353512, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12030248, y: -0.120156296, z: 0.1337488, w: 0.13361731} + distancesB: {x: -0.3151093, y: -0.3151093, z: -0.1436874, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120156296, y: -0.12006461, z: 0.13361731, w: 0.13353513} + distancesB: {x: -0.3151093, y: -0.3151093, z: -0.1436874, w: -0.14368741} + center: {x: 4.9406247, y: 0.109375045, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13374877, y: 0.13361728, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.1436874, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13361728, y: 0.13353512, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.12006461, y: -0.12018183, z: 0.13353513, w: 0.13364027} + center: {x: 4.6218743, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.12018183, y: -0.12007892, z: 0.13364027, w: 0.13354774} + center: {x: 4.6218743, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13353512, y: 0.13364026, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13364026, y: 0.13354771, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12006461, y: -0.12018183, z: 0.13353513, w: 0.13364027} + distancesB: {x: -0.3151093, y: -0.3151093, z: -0.14368741, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12018183, y: -0.12007892, z: 0.13364027, w: 0.13354774} + distancesB: {x: -0.3151093, y: -0.3151093, z: -0.1436874, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13353512, y: 0.13364026, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.1436874, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13364026, y: 0.13354771, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.1436874, y: -0.1436874, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.9843748, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.9843748, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.9843748, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.9843748, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 4.303125, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + center: {x: 4.303125, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 4.303125, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + center: {x: 4.303125, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.9843748, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.9843748, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.9843748, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.9843748, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 4.303125, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + center: {x: 4.303125, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 4.303125, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + center: {x: 4.303125, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.16412236, y: 0.10178145, z: -0.16412216, w: 0.10178145} + center: {x: 4.6218743, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.16412216, y: 0.10178145, z: -0.16412236, w: 0.101781085} + center: {x: 4.6218743, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.101781085, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412236, y: 0.10178145, z: -0.16412216, w: 0.10178145} + distancesB: {x: -0.34850723, y: -0.16412258, z: -0.34850723, w: -0.16412267} + center: {x: 4.9406247, y: 1.384375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: -0.16412258, y: -0.09999991, z: -0.16412267, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412216, y: 0.10178145, z: -0.16412236, w: 0.101781085} + distancesB: {x: -0.34850723, y: -0.16412267, z: -0.34850723, w: -0.16412228} + center: {x: 4.9406247, y: 1.7031249, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.101781085, w: 0.21875048} + distancesB: {x: -0.16412267, y: -0.09999991, z: -0.16412228, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.16412236, y: 0.101781085, z: -0.16412279, w: 0.10178145} + center: {x: 4.6218743, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.101781085, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.16412279, y: 0.10178145, z: -0.16412257, w: 0.10178145} + center: {x: 4.6218743, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412236, y: 0.101781085, z: -0.16412279, w: 0.10178145} + distancesB: {x: -0.34850723, y: -0.16412228, z: -0.34850723, w: -0.16412239} + center: {x: 4.9406247, y: 2.021875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.101781085, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: -0.16412228, y: -0.09999991, z: -0.16412239, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412279, y: 0.10178145, z: -0.16412257, w: 0.10178145} + distancesB: {x: -0.34850723, y: -0.16412239, z: -0.34850723, w: -0.16412286} + center: {x: 4.9406247, y: 2.3406248, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: -0.16412239, y: -0.09999991, z: -0.16412286, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.120078914, y: -0.12003061, z: 0.13354772, w: 0.13350426} + center: {x: 4.6218743, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.12003061, y: -0.12003688, z: 0.13350426, w: 0.13350989} + center: {x: 4.6218743, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13354771, y: 0.13350424, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350424, y: 0.13350987, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120078914, y: -0.12003061, z: 0.13354772, w: 0.13350426} + distancesB: {x: -0.3151093, y: -0.3151093, z: -0.1436874, w: -0.14368787} + center: {x: 4.9406247, y: 0.109375045, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12003061, y: -0.12003688, z: 0.13350426, w: 0.13350989} + distancesB: {x: -0.3151093, y: -0.3151093, z: -0.14368787, w: -0.14368741} + center: {x: 4.9406247, y: 0.109375045, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13354771, y: 0.13350424, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.1436874, y: -0.14368787, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350424, y: 0.13350987, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368787, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.12003688, y: -0.12003608, z: 0.13350989, w: 0.13350917} + center: {x: 4.6218743, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.12003608, y: -0.120031156, z: 0.13350917, w: 0.13350473} + center: {x: 4.6218743, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350989, y: 0.13350916, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350916, y: 0.13350472, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12003688, y: -0.12003608, z: 0.13350989, w: 0.13350917} + distancesB: {x: -0.3151093, y: -0.3151093, z: -0.14368741, w: -0.14368741} + center: {x: 4.9406247, y: 0.109375045, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12003608, y: -0.120031156, z: 0.13350917, w: 0.13350473} + distancesB: {x: -0.3151093, y: -0.3151093, z: -0.14368741, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350989, y: 0.13350916, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350916, y: 0.13350472, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.120031156, y: -0.120026484, z: 0.13350473, w: 0.13351619} + center: {x: 4.6218743, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.120026484, y: -0.120026484, z: 0.13351619, w: 0.13352044} + center: {x: 4.6218743, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350472, y: 0.13351616, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13351616, y: 0.13352044, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120031156, y: -0.120026484, z: 0.13350473, w: 0.13351619} + distancesB: {x: -0.3151093, y: -0.3151093, z: -0.1436874, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.120026484, z: 0.13351619, w: 0.13352044} + distancesB: {x: -0.3151093, y: -0.3151093, z: -0.1436874, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350472, y: 0.13351616, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.1436874, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13351616, y: 0.13352044, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.1436874, y: -0.1436874, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.120026484, y: -0.12002649, z: 0.13352044, w: 0.13352522} + center: {x: 4.6218743, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.12002649, y: -0.12002672, z: 0.13352522, w: 0.13350084} + center: {x: 4.6218743, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13352044, y: 0.1335252, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.1335252, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.12002649, z: 0.13352044, w: 0.13352522} + distancesB: {x: -0.3151093, y: -0.3151093, z: -0.1436874, w: -0.14368741} + center: {x: 4.9406247, y: 0.109375045, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002649, y: -0.12002672, z: 0.13352522, w: 0.13350084} + distancesB: {x: -0.3151093, y: -0.31510967, z: -0.14368741, w: -0.14368741} + center: {x: 4.9406247, y: 0.109375045, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13352044, y: 0.1335252, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.1436874, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.1335252, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.159375, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.159375, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.47812498, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.47812498, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 0.79687494, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 0.79687494, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.1156249, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.1156249, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.4343749, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.4343749, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 1.7531248, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 1.7531248, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.0718749, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.0718749, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.3906248, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.3906248, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.159375, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.159375, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: 0.159375, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.47812498, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.47812498, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: 0.47812498, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12002655, z: 0.26875004, w: 0.1335009} + distancesB: {x: -0.049999956, y: -0.120026834, z: 0.26875004, w: 0.13350083} + center: {x: 0.159375, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002655, y: -0.31510958, z: 0.1335009, w: -0.14368732} + distancesB: {x: -0.120026834, y: -0.31510967, z: 0.13350083, w: -0.14368756} + center: {x: 0.159375, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350089, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + center: {x: 0.159375, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350089, y: -0.14368732, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350083, y: -0.14368756, z: 0.21875048, w: -0.09999991} + center: {x: 0.159375, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.120026834, z: 0.26875004, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.1200277, z: 0.26875004, w: 0.13350083} + center: {x: 0.47812498, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026834, y: -0.31510967, z: 0.13350083, w: -0.14368756} + distancesB: {x: -0.1200277, y: -0.31511, z: 0.13350083, w: -0.14368841} + center: {x: 0.47812498, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + center: {x: 0.47812498, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: -0.14368756, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350083, y: -0.14368843, z: 0.21875048, w: -0.09999991} + center: {x: 0.47812498, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.159375, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.159375, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.159375, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.159375, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.47812498, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.47812498, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.47812498, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.47812498, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 0.79687494, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 0.79687494, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: 0.79687494, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.1156249, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.1156249, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: 1.1156249, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.1200277, z: 0.26875004, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.12002914, z: 0.26875004, w: 0.13350083} + center: {x: 0.79687494, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1200277, y: -0.31511, z: 0.13350083, w: -0.14368829} + distancesB: {x: -0.12002914, y: -0.31511053, z: 0.13350083, w: -0.14368974} + center: {x: 0.79687494, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + center: {x: 0.79687494, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: -0.14368829, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350083, y: -0.14368974, z: 0.21875048, w: -0.09999991} + center: {x: 0.79687494, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12002914, z: 0.26875004, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.120026715, z: 0.26875004, w: 0.13350083} + center: {x: 1.1156249, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002914, y: -0.31511053, z: 0.13350083, w: -0.14368974} + distancesB: {x: -0.120026715, y: -0.31511137, z: 0.13350083, w: -0.1436914} + center: {x: 1.1156249, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + center: {x: 1.1156249, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: -0.14368974, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350083, y: -0.14369142, z: 0.21875048, w: -0.09999991} + center: {x: 1.1156249, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.79687494, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.79687494, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.79687494, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.79687494, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.1156249, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.1156249, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.1156249, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.1156249, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.159375, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.159375, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.159375, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.159375, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.47812498, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.47812498, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.47812498, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.47812498, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.159375, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.159375, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.159375, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.159375, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.47812498, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.47812498, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.47812498, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.47812498, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.79687494, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.79687494, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.79687494, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.79687494, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.1156249, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.1156249, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.1156249, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.1156249, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.79687494, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.79687494, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.79687494, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.79687494, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.1156249, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.1156249, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.1156249, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.1156249, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.4343749, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.4343749, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: 1.4343749, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 1.7531248, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 1.7531248, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: 1.7531248, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12002672, z: 0.26875004, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.120026715, z: 0.26875004, w: 0.13350083} + center: {x: 1.4343749, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002672, y: -0.31511137, z: 0.13350083, w: -0.1436914} + distancesB: {x: -0.120026715, y: -0.31511235, z: 0.13350083, w: -0.14369357} + center: {x: 1.4343749, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + center: {x: 1.4343749, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: -0.14369142, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350083, y: -0.14369358, z: 0.21875048, w: -0.09999991} + center: {x: 1.4343749, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.120026715, z: 0.26875004, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.12002649, z: 0.26875004, w: 0.13350083} + center: {x: 1.7531248, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026715, y: -0.31511235, z: 0.13350083, w: -0.14369357} + distancesB: {x: -0.12002649, y: -0.31511354, z: 0.13350083, w: -0.14369619} + center: {x: 1.7531248, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + center: {x: 1.7531248, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: -0.14369358, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350083, y: -0.1436962, z: 0.21875048, w: -0.09999991} + center: {x: 1.7531248, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.4343749, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.4343749, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.4343749, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.4343749, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.7531248, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.7531248, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.7531248, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.7531248, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.0718749, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.0718749, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: 2.0718749, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.3906248, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.3906248, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: 2.3906248, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12002649, z: 0.26875004, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.120026484, z: 0.26875004, w: 0.13350083} + center: {x: 2.0718749, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002649, y: -0.31511354, z: 0.13350083, w: -0.14369619} + distancesB: {x: -0.120026484, y: -0.31511497, z: 0.13350083, w: -0.14369932} + center: {x: 2.0718749, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + center: {x: 2.0718749, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: -0.1436962, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350083, y: -0.14369933, z: 0.21875048, w: -0.09999991} + center: {x: 2.0718749, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.120026484, z: 0.26875004, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.120026484, z: 0.26875004, w: 0.13350084} + center: {x: 2.3906248, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.31511497, z: 0.13350083, w: -0.14369932} + distancesB: {x: -0.120026484, y: -0.31511015, z: 0.13350084, w: -0.14368922} + center: {x: 2.3906248, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + center: {x: 2.3906248, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: -0.14369933, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350083, y: -0.14368923, z: 0.21875048, w: -0.09999991} + center: {x: 2.3906248, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.0718749, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.0718749, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.0718749, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.0718749, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.3906248, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.3906248, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.3906248, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.3906248, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.4343749, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.4343749, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.4343749, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.4343749, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.7531248, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.7531248, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.7531248, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.7531248, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.4343749, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.4343749, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.4343749, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.4343749, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.7531248, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.7531248, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.7531248, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.7531248, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.0718749, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.0718749, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.0718749, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.0718749, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.3906248, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.3906248, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.3906248, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.3906248, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.0718749, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.0718749, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.0718749, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.0718749, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.3906248, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.3906248, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.3906248, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.3906248, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 2.709375, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 2.709375, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.0281248, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.0281248, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.3468747, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.3468747, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.6656246, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.6656246, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 3.9843748, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 3.9843748, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + distancesB: {x: -0.6874999, y: -0.6874999, z: -0.3687499, w: -0.3687499} + center: {x: 4.303125, y: -0.5281249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + distancesB: {x: -0.36874995, y: -0.36874995, z: -0.049999956, w: -0.049999956} + center: {x: 4.303125, y: -0.20937495, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.12002672, y: -0.120026715, z: 0.13350084, w: 0.13350049} + center: {x: 4.6218743, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.120026715, y: -0.120026484, z: 0.13350049, w: 0.13350049} + center: {x: 4.6218743, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.13350047, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350047, y: 0.13350047, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002672, y: -0.120026715, z: 0.13350084, w: 0.13350049} + distancesB: {x: -0.31510967, y: -0.31510967, z: -0.14368741, w: -0.14368741} + center: {x: 4.9406247, y: 0.109375045, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026715, y: -0.120026484, z: 0.13350049, w: 0.13350049} + distancesB: {x: -0.31510967, y: -0.31510967, z: -0.14368741, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350047, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350047, y: 0.13350047, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.12002649, y: -0.12002649, z: 0.13350049, w: 0.13350049} + center: {x: 4.6218743, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.12002649, y: -0.120026484, z: 0.13350049, w: 0.13350084} + center: {x: 4.6218743, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350047, y: 0.13350047, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350047, y: 0.13350047, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002649, y: -0.12002649, z: 0.13350049, w: 0.13350049} + distancesB: {x: -0.31510967, y: -0.31510967, z: -0.14368741, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002649, y: -0.120026484, z: 0.13350049, w: 0.13350084} + distancesB: {x: -0.31510967, y: -0.31510967, z: -0.1436874, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350047, y: 0.13350047, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350047, y: 0.13350047, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.120026484, y: -0.1200265, z: 0.13350084, w: 0.13350084} + center: {x: 4.6218743, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.1200265, y: -0.12002672, z: 0.13350084, w: 0.13350083} + center: {x: 4.6218743, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350047, y: 0.13350084, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350084, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.1200265, z: 0.13350084, w: 0.13350084} + distancesB: {x: -0.31510967, y: -0.31510967, z: -0.1436874, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1200265, y: -0.12002672, z: 0.13350084, w: 0.13350083} + distancesB: {x: -0.31510967, y: -0.31510967, z: -0.1436874, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350047, y: 0.13350084, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350084, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368787, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.12002672, y: -0.120026484, z: 0.13350083, w: 0.13350084} + center: {x: 4.6218743, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.120026484, y: -0.1200265, z: 0.13350084, w: 0.13350084} + center: {x: 4.6218743, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002672, y: -0.120026484, z: 0.13350083, w: 0.13350084} + distancesB: {x: -0.31510967, y: -0.31510967, z: -0.1436874, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.1200265, z: 0.13350084, w: 0.13350084} + distancesB: {x: -0.31510967, y: -0.31510967, z: -0.1436874, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368787, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.1436874, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 2.709375, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 2.709375, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: 2.709375, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.0281248, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.0281248, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: 3.0281248, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12002649, z: 0.26875004, w: 0.13350084} + distancesB: {x: -0.049999956, y: -0.12002672, z: 0.26875004, w: 0.13350083} + center: {x: 2.709375, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002649, y: -0.31511036, z: 0.13350084, w: -0.14368922} + distancesB: {x: -0.12002672, y: -0.31511104, z: 0.13350083, w: -0.1436907} + center: {x: 2.709375, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + center: {x: 2.709375, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: -0.14368923, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350083, y: -0.14369072, z: 0.21875048, w: -0.09999991} + center: {x: 2.709375, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12002672, z: 0.26875004, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.12002672, z: 0.26875004, w: 0.13350083} + center: {x: 3.0281248, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002672, y: -0.31511104, z: 0.13350083, w: -0.1436907} + distancesB: {x: -0.12002672, y: -0.31511003, z: 0.13350083, w: -0.14368846} + center: {x: 3.0281248, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + center: {x: 3.0281248, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: -0.14369072, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350083, y: -0.14368847, z: 0.21875048, w: -0.09999991} + center: {x: 3.0281248, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.709375, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.709375, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.709375, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.709375, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.0281248, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.0281248, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.0281248, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.0281248, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.3468747, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.3468747, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: 3.3468747, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.6656246, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.6656246, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: 3.6656246, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12002672, z: 0.26875004, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.120026484, z: 0.26875004, w: 0.13350083} + center: {x: 3.3468747, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002672, y: -0.31511003, z: 0.13350083, w: -0.14368846} + distancesB: {x: -0.120026484, y: -0.31511047, z: 0.13350083, w: -0.14368962} + center: {x: 3.3468747, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + center: {x: 3.3468747, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: -0.14368847, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350083, y: -0.14368963, z: 0.21875048, w: -0.09999991} + center: {x: 3.3468747, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.120026484, z: 0.26875004, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.120026484, z: 0.26875004, w: 0.13350083} + center: {x: 3.6656246, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.31511047, z: 0.13350083, w: -0.14368962} + distancesB: {x: -0.120026484, y: -0.31510928, z: 0.13350083, w: -0.14368758} + center: {x: 3.6656246, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + center: {x: 3.6656246, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: -0.14368963, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350083, y: -0.1436876, z: 0.21875048, w: -0.09999991} + center: {x: 3.6656246, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.3468747, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.3468747, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.3468747, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.3468747, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.6656246, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.6656246, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.6656246, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.6656246, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.709375, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.709375, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.709375, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.709375, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.0281248, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.0281248, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.0281248, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.0281248, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.709375, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.709375, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.709375, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.709375, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.0281248, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.0281248, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.0281248, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.0281248, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.3468747, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.3468747, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.3468747, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.3468747, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.6656246, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.6656246, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.6656246, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.6656246, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.3468747, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.3468747, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.3468747, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.3468747, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.6656246, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.6656246, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.6656246, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.6656246, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.1200265, y: -0.120026484, z: 0.13350084, w: 0.13350084} + center: {x: 4.6218743, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.120026484, y: -0.12002649, z: 0.13350084, w: 0.13350084} + center: {x: 4.6218743, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1200265, y: -0.120026484, z: 0.13350084, w: 0.13350084} + distancesB: {x: -0.31510967, y: -0.31510967, z: -0.14368741, w: -0.14368741} + center: {x: 4.9406247, y: 0.109375045, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.12002649, z: 0.13350084, w: 0.13350084} + distancesB: {x: -0.31510967, y: -0.3151093, z: -0.14368741, w: -0.14368741} + center: {x: 4.9406247, y: 0.109375045, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.12002649, y: -0.12002672, z: 0.13350084, w: 0.13350084} + center: {x: 4.6218743, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.12002672, y: -0.120026484, z: 0.13350084, w: 0.13350084} + center: {x: 4.6218743, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002649, y: -0.12002672, z: 0.13350084, w: 0.13350084} + distancesB: {x: -0.3151093, y: -0.3151093, z: -0.14368741, w: -0.14368741} + center: {x: 4.9406247, y: 0.109375045, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002672, y: -0.120026484, z: 0.13350084, w: 0.13350084} + distancesB: {x: -0.3151093, y: -0.3151093, z: -0.14368741, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 3.9843748, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + center: {x: 3.9843748, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + center: {x: 3.9843748, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + center: {x: 4.303125, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.5875} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5875, w: 0.53749996} + distancesB: {x: 0.26875, y: 0.26875, z: 0.53749996, w: 0.53749996} + center: {x: 4.303125, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.120026484, z: 0.26875004, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.120026484, z: 0.26875004, w: 0.13350083} + center: {x: 3.9843748, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.31510928, z: 0.13350083, w: -0.14368758} + distancesB: {x: -0.120026484, y: -0.3151093, z: 0.13350083, w: -0.14368747} + center: {x: 3.9843748, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + center: {x: 3.9843748, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: -0.1436876, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350083, y: -0.14368749, z: 0.21875048, w: -0.09999991} + center: {x: 3.9843748, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.120026484, z: 0.26875004, w: 0.13350083} + distancesB: {x: -0.049999956, y: -0.12002672, z: 0.26875004, w: 0.13350083} + center: {x: 4.303125, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.3151093, z: 0.13350083, w: -0.14368747} + distancesB: {x: -0.12002672, y: -0.3151093, z: 0.13350083, w: -0.14368741} + center: {x: 4.303125, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.26875, y: 0.13350083, z: 0.53749996, w: 0.21875048} + center: {x: 4.303125, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: -0.14368749, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.13350083, y: -0.14368741, z: 0.21875048, w: -0.09999991} + center: {x: 4.303125, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.9843748, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.9843748, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.9843748, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.9843748, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + center: {x: 4.303125, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 4.303125, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + center: {x: 4.303125, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 4.303125, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.1200265, y: -0.120026484, z: 0.13350084, w: 0.13350084} + center: {x: 4.6218743, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.049999956, z: 0.26875004, w: 0.26875004} + distancesB: {x: -0.120026484, y: -0.1200265, z: 0.13350084, w: 0.13350084} + center: {x: 4.6218743, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.26875, z: 0.5375008, w: 0.53749996} + distancesB: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1200265, y: -0.120026484, z: 0.13350084, w: 0.13350084} + distancesB: {x: -0.3151093, y: -0.3151093, z: -0.1436874, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.1200265, z: 0.13350084, w: 0.13350084} + distancesB: {x: -0.3151093, y: -0.3151093, z: -0.1436874, w: -0.1436874} + center: {x: 4.9406247, y: 0.109375045, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.13350083, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.14368741, y: -0.14368741, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.42812502, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.049999956, y: -0.12002672, z: 0.26875004, w: 0.13350083} + distancesB: {x: -0.120026484, y: -0.18227313, z: 0.13350084, w: 0.035077635} + center: {x: 4.6218743, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.12002672, y: -0.3151093, z: 0.13350083, w: -0.14368741} + distancesB: {x: -0.18227313, y: -0.36311758, z: 0.035077635, w: -0.20391886} + center: {x: 4.6218743, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.26875, y: 0.13350083, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.13350083, y: 0.035077628, z: 0.21875048, w: 0.10178145} + center: {x: 4.6218743, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: -0.14368741, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.035077628, y: -0.2039191, z: 0.10178145, w: -0.16412257} + center: {x: 4.6218743, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.120026484, y: -0.18227313, z: 0.13350084, w: 0.035077635} + distancesB: {x: -0.3151093, y: -0.3631176, z: -0.1436874, w: -0.20391569} + center: {x: 4.9406247, y: 0.109375045, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.18227313, y: -0.36311758, z: 0.035077635, w: -0.20391886} + distancesB: {x: -0.3631176, y: -0.51686305, z: -0.20391569, w: -0.38181642} + center: {x: 4.9406247, y: 0.109375045, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.13350083, y: 0.035077628, z: 0.21875048, w: 0.10178145} + distancesB: {x: -0.14368741, y: -0.20391569, z: -0.09999991, w: -0.16412279} + center: {x: 4.9406247, y: 0.42812502, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.035077628, y: -0.2039191, z: 0.10178145, w: -0.16412257} + distancesB: {x: -0.20391569, y: -0.38181642, z: -0.16412279, w: -0.34850723} + center: {x: 4.9406247, y: 0.42812502, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 0.746875, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.065625, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 0.746875, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.065625, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: 4.6218743, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.10178145, y: -0.16412257, z: 0.10178145, w: -0.16412279} + center: {x: 4.6218743, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: 4.6218743, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.10178145, y: -0.16412279, z: 0.10178145, w: -0.16412258} + center: {x: 4.6218743, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: -0.09999991, y: -0.16412279, z: -0.09999991, w: -0.16412216} + center: {x: 4.9406247, y: 0.746875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412257, z: 0.10178145, w: -0.16412279} + distancesB: {x: -0.16412279, y: -0.34850723, z: -0.16412216, w: -0.34850723} + center: {x: 4.9406247, y: 0.746875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: -0.09999991, y: -0.16412216, z: -0.09999991, w: -0.16412236} + center: {x: 4.9406247, y: 1.065625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412279, z: 0.10178145, w: -0.16412258} + distancesB: {x: -0.16412216, y: -0.34850723, z: -0.16412236, w: -0.34850723} + center: {x: 4.9406247, y: 1.065625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.9843748, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.9843748, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.9843748, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.9843748, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + center: {x: 4.303125, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 4.303125, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + center: {x: 4.303125, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 4.303125, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.9843748, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.9843748, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.9843748, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.9843748, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + center: {x: 4.303125, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 4.303125, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + center: {x: 4.303125, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 4.303125, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.384375, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 1.7031249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.384375, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 1.7031249, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: 4.6218743, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.10178145, y: -0.16412258, z: 0.10178145, w: -0.16412267} + center: {x: 4.6218743, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.101781085} + center: {x: 4.6218743, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.10178145, y: -0.16412267, z: 0.101781085, w: -0.16412228} + center: {x: 4.6218743, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: -0.09999991, y: -0.16412236, z: -0.09999991, w: -0.16412216} + center: {x: 4.9406247, y: 1.384375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412258, z: 0.10178145, w: -0.16412267} + distancesB: {x: -0.16412236, y: -0.34850723, z: -0.16412216, w: -0.34850723} + center: {x: 4.9406247, y: 1.384375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.101781085} + distancesB: {x: -0.09999991, y: -0.16412216, z: -0.09999991, w: -0.16412236} + center: {x: 4.9406247, y: 1.7031249, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412267, z: 0.101781085, w: -0.16412228} + distancesB: {x: -0.16412216, y: -0.34850723, z: -0.16412236, w: -0.34850723} + center: {x: 4.9406247, y: 1.7031249, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.021875, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.3406248, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.021875, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.3406248, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.101781085, z: 0.21875048, w: 0.10178145} + center: {x: 4.6218743, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.101781085, y: -0.16412228, z: 0.10178145, w: -0.16412239} + center: {x: 4.6218743, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: 4.6218743, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.10178145, y: -0.16412239, z: 0.10178145, w: -0.16412286} + center: {x: 4.6218743, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.101781085, z: 0.21875048, w: 0.10178145} + distancesB: {x: -0.09999991, y: -0.16412236, z: -0.09999991, w: -0.16412279} + center: {x: 4.9406247, y: 2.021875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.101781085, y: -0.16412228, z: 0.10178145, w: -0.16412239} + distancesB: {x: -0.16412236, y: -0.34850723, z: -0.16412279, w: -0.34850723} + center: {x: 4.9406247, y: 2.021875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: -0.09999991, y: -0.16412279, z: -0.09999991, w: -0.16412257} + center: {x: 4.9406247, y: 2.3406248, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412239, z: 0.10178145, w: -0.16412286} + distancesB: {x: -0.16412279, y: -0.34850723, z: -0.16412257, w: -0.34850723} + center: {x: 4.9406247, y: 2.3406248, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.159375, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.159375, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.159375, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.159375, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.47812498, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.47812498, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.47812498, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.47812498, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.159375, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.159375, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.159375, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.159375, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.47812498, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.47812498, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.47812498, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.47812498, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.79687494, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.79687494, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.79687494, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.79687494, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.1156249, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.1156249, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.1156249, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.1156249, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.79687494, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.79687494, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.79687494, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.79687494, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.1156249, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.1156249, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.1156249, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.1156249, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.159375, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.159375, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.159375, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.159375, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.47812498, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.47812498, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.47812498, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.47812498, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.159375, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.159375, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: 0.159375, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: 0.159375, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.47812498, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.47812498, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: 0.47812498, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: 0.47812498, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.79687494, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.79687494, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.79687494, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.79687494, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.1156249, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.1156249, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.1156249, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.1156249, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 0.79687494, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 0.79687494, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: 0.79687494, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: 0.79687494, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.1156249, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.1156249, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: 1.1156249, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: 1.1156249, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.4343749, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.4343749, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.4343749, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.4343749, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.7531248, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.7531248, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.7531248, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.7531248, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.4343749, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.4343749, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.4343749, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.4343749, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.7531248, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.7531248, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.7531248, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.7531248, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.0718749, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.0718749, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.0718749, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.0718749, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.3906248, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.3906248, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.3906248, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.3906248, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.0718749, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.0718749, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.0718749, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.0718749, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.3906248, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.3906248, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.3906248, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.3906248, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.4343749, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.4343749, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.4343749, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.4343749, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.7531248, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.7531248, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.7531248, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.7531248, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.4343749, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.4343749, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: 1.4343749, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: 1.4343749, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 1.7531248, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 1.7531248, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: 1.7531248, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: 1.7531248, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.0718749, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.0718749, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.0718749, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.0718749, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.3906248, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.3906248, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.3906248, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.3906248, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.0718749, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.0718749, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: 2.0718749, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: 2.0718749, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.3906248, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.3906248, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: 2.3906248, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: 2.3906248, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: 0.159375, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10377 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: 0.159375, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: 0.159375, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: 0.159375, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: 0.47812498, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10385 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: 0.47812498, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: 0.47812498, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: 0.47812498, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: 0.79687494, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10393 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: 0.79687494, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: 0.79687494, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: 0.79687494, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: 1.1156249, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10401 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: 1.1156249, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: 1.1156249, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: 1.1156249, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: 1.4343749, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10409 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: 1.4343749, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: 1.4343749, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: 1.4343749, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: 1.7531248, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10417 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: 1.7531248, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: 1.7531248, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: 1.7531248, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: 2.0718749, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10425 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: 2.0718749, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: 2.0718749, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: 2.0718749, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: 2.3906248, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10433 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: 2.3906248, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: 2.3906248, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: 2.3906248, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.709375, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.709375, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.709375, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.709375, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.0281248, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.0281248, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.0281248, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.0281248, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.709375, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.709375, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.709375, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.709375, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.0281248, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.0281248, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.0281248, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.0281248, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.3468747, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.3468747, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.3468747, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.3468747, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.6656246, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.6656246, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.6656246, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.6656246, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.3468747, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.3468747, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.3468747, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.3468747, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.6656246, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.6656246, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.6656246, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.6656246, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.709375, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.709375, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.709375, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.709375, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.0281248, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.0281248, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.0281248, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.0281248, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 2.709375, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 2.709375, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: 2.709375, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: 2.709375, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.0281248, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.0281248, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: 3.0281248, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: 3.0281248, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.3468747, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.3468747, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.3468747, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.3468747, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.6656246, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.6656246, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.6656246, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.6656246, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.3468747, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.3468747, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: 3.3468747, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: 3.3468747, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.6656246, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.6656246, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: 3.6656246, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: 3.6656246, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.9843748, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.9843748, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.9843748, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.9843748, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 4.303125, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + center: {x: 4.303125, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 4.303125, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + center: {x: 4.303125, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.9843748, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.9843748, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.9843748, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.9843748, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 4.303125, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + center: {x: 4.303125, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 4.303125, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + center: {x: 4.303125, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.16412257, y: 0.10178145, z: -0.16412279, w: 0.10178145} + center: {x: 4.6218743, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.16412279, y: 0.10178145, z: -0.16412257, w: 0.10178145} + center: {x: 4.6218743, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412257, y: 0.10178145, z: -0.16412279, w: 0.10178145} + distancesB: {x: -0.34850723, y: -0.1641226, z: -0.34850723, w: -0.1641224} + center: {x: 4.9406247, y: 2.6593752, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: -0.1641226, y: -0.09999991, z: -0.1641224, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412279, y: 0.10178145, z: -0.16412257, w: 0.10178145} + distancesB: {x: -0.34850723, y: -0.1641224, z: -0.34850723, w: -0.16412283} + center: {x: 4.9406247, y: 2.978125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: -0.1641224, y: -0.09999991, z: -0.16412283, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.16412257, y: 0.10178145, z: -0.16412279, w: 0.10178145} + center: {x: 4.6218743, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.16412279, y: 0.10178145, z: -0.16412279, w: 0.10178145} + center: {x: 4.6218743, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412257, y: 0.10178145, z: -0.16412279, w: 0.10178145} + distancesB: {x: -0.34850723, y: -0.16412283, z: -0.34850723, w: -0.16412297} + center: {x: 4.9406247, y: 3.296875, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: -0.16412283, y: -0.09999991, z: -0.16412297, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412279, y: 0.10178145, z: -0.16412279, w: 0.10178145} + distancesB: {x: -0.34850723, y: -0.16412297, z: -0.34850723, w: -0.16412242} + center: {x: 4.9406247, y: 3.615625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: -0.16412297, y: -0.09999991, z: -0.16412242, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.9843748, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.9843748, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.9843748, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.9843748, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 4.303125, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + center: {x: 4.303125, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 4.303125, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + center: {x: 4.303125, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 3.9843748, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + center: {x: 3.9843748, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: 3.9843748, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + center: {x: 3.9843748, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + center: {x: 4.303125, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.53749996, z: 0.21875048, w: 0.53749996} + center: {x: 4.303125, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + center: {x: 4.303125, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.53749996, z: 0.22439204, w: 0.5398205} + center: {x: 4.303125, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.16412279, y: 0.10178145, z: -0.16412216, w: 0.10178145} + center: {x: 4.6218743, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.16412216, y: 0.10178145, z: -0.16412243, w: 0.10178145} + center: {x: 4.6218743, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412279, y: 0.10178145, z: -0.16412216, w: 0.10178145} + distancesB: {x: -0.34850723, y: -0.16412242, z: -0.34850723, w: -0.16412258} + center: {x: 4.9406247, y: 3.934375, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: -0.16412242, y: -0.09999991, z: -0.16412258, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412216, y: 0.10178145, z: -0.16412243, w: 0.10178145} + distancesB: {x: -0.34850723, y: -0.16412258, z: -0.34850723, w: -0.16412243} + center: {x: 4.9406247, y: 4.253125, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.10178145, w: 0.21875048} + distancesB: {x: -0.16412258, y: -0.09999991, z: -0.16412243, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.09999991, w: 0.21875048} + distancesB: {x: -0.16412348, y: 0.10178145, z: -0.16412257, w: 0.1017818} + center: {x: 4.6218743, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.21875048, w: 0.5375008} + distancesB: {x: 0.10178145, y: 0.21875048, z: 0.1017818, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.09999991, y: 0.21875048, z: -0.1118034, w: 0.22439204} + distancesB: {x: -0.16412257, y: 0.1017818, z: -0.17156968, w: 0.1133995} + center: {x: 4.6218743, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.5375008, z: 0.22439204, w: 0.53982145} + distancesB: {x: 0.1017818, y: 0.21875048, z: 0.1133995, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412348, y: 0.10178145, z: -0.16412257, w: 0.1017818} + distancesB: {x: -0.34850723, y: -0.1641237, z: -0.34850723, w: -0.16412257} + center: {x: 4.9406247, y: 4.5718746, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: 0.21875048, z: 0.1017818, w: 0.21875048} + distancesB: {x: -0.1641237, y: -0.09999991, z: -0.16412257, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.16412257, y: 0.1017818, z: -0.17156968, w: 0.1133995} + distancesB: {x: -0.34850723, y: -0.16412257, z: -0.3520757, w: -0.17156953} + center: {x: 4.9406247, y: 4.890625, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.1017818, y: 0.21875048, z: 0.1133995, w: 0.22439204} + distancesB: {x: -0.16412257, y: -0.09999991, z: -0.17156953, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.5375008, z: 0.53749996, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53749996, y: 0.5375008, z: 0.5398205, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: 2.709375, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10441 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: 2.709375, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: 2.709375, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: 2.709375, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: 3.0281248, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10449 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: 3.0281248, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: 3.0281248, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: 3.0281248, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: 3.3468747, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10457 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: 3.3468747, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: 3.3468747, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: 3.3468747, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: 3.6656246, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10465 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: 3.6656246, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: 3.6656246, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: 3.6656246, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: 3.9843748, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10473 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + center: {x: 3.9843748, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: 3.9843748, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + center: {x: 3.9843748, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + center: {x: 4.303125, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10481 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.5398205, z: 0.42875254, w: 0.6518306} + center: {x: 4.303125, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + center: {x: 4.303125, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.6518306, z: 0.72146326, w: 0.87267613} + center: {x: 4.303125, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.22439204, z: -0.3820693, w: 0.42875254} + distancesB: {x: -0.17156968, y: 0.1133995, z: -0.40362495, w: 0.3825394} + center: {x: 4.6218743, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: 10489 + - distancesA: {x: 0.22439204, y: 0.53982145, z: 0.42875254, w: 0.6518314} + distancesB: {x: 0.1133995, y: 0.22439204, z: 0.3825394, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.3820693, y: 0.42875254, z: -0.6947356, w: 0.72146326} + distancesB: {x: -0.40362495, y: 0.3825394, z: -0.7068194, w: 0.6949943} + center: {x: 4.6218743, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.6518314, z: 0.72146326, w: 0.8726768} + distancesB: {x: 0.3825394, y: 0.42875254, z: 0.6949943, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.17156968, y: 0.1133995, z: -0.40362495, w: 0.3825394} + distancesB: {x: -0.3520757, y: -0.17156953, z: -0.50737983, w: -0.40362453} + center: {x: 4.9406247, y: 5.2093754, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.1133995, y: 0.22439204, z: 0.3825394, w: 0.42875254} + distancesB: {x: -0.17156953, y: -0.1118034, z: -0.40362453, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: -4.6218743, w: 0.159375} + firstChild: 10497 + - distancesA: {x: -0.40362495, y: 0.3825394, z: -0.7068194, w: 0.6949943} + distancesB: {x: -0.50737983, y: -0.40362453, z: -0.77078843, w: -0.70681894} + center: {x: 4.9406247, y: 5.528126, z: -4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.3825394, y: 0.42875254, z: 0.6949943, w: 0.72146326} + distancesB: {x: -0.40362453, y: -0.3820693, z: -0.70681894, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: -4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5398205, y: 0.53982145, z: 0.6518306, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518306, y: 0.6518314, z: 0.87267613, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: -4.303125, w: 0.159375} + firstChild: 10505 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: -3.9843748, w: 0.159375} + firstChild: 10513 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: -4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: -3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: -3.6656246, w: 0.159375} + firstChild: 10521 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: -3.3468747, w: 0.159375} + firstChild: 10529 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: -3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: -3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: -3.0281248, w: 0.159375} + firstChild: 10537 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: -2.709375, w: 0.159375} + firstChild: 10545 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: -3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: -2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: -2.3906248, w: 0.159375} + firstChild: 10553 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: -2.0718749, w: 0.159375} + firstChild: 10561 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: -2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: -2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: -1.7531248, w: 0.159375} + firstChild: 10569 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: -1.4343749, w: 0.159375} + firstChild: 10577 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: -1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: -1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: -1.1156249, w: 0.159375} + firstChild: 10585 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: -0.79687494, w: 0.159375} + firstChild: 10593 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: -1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: -0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: -0.47812498, w: 0.159375} + firstChild: 10601 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: -0.159375, w: 0.159375} + firstChild: 10609 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: -0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: -0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.159375, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.159375, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.159375, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.159375, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.47812498, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.47812498, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.47812498, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.47812498, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.159375, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.159375, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.159375, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.159375, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.47812498, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.47812498, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.47812498, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.47812498, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.79687494, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.79687494, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.79687494, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.79687494, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.1156249, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.1156249, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.1156249, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.1156249, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.79687494, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.79687494, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.79687494, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.79687494, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.1156249, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.1156249, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.1156249, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.1156249, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.159375, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.159375, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.159375, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.159375, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.47812498, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.47812498, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.47812498, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.47812498, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.159375, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.159375, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: 0.159375, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: 0.159375, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.47812498, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.47812498, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: 0.47812498, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: 0.47812498, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.79687494, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.79687494, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.79687494, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.79687494, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.1156249, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.1156249, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.1156249, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.1156249, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 0.79687494, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 0.79687494, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: 0.79687494, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: 0.79687494, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.1156249, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.1156249, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: 1.1156249, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: 1.1156249, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.4343749, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.4343749, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.4343749, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.4343749, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.7531248, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.7531248, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.7531248, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.7531248, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.4343749, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.4343749, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.4343749, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.4343749, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.7531248, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.7531248, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.7531248, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.7531248, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.0718749, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.0718749, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.0718749, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.0718749, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.3906248, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.3906248, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.3906248, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.3906248, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.0718749, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.0718749, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.0718749, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.0718749, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.3906248, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.3906248, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.3906248, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.3906248, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.4343749, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.4343749, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.4343749, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.4343749, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.7531248, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.7531248, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.7531248, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.7531248, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.4343749, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.4343749, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: 1.4343749, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: 1.4343749, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 1.7531248, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 1.7531248, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: 1.7531248, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: 1.7531248, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.0718749, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.0718749, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.0718749, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.0718749, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.3906248, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.3906248, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.3906248, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.3906248, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.0718749, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.0718749, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: 2.0718749, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: 2.0718749, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.3906248, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.3906248, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: 2.3906248, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: 2.3906248, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: 0.159375, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: 0.159375, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10617 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: 0.159375, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: 0.159375, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: 0.47812498, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: 0.47812498, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10625 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: 0.47812498, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: 0.47812498, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: 0.79687494, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: 0.79687494, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10633 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: 0.79687494, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: 0.79687494, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: 1.1156249, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: 1.1156249, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10641 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: 1.1156249, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: 1.1156249, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: 1.4343749, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: 1.4343749, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10649 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: 1.4343749, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: 1.4343749, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: 1.7531248, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: 1.7531248, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10657 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: 1.7531248, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: 1.7531248, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: 2.0718749, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: 2.0718749, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10665 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: 2.0718749, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: 2.0718749, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: 2.3906248, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: 2.3906248, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10673 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: 2.3906248, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: 2.3906248, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.709375, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.709375, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.709375, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.709375, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.0281248, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.0281248, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.0281248, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.0281248, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.709375, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.709375, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.709375, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.709375, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.0281248, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.0281248, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.0281248, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.0281248, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.3468747, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.3468747, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.3468747, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.3468747, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.6656246, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.6656246, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.6656246, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.6656246, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.3468747, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.3468747, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.3468747, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.3468747, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.6656246, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.6656246, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.6656246, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.6656246, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.709375, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.709375, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.709375, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.709375, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.0281248, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.0281248, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.0281248, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.0281248, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 2.709375, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 2.709375, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: 2.709375, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: 2.709375, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.0281248, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.0281248, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: 3.0281248, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: 3.0281248, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.3468747, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.3468747, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.3468747, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.3468747, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.6656246, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.6656246, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.6656246, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.6656246, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.3468747, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.3468747, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: 3.3468747, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: 3.3468747, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.6656246, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.6656246, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: 3.6656246, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: 3.6656246, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.9843748, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.9843748, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.9843748, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.9843748, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + center: {x: 4.303125, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 4.303125, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + center: {x: 4.303125, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 4.303125, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.9843748, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.9843748, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.9843748, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.9843748, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + center: {x: 4.303125, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 4.303125, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + center: {x: 4.303125, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 4.303125, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.6593752, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 2.978125, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.6593752, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 2.978125, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: 4.6218743, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.10178145, y: -0.1641226, z: 0.10178145, w: -0.1641224} + center: {x: 4.6218743, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: 4.6218743, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.10178145, y: -0.1641224, z: 0.10178145, w: -0.16412283} + center: {x: 4.6218743, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: -0.09999991, y: -0.16412257, z: -0.09999991, w: -0.16412279} + center: {x: 4.9406247, y: 2.6593752, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.1641226, z: 0.10178145, w: -0.1641224} + distancesB: {x: -0.16412257, y: -0.34850723, z: -0.16412279, w: -0.34850723} + center: {x: 4.9406247, y: 2.6593752, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: -0.09999991, y: -0.16412279, z: -0.09999991, w: -0.16412257} + center: {x: 4.9406247, y: 2.978125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.1641224, z: 0.10178145, w: -0.16412283} + distancesB: {x: -0.16412279, y: -0.34850723, z: -0.16412257, w: -0.34850723} + center: {x: 4.9406247, y: 2.978125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.296875, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.615625, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.296875, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.615625, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: 4.6218743, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.10178145, y: -0.16412283, z: 0.10178145, w: -0.16412297} + center: {x: 4.6218743, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: 4.6218743, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.10178145, y: -0.16412297, z: 0.10178145, w: -0.16412242} + center: {x: 4.6218743, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: -0.09999991, y: -0.16412257, z: -0.09999991, w: -0.16412279} + center: {x: 4.9406247, y: 3.296875, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412283, z: 0.10178145, w: -0.16412297} + distancesB: {x: -0.16412257, y: -0.34850723, z: -0.16412279, w: -0.34850723} + center: {x: 4.9406247, y: 3.296875, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: -0.09999991, y: -0.16412279, z: -0.09999991, w: -0.16412279} + center: {x: 4.9406247, y: 3.615625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412297, z: 0.10178145, w: -0.16412242} + distancesB: {x: -0.16412279, y: -0.34850723, z: -0.16412279, w: -0.34850723} + center: {x: 4.9406247, y: 3.615625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.9843748, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.9843748, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.9843748, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.9843748, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + center: {x: 4.303125, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 4.303125, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + center: {x: 4.303125, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 4.303125, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + center: {x: 3.9843748, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 3.9843748, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + center: {x: 3.9843748, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: 3.9843748, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.53749996, y: 0.21875048, z: 0.53749996, w: 0.21875048} + center: {x: 4.303125, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + center: {x: 4.303125, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.53749996, y: 0.21875048, z: 0.5398205, w: 0.22439204} + center: {x: 4.303125, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + center: {x: 4.303125, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 3.934375, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.253125, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 3.934375, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.253125, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: 4.6218743, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.10178145, y: -0.16412242, z: 0.10178145, w: -0.16412258} + center: {x: 4.6218743, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + center: {x: 4.6218743, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.10178145, y: -0.16412258, z: 0.10178145, w: -0.16412243} + center: {x: 4.6218743, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: -0.09999991, y: -0.16412279, z: -0.09999991, w: -0.16412216} + center: {x: 4.9406247, y: 3.934375, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412242, z: 0.10178145, w: -0.16412258} + distancesB: {x: -0.16412279, y: -0.34850723, z: -0.16412216, w: -0.34850723} + center: {x: 4.9406247, y: 3.934375, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.10178145} + distancesB: {x: -0.09999991, y: -0.16412216, z: -0.09999991, w: -0.16412243} + center: {x: 4.9406247, y: 4.253125, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.16412258, z: 0.10178145, w: -0.16412243} + distancesB: {x: -0.16412216, y: -0.34850723, z: -0.16412243, w: -0.34850723} + center: {x: 4.9406247, y: 4.253125, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.5375008, w: 0.5375008} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.53749996, z: 0.5375008, w: 0.53749996} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + center: {x: 4.6218743, y: 4.5718746, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.5375008, z: 0.53982145, w: 0.53982145} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.53749996, z: 0.53982145, w: 0.5398205} + distancesB: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + center: {x: 4.6218743, y: 4.890625, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.21875048, w: 0.21875048} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.09999991, w: -0.09999991} + center: {x: 4.9406247, y: 4.5718746, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.21875048, z: 0.22439204, w: 0.22439204} + distancesB: {x: -0.09999991, y: -0.09999991, z: -0.1118034, w: -0.1118034} + center: {x: 4.9406247, y: 4.890625, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.5375008, w: 0.21875048} + distancesB: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.1017818} + center: {x: 4.6218743, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.21875048, w: -0.09999991} + distancesB: {x: 0.10178145, y: -0.1641237, z: 0.1017818, w: -0.16412257} + center: {x: 4.6218743, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.5375008, y: 0.21875048, z: 0.53982145, w: 0.22439204} + distancesB: {x: 0.21875048, y: 0.1017818, z: 0.22439204, w: 0.1133995} + center: {x: 4.6218743, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: -0.09999991, z: 0.22439204, w: -0.1118034} + distancesB: {x: 0.1017818, y: -0.16412257, z: 0.1133995, w: -0.17156953} + center: {x: 4.6218743, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.10178145, z: 0.21875048, w: 0.1017818} + distancesB: {x: -0.09999991, y: -0.16412348, z: -0.09999991, w: -0.16412257} + center: {x: 4.9406247, y: 4.5718746, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.10178145, y: -0.1641237, z: 0.1017818, w: -0.16412257} + distancesB: {x: -0.16412348, y: -0.34850723, z: -0.16412257, w: -0.34850723} + center: {x: 4.9406247, y: 4.5718746, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.21875048, y: 0.1017818, z: 0.22439204, w: 0.1133995} + distancesB: {x: -0.09999991, y: -0.16412257, z: -0.1118034, w: -0.17156968} + center: {x: 4.9406247, y: 4.890625, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.1017818, y: -0.16412257, z: 0.1133995, w: -0.17156953} + distancesB: {x: -0.16412257, y: -0.34850723, z: -0.17156968, w: -0.3520757} + center: {x: 4.9406247, y: 4.890625, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: 0.159375, w: 0.159375} + firstChild: 10681 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: 0.47812498, w: 0.159375} + firstChild: 10689 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: 0.159375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: 0.47812498, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: 0.79687494, w: 0.159375} + firstChild: 10697 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: 1.1156249, w: 0.159375} + firstChild: 10705 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: 0.79687494, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: 1.1156249, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: 1.4343749, w: 0.159375} + firstChild: 10713 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: 1.7531248, w: 0.159375} + firstChild: 10721 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: 1.4343749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: 1.7531248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: 2.0718749, w: 0.159375} + firstChild: 10729 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: 2.3906248, w: 0.159375} + firstChild: 10737 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: 2.0718749, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: 2.3906248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: 2.709375, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: 2.709375, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10745 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: 2.709375, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: 2.709375, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: 3.0281248, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: 3.0281248, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10753 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: 3.0281248, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: 3.0281248, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: 3.3468747, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: 3.3468747, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10761 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: 3.3468747, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: 3.3468747, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: 3.6656246, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: 3.6656246, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10769 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: 3.6656246, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: 3.6656246, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: 2.709375, w: 0.159375} + firstChild: 10777 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: 3.0281248, w: 0.159375} + firstChild: 10785 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: 2.709375, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: 3.0281248, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: 3.3468747, w: 0.159375} + firstChild: 10793 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: 3.6656246, w: 0.159375} + firstChild: 10801 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: 3.3468747, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: 3.6656246, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + center: {x: 3.9843748, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: 3.9843748, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10809 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + center: {x: 3.9843748, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: 3.9843748, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.5398205, y: 0.22439204, z: 0.6518306, w: 0.42875254} + center: {x: 4.303125, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + center: {x: 4.303125, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10817 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.6518306, y: 0.42875254, z: 0.87267613, w: 0.72146326} + center: {x: 4.303125, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + center: {x: 4.303125, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.53982145, z: 0.6518314, w: 0.6518314} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.5398205, z: 0.6518314, w: 0.6518306} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + center: {x: 4.6218743, y: 5.2093754, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518314, z: 0.8726768, w: 0.8726768} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.6518314, y: 0.6518306, z: 0.8726768, w: 0.87267613} + distancesB: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + center: {x: 4.6218743, y: 5.528126, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: 3.9843748, w: 0.159375} + firstChild: 10825 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.42875254, w: 0.42875254} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.3820693, w: -0.3820693} + center: {x: 4.9406247, y: 5.2093754, z: 4.303125, w: 0.159375} + firstChild: 10833 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: 3.9843748, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.42875254, z: 0.72146326, w: 0.72146326} + distancesB: {x: -0.3820693, y: -0.3820693, z: -0.6947356, w: -0.6947356} + center: {x: 4.9406247, y: 5.528126, z: 4.303125, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.53982145, y: 0.22439204, z: 0.6518314, w: 0.42875254} + distancesB: {x: 0.22439204, y: 0.1133995, z: 0.42875254, w: 0.3825394} + center: {x: 4.6218743, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: -0.1118034, z: 0.42875254, w: -0.3820693} + distancesB: {x: 0.1133995, y: -0.17156953, z: 0.3825394, w: -0.40362453} + center: {x: 4.6218743, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: 10841 + - distancesA: {x: 0.6518314, y: 0.42875254, z: 0.8726768, w: 0.72146326} + distancesB: {x: 0.42875254, y: 0.3825394, z: 0.72146326, w: 0.6949943} + center: {x: 4.6218743, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: -0.3820693, z: 0.72146326, w: -0.6947356} + distancesB: {x: 0.3825394, y: -0.40362453, z: 0.6949943, w: -0.70681894} + center: {x: 4.6218743, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.1133995, z: 0.42875254, w: 0.3825394} + distancesB: {x: -0.1118034, y: -0.17156968, z: -0.3820693, w: -0.40362495} + center: {x: 4.9406247, y: 5.2093754, z: 4.6218743, w: 0.159375} + firstChild: 10849 + - distancesA: {x: 0.1133995, y: -0.17156953, z: 0.3825394, w: -0.40362453} + distancesB: {x: -0.17156968, y: -0.3520757, z: -0.40362495, w: -0.50737983} + center: {x: 4.9406247, y: 5.2093754, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.42875254, y: 0.3825394, z: 0.72146326, w: 0.6949943} + distancesB: {x: -0.3820693, y: -0.40362495, z: -0.6947356, w: -0.7068194} + center: {x: 4.9406247, y: 5.528126, z: 4.6218743, w: 0.159375} + firstChild: -1 + - distancesA: {x: 0.3825394, y: -0.40362453, z: 0.6949943, w: -0.70681894} + distancesB: {x: -0.40362495, y: -0.50737983, z: -0.7068194, w: -0.77078843} + center: {x: 4.9406247, y: 5.528126, z: 4.9406247, w: 0.159375} + firstChild: -1 + - distancesA: {x: -0.17156968, y: -0.122896254, z: -0.26603416, w: -0.23757423} + distancesB: {x: -0.05527544, y: 0.06439217, z: -0.21069743, w: 0.21327068} + center: {x: -5.0203123, y: 5.129688, z: -4.701562, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.122896254, y: -0.1118034, z: -0.23757423, w: -0.23203021} + distancesB: {x: 0.06439217, y: 0.07762373, z: 0.21327068, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -4.5421867, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.26603416, y: -0.23757423, z: -0.40362495, w: -0.38546133} + distancesB: {x: -0.21069743, y: 0.21327068, z: -0.36950284, w: 0.37097615} + center: {x: -5.0203123, y: 5.289063, z: -4.701562, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23757423, y: -0.23203021, z: -0.38546133, w: -0.3820693} + distancesB: {x: 0.21327068, y: 0.2176315, z: 0.37097615, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -4.5421867, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.05527544, y: 0.06439217, z: -0.21069743, w: 0.21327068} + distancesB: {x: 0.1133995, y: 0.19851884, z: 0.23280351, w: 0.2841615} + center: {x: -4.860937, y: 5.129688, z: -4.701562, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.06439217, y: 0.07762373, z: 0.21327068, w: 0.2176315} + distancesB: {x: 0.19851884, y: 0.22439204, z: 0.2841615, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -4.5421867, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.21069743, y: 0.21327068, z: -0.36950284, w: 0.37097615} + distancesB: {x: 0.23280351, y: 0.2841615, z: 0.3825394, w: 0.41579646} + center: {x: -4.860937, y: 5.289063, z: -4.701562, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.21327068, y: 0.2176315, z: 0.37097615, w: 0.3735002} + distancesB: {x: 0.2841615, y: 0.30280328, z: 0.41579646, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -4.5421867, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.17156953, y: -0.055275008, z: -0.2660338, w: -0.21069695} + distancesB: {x: -0.122896254, y: 0.06439217, z: -0.23757423, w: 0.21327068} + center: {x: -4.701562, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.055275008, y: 0.1133995, z: -0.21069695, w: 0.23280351} + distancesB: {x: 0.06439217, y: 0.19851884, z: 0.21327068, w: 0.2841615} + center: {x: -4.701562, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.2660338, y: -0.21069695, z: -0.40362453, w: -0.36950234} + distancesB: {x: -0.23757423, y: 0.21327068, z: -0.38546133, w: 0.37097615} + center: {x: -4.701562, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.21069695, y: 0.23280351, z: -0.36950234, w: 0.3825394} + distancesB: {x: 0.21327068, y: 0.2841615, z: 0.37097615, w: 0.41579646} + center: {x: -4.701562, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.122896254, y: 0.06439217, z: -0.23757423, w: 0.21327068} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -4.5421867, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.06439217, y: 0.19851884, z: 0.21327068, w: 0.2841615} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -4.5421867, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23757423, y: 0.21327068, z: -0.38546133, w: 0.37097615} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -4.5421867, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.21327068, y: 0.2841615, z: 0.37097615, w: 0.41579646} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -4.5421867, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -4.3828125, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -4.2234373, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -4.3828125, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -4.2234373, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -4.3828125, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -4.2234373, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -4.3828125, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -4.2234373, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -4.064062, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -3.9046872, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -4.064062, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -3.9046872, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -4.064062, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -3.9046872, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -4.064062, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -3.9046872, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -4.3828125, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -4.3828125, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -4.3828125, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -4.3828125, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -4.2234373, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -4.2234373, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -4.2234373, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -4.2234373, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -4.064062, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -4.064062, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -4.064062, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -4.064062, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -3.9046872, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -3.9046872, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -3.9046872, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -3.9046872, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -3.7453122, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -3.585937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -3.7453122, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -3.585937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -3.7453122, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -3.585937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -3.7453122, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -3.585937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -3.4265623, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -3.267187, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -3.4265623, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -3.267187, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -3.4265623, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -3.267187, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -3.4265623, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -3.267187, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -3.1078124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -2.9484372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -3.1078124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -2.9484372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -3.1078124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -2.9484372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -3.1078124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -2.9484372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -2.7890625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -2.6296873, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -2.7890625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -2.6296873, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -2.7890625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -2.6296873, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -2.7890625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -2.6296873, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -3.7453122, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -3.7453122, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -3.7453122, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -3.7453122, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -3.585937, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -3.585937, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -3.585937, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -3.585937, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -3.4265623, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -3.4265623, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -3.4265623, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -3.4265623, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -3.267187, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -3.267187, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -3.267187, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -3.267187, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -3.1078124, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -3.1078124, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -3.1078124, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -3.1078124, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -2.9484372, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -2.9484372, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -2.9484372, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -2.9484372, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -2.7890625, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -2.7890625, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -2.7890625, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -2.7890625, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -2.6296873, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -2.6296873, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -2.6296873, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -2.6296873, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -2.4703124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -2.3109372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -2.4703124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -2.3109372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -2.4703124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -2.3109372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -2.4703124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -2.3109372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -2.1515625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -1.9921874, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -2.1515625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -1.9921874, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -2.1515625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -1.9921874, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -2.1515625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -1.9921874, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -1.8328123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -1.6734374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -1.8328123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -1.6734374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -1.8328123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -1.6734374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -1.8328123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -1.6734374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -1.5140624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -1.3546875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -1.5140624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -1.3546875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -1.5140624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -1.3546875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -1.5140624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -1.3546875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -1.1953124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -1.0359374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -1.1953124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -1.0359374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -1.1953124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -1.0359374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -1.1953124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -1.0359374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -0.8765624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -0.71718746, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -0.8765624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -0.71718746, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -0.8765624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -0.71718746, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -0.8765624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -0.71718746, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -0.55781245, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -0.39843747, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -0.55781245, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -0.39843747, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -0.55781245, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -0.39843747, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -0.55781245, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -0.39843747, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -0.23906249, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: -0.0796875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -0.23906249, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: -0.0796875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -0.23906249, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: -0.0796875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -0.23906249, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: -0.0796875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -2.4703124, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -2.4703124, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -2.4703124, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -2.4703124, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -2.3109372, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -2.3109372, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -2.3109372, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -2.3109372, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -2.1515625, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -2.1515625, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -2.1515625, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -2.1515625, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -1.9921874, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -1.9921874, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -1.9921874, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -1.9921874, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -1.8328123, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -1.8328123, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -1.8328123, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -1.8328123, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -1.6734374, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -1.6734374, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -1.6734374, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -1.6734374, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -1.5140624, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -1.5140624, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -1.5140624, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -1.5140624, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -1.3546875, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -1.3546875, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -1.3546875, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -1.3546875, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -1.1953124, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -1.1953124, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -1.1953124, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -1.1953124, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -1.0359374, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -1.0359374, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -1.0359374, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -1.0359374, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -0.8765624, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -0.8765624, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -0.8765624, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -0.8765624, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -0.71718746, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -0.71718746, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -0.71718746, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -0.71718746, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -0.55781245, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -0.55781245, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -0.55781245, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -0.55781245, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -0.39843747, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -0.39843747, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -0.39843747, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -0.39843747, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -0.23906249, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -0.23906249, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -0.23906249, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -0.23906249, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: -0.0796875, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: -0.0796875, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: -0.0796875, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: -0.0796875, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 0.0796875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 0.23906249, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 0.0796875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 0.23906249, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 0.0796875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 0.23906249, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 0.0796875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 0.23906249, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 0.39843747, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 0.55781245, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 0.39843747, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 0.55781245, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 0.39843747, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 0.55781245, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 0.39843747, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 0.55781245, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 0.71718746, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 0.8765624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 0.71718746, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 0.8765624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 0.71718746, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 0.8765624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 0.71718746, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 0.8765624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 1.0359374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 1.1953124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 1.0359374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 1.1953124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 1.0359374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 1.1953124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 1.0359374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 1.1953124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 1.3546875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 1.5140624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 1.3546875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 1.5140624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 1.3546875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 1.5140624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 1.3546875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 1.5140624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 1.6734374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 1.8328123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 1.6734374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 1.8328123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 1.6734374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 1.8328123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 1.6734374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 1.8328123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 1.9921874, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 2.1515625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 1.9921874, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 2.1515625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 1.9921874, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 2.1515625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 1.9921874, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 2.1515625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 2.3109372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 2.4703124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 2.3109372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 2.4703124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 2.3109372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 2.4703124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 2.3109372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 2.4703124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 2.6296873, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 2.7890625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 2.6296873, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 2.7890625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 2.6296873, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 2.7890625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 2.6296873, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 2.7890625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 2.9484372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 3.1078124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 2.9484372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 3.1078124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 2.9484372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 3.1078124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 2.9484372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 3.1078124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 3.267187, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 3.4265623, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 3.267187, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 3.4265623, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 3.267187, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 3.4265623, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 3.267187, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 3.4265623, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 3.585937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 3.7453122, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 3.585937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 3.7453122, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 3.585937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 3.7453122, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 3.585937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 3.7453122, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 3.9046872, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 4.064062, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 3.9046872, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 4.064062, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 3.9046872, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 4.064062, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 3.9046872, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 4.064062, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 4.2234373, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: -5.0203123, y: 5.129688, z: 4.3828125, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 4.2234373, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: -5.0203123, y: 5.289063, z: 4.3828125, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 4.2234373, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + center: {x: -4.860937, y: 5.129688, z: 4.3828125, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 4.2234373, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + center: {x: -4.860937, y: 5.289063, z: 4.3828125, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: -0.122896254, z: -0.23203021, w: -0.23757423} + distancesB: {x: 0.07762373, y: 0.06439217, z: 0.2176315, w: 0.21327068} + center: {x: -5.0203123, y: 5.129688, z: 4.5421867, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.122896254, y: -0.17156953, z: -0.23757423, w: -0.2660338} + distancesB: {x: 0.06439217, y: -0.055275008, z: 0.21327068, w: -0.21069695} + center: {x: -5.0203123, y: 5.129688, z: 4.701562, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: -0.23757423, z: -0.3820693, w: -0.38546133} + distancesB: {x: 0.2176315, y: 0.21327068, z: 0.3735002, w: 0.37097615} + center: {x: -5.0203123, y: 5.289063, z: 4.5421867, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23757423, y: -0.2660338, z: -0.38546133, w: -0.40362453} + distancesB: {x: 0.21327068, y: -0.21069695, z: 0.37097615, w: -0.36950234} + center: {x: -5.0203123, y: 5.289063, z: 4.701562, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.06439217, z: 0.2176315, w: 0.21327068} + distancesB: {x: 0.22439204, y: 0.19851884, z: 0.30280328, w: 0.2841615} + center: {x: -4.860937, y: 5.129688, z: 4.5421867, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.06439217, y: -0.055275008, z: 0.21327068, w: -0.21069695} + distancesB: {x: 0.19851884, y: 0.1133995, z: 0.2841615, w: 0.23280351} + center: {x: -4.860937, y: 5.129688, z: 4.701562, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.21327068, z: 0.3735002, w: 0.37097615} + distancesB: {x: 0.30280328, y: 0.2841615, z: 0.42875254, w: 0.41579646} + center: {x: -4.860937, y: 5.289063, z: 4.5421867, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.21327068, y: -0.21069695, z: 0.37097615, w: -0.36950234} + distancesB: {x: 0.2841615, y: 0.23280351, z: 0.41579646, w: 0.3825394} + center: {x: -4.860937, y: 5.289063, z: 4.701562, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.1133995, y: -0.05527544, z: 0.23280351, w: -0.21069743} + distancesB: {x: 0.19851884, y: 0.06439217, z: 0.2841615, w: 0.21327068} + center: {x: -4.701562, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.05527544, y: -0.17156968, z: -0.21069743, w: -0.26603416} + distancesB: {x: 0.06439217, y: -0.122896254, z: 0.21327068, w: -0.23757423} + center: {x: -4.701562, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.23280351, y: -0.21069743, z: 0.3825394, w: -0.36950284} + distancesB: {x: 0.2841615, y: 0.21327068, z: 0.41579646, w: 0.37097615} + center: {x: -4.701562, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.21069743, y: -0.26603416, z: -0.36950284, w: -0.40362495} + distancesB: {x: 0.21327068, y: -0.23757423, z: 0.37097615, w: -0.38546133} + center: {x: -4.701562, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.19851884, y: 0.06439217, z: 0.2841615, w: 0.21327068} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -4.5421867, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.06439217, y: -0.122896254, z: 0.21327068, w: -0.23757423} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -4.5421867, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2841615, y: 0.21327068, z: 0.41579646, w: 0.37097615} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -4.5421867, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.21327068, y: -0.23757423, z: 0.37097615, w: -0.38546133} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -4.5421867, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -4.3828125, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -4.3828125, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -4.3828125, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -4.3828125, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -4.2234373, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -4.2234373, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -4.2234373, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -4.2234373, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -4.064062, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -4.064062, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -4.064062, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -4.064062, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -3.9046872, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -3.9046872, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -3.9046872, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -3.9046872, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -3.7453122, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -3.7453122, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -3.7453122, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -3.7453122, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -3.585937, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -3.585937, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -3.585937, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -3.585937, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -3.4265623, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -3.4265623, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -3.4265623, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -3.4265623, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -3.267187, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -3.267187, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -3.267187, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -3.267187, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -3.1078124, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -3.1078124, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -3.1078124, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -3.1078124, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -2.9484372, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -2.9484372, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -2.9484372, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -2.9484372, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -2.7890625, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -2.7890625, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -2.7890625, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -2.7890625, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -2.6296873, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -2.6296873, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -2.6296873, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -2.6296873, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -2.4703124, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -2.4703124, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -2.4703124, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -2.4703124, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -2.3109372, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -2.3109372, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -2.3109372, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -2.3109372, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -2.1515625, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -2.1515625, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -2.1515625, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -2.1515625, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -1.9921874, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -1.9921874, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -1.9921874, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -1.9921874, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -1.8328123, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -1.8328123, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -1.8328123, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -1.8328123, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -1.6734374, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -1.6734374, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -1.6734374, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -1.6734374, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -1.5140624, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -1.5140624, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -1.5140624, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -1.5140624, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -1.3546875, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -1.3546875, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -1.3546875, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -1.3546875, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -1.1953124, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -1.1953124, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -1.1953124, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -1.1953124, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -1.0359374, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -1.0359374, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -1.0359374, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -1.0359374, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -0.8765624, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -0.8765624, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -0.8765624, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -0.8765624, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -0.71718746, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -0.71718746, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -0.71718746, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -0.71718746, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -0.55781245, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -0.55781245, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -0.55781245, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -0.55781245, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -0.39843747, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -0.39843747, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -0.39843747, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -0.39843747, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -0.23906249, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -0.23906249, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -0.23906249, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -0.23906249, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: -0.0796875, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: -0.0796875, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: -0.0796875, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: -0.0796875, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 0.0796875, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 0.0796875, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 0.0796875, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 0.0796875, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 0.23906249, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 0.23906249, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 0.23906249, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 0.23906249, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 0.39843747, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 0.39843747, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 0.39843747, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 0.39843747, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 0.55781245, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 0.55781245, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 0.55781245, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 0.55781245, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 0.71718746, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 0.71718746, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 0.71718746, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 0.71718746, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 0.8765624, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 0.8765624, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 0.8765624, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 0.8765624, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 1.0359374, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 1.0359374, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 1.0359374, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 1.0359374, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 1.1953124, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 1.1953124, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 1.1953124, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 1.1953124, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 1.3546875, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 1.3546875, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 1.3546875, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 1.3546875, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 1.5140624, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 1.5140624, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 1.5140624, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 1.5140624, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 1.6734374, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 1.6734374, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 1.6734374, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 1.6734374, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 1.8328123, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 1.8328123, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 1.8328123, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 1.8328123, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 1.9921874, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 1.9921874, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 1.9921874, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 1.9921874, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 2.1515625, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 2.1515625, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 2.1515625, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 2.1515625, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 2.3109372, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 2.3109372, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 2.3109372, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 2.3109372, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 2.4703124, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 2.4703124, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 2.4703124, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 2.4703124, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 2.6296873, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 2.6296873, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 2.6296873, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 2.6296873, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 2.7890625, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 2.7890625, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 2.7890625, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 2.7890625, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 2.9484372, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 2.9484372, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 2.9484372, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 2.9484372, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 3.1078124, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 3.1078124, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 3.1078124, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 3.1078124, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 3.267187, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 3.267187, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 3.267187, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 3.267187, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 3.4265623, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 3.4265623, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 3.4265623, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 3.4265623, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 3.585937, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 3.585937, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 3.585937, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 3.585937, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 3.7453122, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 3.7453122, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 3.7453122, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 3.7453122, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 3.9046872, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 3.9046872, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 3.9046872, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 3.9046872, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 4.064062, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 4.064062, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 4.064062, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 4.064062, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 4.2234373, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 4.2234373, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 4.2234373, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 4.2234373, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + center: {x: 4.3828125, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + center: {x: 4.3828125, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + center: {x: 4.3828125, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + center: {x: 4.3828125, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.1118034, y: 0.07762373, z: -0.23203021, w: 0.2176315} + distancesB: {x: -0.122896254, y: 0.06439217, z: -0.23757423, w: 0.21327068} + center: {x: 4.5421867, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.22439204, z: 0.2176315, w: 0.30280328} + distancesB: {x: 0.06439217, y: 0.19851884, z: 0.21327068, w: 0.2841615} + center: {x: 4.5421867, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23203021, y: 0.2176315, z: -0.3820693, w: 0.3735002} + distancesB: {x: -0.23757423, y: 0.21327068, z: -0.38546133, w: 0.37097615} + center: {x: 4.5421867, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.30280328, z: 0.3735002, w: 0.42875254} + distancesB: {x: 0.21327068, y: 0.2841615, z: 0.37097615, w: 0.41579646} + center: {x: 4.5421867, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.122896254, y: 0.06439217, z: -0.23757423, w: 0.21327068} + distancesB: {x: -0.17156968, y: -0.05527544, z: -0.26603416, w: -0.21069743} + center: {x: 4.701562, y: 5.129688, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.06439217, y: 0.19851884, z: 0.21327068, w: 0.2841615} + distancesB: {x: -0.05527544, y: 0.1133995, z: -0.21069743, w: 0.23280351} + center: {x: 4.701562, y: 5.129688, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.23757423, y: 0.21327068, z: -0.38546133, w: 0.37097615} + distancesB: {x: -0.26603416, y: -0.21069743, z: -0.40362495, w: -0.36950284} + center: {x: 4.701562, y: 5.289063, z: -5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.21327068, y: 0.2841615, z: 0.37097615, w: 0.41579646} + distancesB: {x: -0.21069743, y: 0.23280351, z: -0.36950284, w: 0.3825394} + center: {x: 4.701562, y: 5.289063, z: -4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.1133995, y: 0.19851884, z: 0.23280351, w: 0.2841615} + distancesB: {x: -0.055275008, y: 0.06439217, z: -0.21069695, w: 0.21327068} + center: {x: 4.860937, y: 5.129688, z: -4.701562, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.19851884, y: 0.22439204, z: 0.2841615, w: 0.30280328} + distancesB: {x: 0.06439217, y: 0.07762373, z: 0.21327068, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -4.5421867, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.23280351, y: 0.2841615, z: 0.3825394, w: 0.41579646} + distancesB: {x: -0.21069695, y: 0.21327068, z: -0.36950234, w: 0.37097615} + center: {x: 4.860937, y: 5.289063, z: -4.701562, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2841615, y: 0.30280328, z: 0.41579646, w: 0.42875254} + distancesB: {x: 0.21327068, y: 0.2176315, z: 0.37097615, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -4.5421867, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.055275008, y: 0.06439217, z: -0.21069695, w: 0.21327068} + distancesB: {x: -0.17156953, y: -0.122896254, z: -0.2660338, w: -0.23757423} + center: {x: 5.0203123, y: 5.129688, z: -4.701562, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.06439217, y: 0.07762373, z: 0.21327068, w: 0.2176315} + distancesB: {x: -0.122896254, y: -0.1118034, z: -0.23757423, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -4.5421867, w: 0.0796875} + firstChild: -1 + - distancesA: {x: -0.21069695, y: 0.21327068, z: -0.36950234, w: 0.37097615} + distancesB: {x: -0.2660338, y: -0.23757423, z: -0.40362453, w: -0.38546133} + center: {x: 5.0203123, y: 5.289063, z: -4.701562, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.21327068, y: 0.2176315, z: 0.37097615, w: 0.3735002} + distancesB: {x: -0.23757423, y: -0.23203021, z: -0.38546133, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -4.5421867, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -4.3828125, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -4.2234373, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -4.3828125, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -4.2234373, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -4.3828125, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -4.2234373, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -4.3828125, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -4.2234373, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -4.064062, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -3.9046872, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -4.064062, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -3.9046872, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -4.064062, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -3.9046872, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -4.064062, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -3.9046872, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -3.7453122, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -3.585937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -3.7453122, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -3.585937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -3.7453122, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -3.585937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -3.7453122, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -3.585937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -3.4265623, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -3.267187, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -3.4265623, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -3.267187, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -3.4265623, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -3.267187, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -3.4265623, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -3.267187, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -3.1078124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -2.9484372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -3.1078124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -2.9484372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -3.1078124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -2.9484372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -3.1078124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -2.9484372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -2.7890625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -2.6296873, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -2.7890625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -2.6296873, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -2.7890625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -2.6296873, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -2.7890625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -2.6296873, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -2.4703124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -2.3109372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -2.4703124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -2.3109372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -2.4703124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -2.3109372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -2.4703124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -2.3109372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -2.1515625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -1.9921874, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -2.1515625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -1.9921874, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -2.1515625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -1.9921874, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -2.1515625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -1.9921874, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -1.8328123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -1.6734374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -1.8328123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -1.6734374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -1.8328123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -1.6734374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -1.8328123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -1.6734374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -1.5140624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -1.3546875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -1.5140624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -1.3546875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -1.5140624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -1.3546875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -1.5140624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -1.3546875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -1.1953124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -1.0359374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -1.1953124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -1.0359374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -1.1953124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -1.0359374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -1.1953124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -1.0359374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -0.8765624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -0.71718746, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -0.8765624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -0.71718746, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -0.8765624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -0.71718746, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -0.8765624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -0.71718746, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -0.55781245, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -0.39843747, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -0.55781245, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -0.39843747, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -0.55781245, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -0.39843747, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -0.55781245, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -0.39843747, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -0.23906249, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: -0.0796875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -0.23906249, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: -0.0796875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -0.23906249, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: -0.0796875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -0.23906249, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: -0.0796875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 0.0796875, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 0.0796875, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 0.0796875, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 0.0796875, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 0.23906249, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 0.23906249, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 0.23906249, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 0.23906249, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 0.39843747, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 0.39843747, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 0.39843747, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 0.39843747, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 0.55781245, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 0.55781245, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 0.55781245, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 0.55781245, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 0.71718746, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 0.71718746, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 0.71718746, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 0.71718746, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 0.8765624, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 0.8765624, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 0.8765624, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 0.8765624, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 1.0359374, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 1.0359374, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 1.0359374, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 1.0359374, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 1.1953124, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 1.1953124, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 1.1953124, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 1.1953124, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 1.3546875, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 1.3546875, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 1.3546875, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 1.3546875, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 1.5140624, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 1.5140624, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 1.5140624, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 1.5140624, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 1.6734374, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 1.6734374, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 1.6734374, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 1.6734374, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 1.8328123, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 1.8328123, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 1.8328123, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 1.8328123, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 1.9921874, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 1.9921874, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 1.9921874, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 1.9921874, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 2.1515625, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 2.1515625, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 2.1515625, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 2.1515625, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 2.3109372, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 2.3109372, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 2.3109372, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 2.3109372, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 2.4703124, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 2.4703124, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 2.4703124, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 2.4703124, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 0.0796875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 0.23906249, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 0.0796875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 0.23906249, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 0.0796875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 0.23906249, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 0.0796875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 0.23906249, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 0.39843747, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 0.55781245, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 0.39843747, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 0.55781245, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 0.39843747, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 0.55781245, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 0.39843747, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 0.55781245, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 0.71718746, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 0.8765624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 0.71718746, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 0.8765624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 0.71718746, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 0.8765624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 0.71718746, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 0.8765624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 1.0359374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 1.1953124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 1.0359374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 1.1953124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 1.0359374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 1.1953124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 1.0359374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 1.1953124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 1.3546875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 1.5140624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 1.3546875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 1.5140624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 1.3546875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 1.5140624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 1.3546875, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 1.5140624, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 1.6734374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 1.8328123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 1.6734374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 1.8328123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 1.6734374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 1.8328123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 1.6734374, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 1.8328123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 1.9921874, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 2.1515625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 1.9921874, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 2.1515625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 1.9921874, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 2.1515625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 1.9921874, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 2.1515625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 2.3109372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 2.4703124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 2.3109372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 2.4703124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 2.3109372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 2.4703124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 2.3109372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 2.4703124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 2.6296873, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 2.6296873, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 2.6296873, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 2.6296873, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 2.7890625, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 2.7890625, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 2.7890625, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 2.7890625, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 2.9484372, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 2.9484372, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 2.9484372, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 2.9484372, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 3.1078124, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 3.1078124, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 3.1078124, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 3.1078124, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 3.267187, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 3.267187, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 3.267187, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 3.267187, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 3.4265623, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 3.4265623, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 3.4265623, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 3.4265623, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 3.585937, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 3.585937, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 3.585937, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 3.585937, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 3.7453122, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 3.7453122, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 3.7453122, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 3.7453122, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 2.6296873, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 2.7890625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 2.6296873, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 2.7890625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 2.6296873, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 2.7890625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 2.6296873, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 2.7890625, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 2.9484372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 3.1078124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 2.9484372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 3.1078124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 2.9484372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 3.1078124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 2.9484372, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 3.1078124, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 3.267187, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 3.4265623, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 3.267187, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 3.4265623, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 3.267187, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 3.4265623, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 3.267187, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 3.4265623, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 3.585937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 3.7453122, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 3.585937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 3.7453122, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 3.585937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 3.7453122, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 3.585937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 3.7453122, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 3.9046872, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 3.9046872, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 3.9046872, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 3.9046872, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 4.064062, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 4.064062, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 4.064062, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 4.064062, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 4.2234373, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 4.2234373, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 4.2234373, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 4.2234373, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + center: {x: 4.3828125, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + center: {x: 4.3828125, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + center: {x: 4.3828125, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + center: {x: 4.3828125, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 3.9046872, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 4.064062, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 3.9046872, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 4.064062, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 3.9046872, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 4.064062, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 3.9046872, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 4.064062, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 4.2234373, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.22439204, z: 0.30280328, w: 0.30280328} + distancesB: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + center: {x: 4.860937, y: 5.129688, z: 4.3828125, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 4.2234373, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.30280328, z: 0.42875254, w: 0.42875254} + distancesB: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + center: {x: 4.860937, y: 5.289063, z: 4.3828125, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 4.2234373, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.07762373, z: 0.2176315, w: 0.2176315} + distancesB: {x: -0.1118034, y: -0.1118034, z: -0.23203021, w: -0.23203021} + center: {x: 5.0203123, y: 5.129688, z: 4.3828125, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 4.2234373, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.2176315, z: 0.3735002, w: 0.3735002} + distancesB: {x: -0.23203021, y: -0.23203021, z: -0.3820693, w: -0.3820693} + center: {x: 5.0203123, y: 5.289063, z: 4.3828125, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.07762373, z: 0.30280328, w: 0.2176315} + distancesB: {x: 0.19851884, y: 0.06439217, z: 0.2841615, w: 0.21327068} + center: {x: 4.5421867, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: -0.1118034, z: 0.2176315, w: -0.23203021} + distancesB: {x: 0.06439217, y: -0.122896254, z: 0.21327068, w: -0.23757423} + center: {x: 4.5421867, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2176315, z: 0.42875254, w: 0.3735002} + distancesB: {x: 0.2841615, y: 0.21327068, z: 0.41579646, w: 0.37097615} + center: {x: 4.5421867, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: -0.23203021, z: 0.3735002, w: -0.3820693} + distancesB: {x: 0.21327068, y: -0.23757423, z: 0.37097615, w: -0.38546133} + center: {x: 4.5421867, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.19851884, y: 0.06439217, z: 0.2841615, w: 0.21327068} + distancesB: {x: 0.1133995, y: -0.055275008, z: 0.23280351, w: -0.21069695} + center: {x: 4.701562, y: 5.129688, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.06439217, y: -0.122896254, z: 0.21327068, w: -0.23757423} + distancesB: {x: -0.055275008, y: -0.17156953, z: -0.21069695, w: -0.2660338} + center: {x: 4.701562, y: 5.129688, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2841615, y: 0.21327068, z: 0.41579646, w: 0.37097615} + distancesB: {x: 0.23280351, y: -0.21069695, z: 0.3825394, w: -0.36950234} + center: {x: 4.701562, y: 5.289063, z: 4.860937, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.21327068, y: -0.23757423, z: 0.37097615, w: -0.38546133} + distancesB: {x: -0.21069695, y: -0.2660338, z: -0.36950234, w: -0.40362453} + center: {x: 4.701562, y: 5.289063, z: 5.0203123, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.22439204, y: 0.19851884, z: 0.30280328, w: 0.2841615} + distancesB: {x: 0.07762373, y: 0.06439217, z: 0.2176315, w: 0.21327068} + center: {x: 4.860937, y: 5.129688, z: 4.5421867, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.19851884, y: 0.1133995, z: 0.2841615, w: 0.23280351} + distancesB: {x: 0.06439217, y: -0.05527544, z: 0.21327068, w: -0.21069743} + center: {x: 4.860937, y: 5.129688, z: 4.701562, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.30280328, y: 0.2841615, z: 0.42875254, w: 0.41579646} + distancesB: {x: 0.2176315, y: 0.21327068, z: 0.3735002, w: 0.37097615} + center: {x: 4.860937, y: 5.289063, z: 4.5421867, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2841615, y: 0.23280351, z: 0.41579646, w: 0.3825394} + distancesB: {x: 0.21327068, y: -0.21069743, z: 0.37097615, w: -0.36950284} + center: {x: 4.860937, y: 5.289063, z: 4.701562, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.07762373, y: 0.06439217, z: 0.2176315, w: 0.21327068} + distancesB: {x: -0.1118034, y: -0.122896254, z: -0.23203021, w: -0.23757423} + center: {x: 5.0203123, y: 5.129688, z: 4.5421867, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.06439217, y: -0.05527544, z: 0.21327068, w: -0.21069743} + distancesB: {x: -0.122896254, y: -0.17156968, z: -0.23757423, w: -0.26603416} + center: {x: 5.0203123, y: 5.129688, z: 4.701562, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.2176315, y: 0.21327068, z: 0.3735002, w: 0.37097615} + distancesB: {x: -0.23203021, y: -0.23757423, z: -0.3820693, w: -0.38546133} + center: {x: 5.0203123, y: 5.289063, z: 4.5421867, w: 0.0796875} + firstChild: -1 + - distancesA: {x: 0.21327068, y: -0.21069743, z: 0.37097615, w: -0.36950284} + distancesB: {x: -0.23757423, y: -0.26603416, z: -0.38546133, w: -0.40362495} + center: {x: 5.0203123, y: 5.289063, z: 4.701562, w: 0.0796875} + firstChild: -1 + maxError: 0.02 + maxDepth: 7 diff --git a/Assets/Obi/Samples/Common/SampleResources/DistanceFields/EnvironmentDF.asset.meta b/Assets/Obi/Samples/Common/SampleResources/DistanceFields/EnvironmentDF.asset.meta new file mode 100644 index 000000000..983d96e2f --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/DistanceFields/EnvironmentDF.asset.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5eb5ff1af3a3f4a14977448198c232ae +timeCreated: 1507047323 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials.meta b/Assets/Obi/Samples/Common/SampleResources/Materials.meta new file mode 100644 index 000000000..f9973a1c7 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e71b9a406d7f848ceaaf698a595823f5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials/Checker.mat b/Assets/Obi/Samples/Common/SampleResources/Materials/Checker.mat new file mode 100644 index 000000000..9d6caa40d --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials/Checker.mat @@ -0,0 +1,87 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Checker + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _EMISSION + m_InvalidKeywords: [] + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 176574918b29445148929eb9a46c70ef, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 40, y: 40} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 8fbd9c5f957b8434883cdfce9d6a3c27, type: 3} + m_Scale: {x: 40, y: 40} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EmissionScaleUI: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.3 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} + - _EmissionColorUI: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials/Checker.mat.meta b/Assets/Obi/Samples/Common/SampleResources/Materials/Checker.mat.meta new file mode 100644 index 000000000..be9b10c56 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials/Checker.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 359ef2e4b09204eeab112e419c308068 +timeCreated: 1435572264 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials/CoarseChecker.mat b/Assets/Obi/Samples/Common/SampleResources/Materials/CoarseChecker.mat new file mode 100644 index 000000000..a5a18fa72 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials/CoarseChecker.mat @@ -0,0 +1,123 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CoarseChecker + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 6 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 8fbd9c5f957b8434883cdfce9d6a3c27, type: 3} + m_Scale: {x: 5, y: 5} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 5, y: 5} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 8fbd9c5f957b8434883cdfce9d6a3c27, type: 3} + m_Scale: {x: 5, y: 5} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EmissionScaleUI: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.3 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _SampleGI: 0 + - _Shininess: 0 + - _Smoothness: 0.3 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} + - _EmissionColorUI: {r: 1, g: 1, b: 1, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &5136862684972130647 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 2 diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials/CoarseChecker.mat.meta b/Assets/Obi/Samples/Common/SampleResources/Materials/CoarseChecker.mat.meta new file mode 100644 index 000000000..ffff85c24 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials/CoarseChecker.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e78e1b735e05b4dee88b279cb6997001 +timeCreated: 1435572264 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials/FinishLine.mat b/Assets/Obi/Samples/Common/SampleResources/Materials/FinishLine.mat new file mode 100644 index 000000000..ad9a04f8e --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials/FinishLine.mat @@ -0,0 +1,86 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: FinishLine + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALPHAPREMULTIPLY_ON + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 5, y: 5} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 8fbd9c5f957b8434883cdfce9d6a3c27, type: 3} + m_Scale: {x: 5, y: 5} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 10 + - _GlossMapScale: 1 + - _Glossiness: 0.2 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 3 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 0 + m_Colors: + - _Color: {r: 1, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0.9843137, g: 0.21960784, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials/FinishLine.mat.meta b/Assets/Obi/Samples/Common/SampleResources/Materials/FinishLine.mat.meta new file mode 100644 index 000000000..4034ef324 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials/FinishLine.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d3b93997453834b97a4e8f3df52e1068 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials/Flesh.mat b/Assets/Obi/Samples/Common/SampleResources/Materials/Flesh.mat new file mode 100644 index 000000000..0c8b428be --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials/Flesh.mat @@ -0,0 +1,84 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flesh + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.25 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 0.72530067, b: 0.61960787, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials/Flesh.mat.meta b/Assets/Obi/Samples/Common/SampleResources/Materials/Flesh.mat.meta new file mode 100644 index 000000000..1f653d94b --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials/Flesh.mat.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5c0346dbcbacd4648bec909deff79751 +labels: +- ObiRope +- ObiSoftbody +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials/Metal.mat b/Assets/Obi/Samples/Common/SampleResources/Materials/Metal.mat new file mode 100644 index 000000000..ec7c878ad --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials/Metal.mat @@ -0,0 +1,87 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Metal + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _EMISSION + m_InvalidKeywords: [] + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EmissionScaleUI: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.6 + - _GlossyReflections: 1 + - _Metallic: 1 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.4705882, g: 0.4705882, b: 0.4705882, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColorUI: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials/Metal.mat.meta b/Assets/Obi/Samples/Common/SampleResources/Materials/Metal.mat.meta new file mode 100644 index 000000000..f70fa93a7 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials/Metal.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 278487642d12d4bf78416679d50d6fd7 +timeCreated: 1466469210 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials/TestEnvironment.mat b/Assets/Obi/Samples/Common/SampleResources/Materials/TestEnvironment.mat new file mode 100644 index 000000000..1656355a7 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials/TestEnvironment.mat @@ -0,0 +1,118 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: TestEnvironment + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _EMISSION + - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + m_InvalidKeywords: [] + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 8fbd9c5f957b8434883cdfce9d6a3c27, type: 3} + m_Scale: {x: 11, y: 11} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 11, y: 11} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 8fbd9c5f957b8434883cdfce9d6a3c27, type: 3} + m_Scale: {x: 11, y: 11} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0.5 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 1 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &2635063883510072054 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 2 diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials/TestEnvironment.mat.meta b/Assets/Obi/Samples/Common/SampleResources/Materials/TestEnvironment.mat.meta new file mode 100644 index 000000000..9a0de1c18 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials/TestEnvironment.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a0a5f9e13fa7c47f78547e54896609da +timeCreated: 1483094905 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials/VertexColors.mat b/Assets/Obi/Samples/Common/SampleResources/Materials/VertexColors.mat new file mode 100644 index 000000000..e4ac15cd9 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials/VertexColors.mat @@ -0,0 +1,88 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: VertexColors + m_Shader: {fileID: 4800000, guid: 96c602bba0bc94471862812f91285c9a, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _EMISSION + - _METALLICGLOSSMAP + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 176574918b29445148929eb9a46c70ef, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 9, y: 5} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: a60971e26baf9443db442cd7e2ba5b5e, type: 3} + m_Scale: {x: 9, y: 5} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 2800000, guid: 83fe5f7b163cd49d085e4275cbf28473, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EmissionScaleUI: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} + - _EmissionColorUI: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials/VertexColors.mat.meta b/Assets/Obi/Samples/Common/SampleResources/Materials/VertexColors.mat.meta new file mode 100644 index 000000000..ac38677a1 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials/VertexColors.mat.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f342c944c10cc4c9188a4f352c6a6eee +labels: +- ObiCloth +- ObiRope +- ObiSoftbody +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials/Walls.mat b/Assets/Obi/Samples/Common/SampleResources/Materials/Walls.mat new file mode 100644 index 000000000..21e8d04db --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials/Walls.mat @@ -0,0 +1,87 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Walls + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _EMISSION + m_InvalidKeywords: [] + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 9, y: 5} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 9, y: 5} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EmissionScaleUI: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.3 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.49803922, g: 0.49803922, b: 0.49803922, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} + - _EmissionColorUI: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Samples/Common/SampleResources/Materials/Walls.mat.meta b/Assets/Obi/Samples/Common/SampleResources/Materials/Walls.mat.meta new file mode 100644 index 000000000..5a66eb87b --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Materials/Walls.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 22451ea3bd268401796b02a7b7573725 +timeCreated: 1440011158 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Models.meta b/Assets/Obi/Samples/Common/SampleResources/Models.meta new file mode 100644 index 000000000..4d494cf0f --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 11970e9494e804ccfac6c6fb46ab223c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Models/CubicSphere.fbx b/Assets/Obi/Samples/Common/SampleResources/Models/CubicSphere.fbx new file mode 100644 index 000000000..63cb26c54 Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Models/CubicSphere.fbx differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Models/CubicSphere.fbx.meta b/Assets/Obi/Samples/Common/SampleResources/Models/CubicSphere.fbx.meta new file mode 100644 index 000000000..459e02ea1 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Models/CubicSphere.fbx.meta @@ -0,0 +1,80 @@ +fileFormatVersion: 2 +guid: 2aa4d1401124f4f56bec911ef61b4766 +timeCreated: 1483097200 +licenseType: Store +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: pCube1 + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 50 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Models/TestEnvironment.fbx b/Assets/Obi/Samples/Common/SampleResources/Models/TestEnvironment.fbx new file mode 100644 index 000000000..7cbb23123 Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Models/TestEnvironment.fbx differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Models/TestEnvironment.fbx.meta b/Assets/Obi/Samples/Common/SampleResources/Models/TestEnvironment.fbx.meta new file mode 100644 index 000000000..45c3b5676 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Models/TestEnvironment.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 64df75de10b494f109b074d28a8eade0 +ModelImporter: + serializedVersion: 26 + internalIDToNameTable: + - first: + 1: 100000 + second: //RootNode + - first: + 4: 400000 + second: //RootNode + - first: + 23: 2300000 + second: //RootNode + - first: + 33: 3300000 + second: //RootNode + - first: + 43: 4300000 + second: pCube1 + externalObjects: {} + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + materialLocation: 0 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 500 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 0 + importBlendShapes: 1 + importCameras: 0 + importLights: 0 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 0 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + copyAvatar: 0 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 500 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts.meta new file mode 100644 index 000000000..0961a1f0a --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2851bb019d40d478b971f640aac2a9ba +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ActorCOMTransform.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/ActorCOMTransform.cs new file mode 100644 index 000000000..051482236 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ActorCOMTransform.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Obi; + +public class ActorCOMTransform : MonoBehaviour +{ + + public Vector3 offset; + public ObiActor actor; + + public void Update() + { + if (actor != null && actor.isLoaded) + { + Vector3 com; + actor.GetMass(out com); + transform.position = actor.solver.transform.TransformPoint(com) + offset; + } + } +} diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ActorCOMTransform.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/ActorCOMTransform.cs.meta new file mode 100644 index 000000000..8d256b6fa --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ActorCOMTransform.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eaf186b4497d04a31853e3c6570848c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ActorSpawner.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/ActorSpawner.cs new file mode 100644 index 000000000..5afb457fd --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ActorSpawner.cs @@ -0,0 +1,35 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Obi; + +public class ActorSpawner : MonoBehaviour { + + public ObiActor template; + + public int basePhase = 2; + public int maxInstances = 32; + public float spawnDelay = 0.3f; + + private int phase = 0; + private int instances = 0; + private float timeFromLastSpawn = 0; + + // Update is called once per frame + void Update () { + + timeFromLastSpawn += Time.deltaTime; + + if (Input.GetMouseButtonDown(0) && instances < maxInstances && timeFromLastSpawn > spawnDelay) + { + GameObject go = Instantiate(template.gameObject,transform.position,Quaternion.identity); + go.transform.SetParent(transform.parent); + + go.GetComponent().SetFilterCategory(basePhase + phase); + + phase++; + instances++; + timeFromLastSpawn = 0; + } + } +} diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ActorSpawner.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/ActorSpawner.cs.meta new file mode 100644 index 000000000..e8de32b0f --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ActorSpawner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 628acd4e2e0fc4c8eafc9a96563762a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/AddRandomVelocity.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/AddRandomVelocity.cs new file mode 100644 index 000000000..9a1f94717 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/AddRandomVelocity.cs @@ -0,0 +1,16 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Obi; + +[RequireComponent(typeof(ObiActor))] +public class AddRandomVelocity : MonoBehaviour { + + public float intensity = 5; + + void Update () { + if (Input.GetKeyDown(KeyCode.Space)){ + GetComponent().AddForce(UnityEngine.Random.onUnitSphere*intensity,ForceMode.VelocityChange); + } + } +} diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/AddRandomVelocity.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/AddRandomVelocity.cs.meta new file mode 100644 index 000000000..fb9001537 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/AddRandomVelocity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 16f6da785ba3d49c1aff763a6f55e424 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/Blinker.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/Blinker.cs new file mode 100644 index 000000000..897374084 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/Blinker.cs @@ -0,0 +1,23 @@ +using UnityEngine; + +public class Blinker : MonoBehaviour { + + public Color highlightColor; + + private Renderer rend; + private Color original; + + void Awake(){ + rend = GetComponent(); + original = rend.material.color; + } + + public void Blink(){ + rend.material.color = highlightColor; + } + + void LateUpdate(){ + rend.material.color += (original - rend.material.color)*Time.deltaTime*5; + } + +} diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/Blinker.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/Blinker.cs.meta new file mode 100644 index 000000000..db54e62ff --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/Blinker.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b63f5717a039e488ab8ccfb80eda50e6 +timeCreated: 1494351303 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/CharacterController.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/CharacterController.meta new file mode 100644 index 000000000..428e0c8f9 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/CharacterController.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4a1b43750986e462db0a210922ad76b1 +folderAsset: yes +timeCreated: 1518001485 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/CharacterController/ObiCharacter.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/CharacterController/ObiCharacter.cs new file mode 100644 index 000000000..57807d600 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/CharacterController/ObiCharacter.cs @@ -0,0 +1,229 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Obi{ + + [RequireComponent(typeof(Rigidbody))] + [RequireComponent(typeof(CapsuleCollider))] + [RequireComponent(typeof(Animator))] + public class ObiCharacter : MonoBehaviour { + + [SerializeField] float m_MovingTurnSpeed = 360; + [SerializeField] float m_StationaryTurnSpeed = 180; + [SerializeField] float m_JumpPower = 12f; + [Range(1f, 4f)][SerializeField] float m_GravityMultiplier = 2f; + [SerializeField] float m_RunCycleLegOffset = 0.2f; //specific to the character in sample assets, will need to be modified to work with others + [SerializeField] float m_MoveSpeedMultiplier = 1f; + [SerializeField] float m_AnimSpeedMultiplier = 1f; + [SerializeField] float m_GroundCheckDistance = 0.1f; + + Rigidbody m_Rigidbody; + Animator m_Animator; + bool m_IsGrounded; + float m_OrigGroundCheckDistance; + const float k_Half = 0.5f; + float m_TurnAmount; + float m_ForwardAmount; + Vector3 m_GroundNormal; + float m_CapsuleHeight; + Vector3 m_CapsuleCenter; + CapsuleCollider m_Capsule; + bool m_Crouching; + + void Start() + { + Physics.IgnoreLayerCollision(LayerMask.NameToLayer("Default"),LayerMask.NameToLayer("Ignore Raycast"),true); + + m_Animator = GetComponent(); + m_Rigidbody = GetComponent(); + m_Capsule = GetComponent(); + m_CapsuleHeight = m_Capsule.height; + m_CapsuleCenter = m_Capsule.center; + + m_Rigidbody.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationY | RigidbodyConstraints.FreezeRotationZ; + m_OrigGroundCheckDistance = m_GroundCheckDistance; + } + + + public void Move(Vector3 move, bool crouch, bool jump) + { + + // convert the world relative moveInput vector into a local-relative + // turn amount and forward amount required to head in the desired + // direction. + if (move.magnitude > 1f) move.Normalize(); + move = transform.InverseTransformDirection(move); + CheckGroundStatus(); + move = Vector3.ProjectOnPlane(move, m_GroundNormal); + m_TurnAmount = Mathf.Atan2(move.x, move.z); + m_ForwardAmount = move.z; + + ApplyExtraTurnRotation(); + + // control and velocity handling is different when grounded and airborne: + if (m_IsGrounded) + { + HandleGroundedMovement(crouch, jump); + } + else + { + HandleAirborneMovement(); + } + + ScaleCapsuleForCrouching(crouch); + PreventStandingInLowHeadroom(); + + // send input and other state parameters to the animator + UpdateAnimator(move); + } + + + void ScaleCapsuleForCrouching(bool crouch) + { + if (m_IsGrounded && crouch) + { + if (m_Crouching) return; + m_Capsule.height = m_Capsule.height / 2f; + m_Capsule.center = m_Capsule.center / 2f; + m_Crouching = true; + } + else + { + Ray crouchRay = new Ray(m_Rigidbody.position + Vector3.up * m_Capsule.radius * k_Half, Vector3.up); + float crouchRayLength = m_CapsuleHeight - m_Capsule.radius * k_Half; + if (Physics.SphereCast(crouchRay, m_Capsule.radius * k_Half, crouchRayLength, ~Physics.IgnoreRaycastLayer, QueryTriggerInteraction.Ignore)) + { + m_Crouching = true; + return; + } + m_Capsule.height = m_CapsuleHeight; + m_Capsule.center = m_CapsuleCenter; + m_Crouching = false; + } + } + + void PreventStandingInLowHeadroom() + { + // prevent standing up in crouch-only zones + if (!m_Crouching) + { + Ray crouchRay = new Ray(m_Rigidbody.position + Vector3.up * m_Capsule.radius * k_Half, Vector3.up); + float crouchRayLength = m_CapsuleHeight - m_Capsule.radius * k_Half; + if (Physics.SphereCast(crouchRay, m_Capsule.radius * k_Half, crouchRayLength, ~Physics.IgnoreRaycastLayer, QueryTriggerInteraction.Ignore)) + { + m_Crouching = true; + } + } + } + + + void UpdateAnimator(Vector3 move) + { + // update the animator parameters + m_Animator.SetFloat("Forward", m_ForwardAmount, 0.1f, Time.deltaTime); + m_Animator.SetFloat("Turn", m_TurnAmount, 0.1f, Time.deltaTime); + m_Animator.SetBool("Crouch", m_Crouching); + m_Animator.SetBool("OnGround", m_IsGrounded); + if (!m_IsGrounded) + { + m_Animator.SetFloat("Jump", m_Rigidbody.linearVelocity.y); + } + + // calculate which leg is behind, so as to leave that leg trailing in the jump animation + // (This code is reliant on the specific run cycle offset in our animations, + // and assumes one leg passes the other at the normalized clip times of 0.0 and 0.5) + float runCycle = + Mathf.Repeat( + m_Animator.GetCurrentAnimatorStateInfo(0).normalizedTime + m_RunCycleLegOffset, 1); + float jumpLeg = (runCycle < k_Half ? 1 : -1) * m_ForwardAmount; + if (m_IsGrounded) + { + m_Animator.SetFloat("JumpLeg", jumpLeg); + } + + // the anim speed multiplier allows the overall speed of walking/running to be tweaked in the inspector, + // which affects the movement speed because of the root motion. + if (m_IsGrounded && move.magnitude > 0) + { + m_Animator.speed = m_AnimSpeedMultiplier; + } + else + { + // don't use that while airborne + m_Animator.speed = 1; + } + } + + + void HandleAirborneMovement() + { + // apply extra gravity from multiplier: + Vector3 extraGravityForce = (Physics.gravity * m_GravityMultiplier) - Physics.gravity; + m_Rigidbody.AddForce(extraGravityForce); + + m_GroundCheckDistance = m_Rigidbody.linearVelocity.y < 0 ? m_OrigGroundCheckDistance : 0.01f; + } + + + void HandleGroundedMovement(bool crouch, bool jump) + { + // check whether conditions are right to allow a jump: + if (jump && !crouch && m_Animator.GetCurrentAnimatorStateInfo(0).IsName("Grounded")) + { + // jump! + m_Rigidbody.linearVelocity = new Vector3(m_Rigidbody.linearVelocity.x, m_JumpPower, m_Rigidbody.linearVelocity.z); + m_IsGrounded = false; + m_Animator.applyRootMotion = false; + m_GroundCheckDistance = 0.1f; + } + } + + void ApplyExtraTurnRotation() + { + // help the character turn faster (this is in addition to root rotation in the animation) + float turnSpeed = Mathf.Lerp(m_StationaryTurnSpeed, m_MovingTurnSpeed, m_ForwardAmount); + transform.Rotate(0, m_TurnAmount * turnSpeed * Time.deltaTime, 0); + } + + + public void OnAnimatorMove() + { + // we implement this function to override the default root motion. + // this allows us to modify the positional speed before it's applied. + if (m_IsGrounded) + { + Vector3 v = (m_Animator.deltaPosition * m_MoveSpeedMultiplier) / Time.deltaTime; + + // we preserve the existing y part of the current velocity. + v.y = m_Rigidbody.linearVelocity.y; + m_Rigidbody.linearVelocity = v; + } + } + + + void CheckGroundStatus() + { + RaycastHit hitInfo; +#if UNITY_EDITOR + // helper to visualise the ground check ray in the scene view + Debug.DrawLine(transform.position + (Vector3.up * 0.1f), transform.position + (Vector3.up * 0.1f) + (Vector3.down * m_GroundCheckDistance)); +#endif + // 0.1f is a small offset to start the ray from inside the character + // it is also good to note that the transform position in the sample assets is at the base of the character + if (Physics.Raycast(transform.position + (Vector3.up * 0.1f), Vector3.down, out hitInfo, m_GroundCheckDistance,~Physics.IgnoreRaycastLayer)) + { + m_GroundNormal = hitInfo.normal; + m_IsGrounded = true; + m_Animator.applyRootMotion = true; + } + else + { + m_IsGrounded = false; + m_GroundNormal = Vector3.up; + m_Animator.applyRootMotion = false; + } + } + } + +} \ No newline at end of file diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/CharacterController/ObiCharacter.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/CharacterController/ObiCharacter.cs.meta new file mode 100644 index 000000000..43091bd62 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/CharacterController/ObiCharacter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 30974edc9036841cebffee1d18425185 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/CharacterController/SampleCharacterController.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/CharacterController/SampleCharacterController.cs new file mode 100644 index 000000000..6d76046ea --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/CharacterController/SampleCharacterController.cs @@ -0,0 +1,72 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + + +namespace Obi{ + + [RequireComponent(typeof (ObiCharacter))] + public class SampleCharacterController : MonoBehaviour { + + private ObiCharacter m_Character; // A reference to the ThirdPersonCharacter on the object + private Transform m_Cam; // A reference to the main camera in the scenes transform + private Vector3 m_CamForward; // The current forward direction of the camera + private Vector3 m_Move; + private bool m_Jump; // the world-relative desired move direction, calculated from the camForward and user input. + + private void Start() + { + // get the transform of the main camera + if (Camera.main != null) + { + m_Cam = Camera.main.transform; + } + else + { + Debug.LogWarning( + "Warning: no main camera found. Third person character needs a Camera tagged \"MainCamera\", for camera-relative controls."); + // we use self-relative controls in this case, which probably isn't what the user wants, but hey, we warned them! + } + + // get the third person character ( this should never be null due to require component ) + m_Character = GetComponent(); + } + + + private void FixedUpdate() + { + if (!m_Jump) + { + m_Jump = Input.GetButtonDown("Jump"); + } + + // read inputs + float h = Input.GetAxis("Horizontal"); + float v = Input.GetAxis("Vertical"); + bool crouch = Input.GetKey(KeyCode.C); + + // calculate move direction to pass to character + if (m_Cam != null) + { + // calculate camera relative direction to move: + m_CamForward = Vector3.Scale(m_Cam.forward, new Vector3(1, 0, 1)).normalized; + m_Move = v*m_CamForward + h*m_Cam.right; + } + else + { + // we use world-relative directions in the case of no main camera + m_Move = v*Vector3.forward + h*Vector3.right; + } + #if !MOBILE_INPUT + // walk speed multiplier + if (Input.GetKey(KeyCode.LeftShift)) m_Move *= 0.5f; + #endif + + // pass all parameters to the character control script + m_Character.Move(m_Move, crouch, m_Jump); + m_Jump = false; + } + + } + +} diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/CharacterController/SampleCharacterController.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/CharacterController/SampleCharacterController.cs.meta new file mode 100644 index 000000000..b0aa0d0ac --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/CharacterController/SampleCharacterController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: de9bce9a2c43c424d81e85ea229e0004 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ColliderHighlighter.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/ColliderHighlighter.cs new file mode 100644 index 000000000..42b38487e --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ColliderHighlighter.cs @@ -0,0 +1,48 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using Obi; + +[RequireComponent(typeof(ObiSolver))] +public class ColliderHighlighter : MonoBehaviour { + + ObiSolver solver; + + void Awake(){ + solver = GetComponent(); + } + + void OnEnable () { + solver.OnCollision += Solver_OnCollision; + } + + void OnDisable(){ + solver.OnCollision -= Solver_OnCollision; + } + + void Solver_OnCollision (object sender, Obi.ObiSolver.ObiCollisionEventArgs e) + { + var colliderWorld = ObiColliderWorld.GetInstance(); + + Oni.Contact[] contacts = e.contacts.Data; + for(int i = 0; i < e.contacts.Count; ++i) + { + Oni.Contact c = contacts[i]; + // make sure this is an actual contact: + if (c.distance < 0.01f) + { + // get the collider: + var col = colliderWorld.colliderHandles[c.bodyB].owner; + + if (col != null) + { + // make it blink: + Blinker blinker = col.GetComponent(); + + if (blinker) + blinker.Blink(); + } + } + } + } +} diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ColliderHighlighter.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/ColliderHighlighter.cs.meta new file mode 100644 index 000000000..e0551d0db --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ColliderHighlighter.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ef31b6ca9a4124cb893de1adabbfab18 +timeCreated: 1458771359 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/CollisionEventHandler.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/CollisionEventHandler.cs new file mode 100644 index 000000000..fe6749dc5 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/CollisionEventHandler.cs @@ -0,0 +1,184 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using Obi; + +[RequireComponent(typeof(ObiSolver))] +public class CollisionEventHandler : MonoBehaviour +{ + + ObiSolver solver; + public int contactCount; + + Obi.ObiSolver.ObiCollisionEventArgs frame; + + void Awake() + { + solver = GetComponent(); + } + + void OnEnable() + { + solver.OnParticleCollision += Solver_OnCollision; + } + + void OnDisable() + { + solver.OnParticleCollision -= Solver_OnCollision; + } + + void Solver_OnCollision(object sender, Obi.ObiSolver.ObiCollisionEventArgs e) + { + frame = e; + } + + void OnDrawGizmos() + { + if (solver == null || frame == null || frame.contacts == null) return; + + Gizmos.matrix = solver.transform.localToWorldMatrix; + + contactCount = frame.contacts.Count; + + /*for (int i = 0; i < frame.contacts.Count; ++i) + { + var contact = frame.contacts.Data[i]; + + //if (contact.distance > 0.001f) continue; + + Gizmos.color = (contact.distance <= 0) ? Color.red : Color.green; + + //Gizmos.color = new Color(((i * 100) % 255) / 255.0f, ((i * 50) % 255) / 255.0f, ((i * 20) % 255) / 255.0f); + + Vector3 point = frame.contacts.Data[i].pointB; + + Gizmos.DrawSphere(point, 0.01f); + + Gizmos.DrawRay(point, contact.normal * contact.distance); + + Gizmos.color = Color.cyan; + Gizmos.DrawRay(point, contact.tangent * contact.tangentImpulse + contact.bitangent * contact.bitangentImpulse); + + }*/ + + for (int i = 0; i < frame.contacts.Count; ++i) + { + var contact = frame.contacts.Data[i]; + + //if (contact.distance > 0.001f) continue; + + Gizmos.color = (contact.distance <= 0) ? Color.red : Color.green; + + //Gizmos.color = new Color(((i * 100) % 255) / 255.0f, ((i * 50) % 255) / 255.0f, ((i * 20) % 255) / 255.0f); + + Vector3 point = Vector3.zero;//frame.contacts.Data[i].point; + + int simplexStart = solver.simplexCounts.GetSimplexStartAndSize(contact.bodyB, out int simplexSize); + + float radius = 0; + for (int j = 0; j < simplexSize; ++j) + { + point += (Vector3)solver.positions[solver.simplices[simplexStart + j]] * contact.pointB[j]; + radius += solver.principalRadii[solver.simplices[simplexStart + j]].x * contact.pointB[j]; + } + + Vector3 normal = contact.normal; + + //Gizmos.DrawSphere(point + normal.normalized * frame.contacts[i].distance, 0.01f); + + Gizmos.DrawSphere(point + normal * radius, 0.01f); + + Gizmos.DrawRay(point + normal * radius, normal.normalized * contact.distance); + } + } + +} + +/* +[RequireComponent(typeof(ObiSolver))] +public class CollisionEventHandler : MonoBehaviour { + + ObiSolver solver; + public int counter = 0; + public Collider targetCollider = null; + + HashSet particles = new HashSet(); + + void Awake(){ + solver = GetComponent(); + } + + void OnEnable () { + solver.OnCollision += Solver_OnCollision; + } + + void OnDisable(){ + solver.OnCollision -= Solver_OnCollision; + } + + void Solver_OnCollision (object sender, Obi.ObiSolver.ObiCollisionEventArgs e) + { + HashSet currentParticles = new HashSet(); + + for(int i = 0; i < e.contacts.Count; ++i) + { + if (e.contacts.Data[i].distance < 0.001f) + { + + Component collider; + if (ObiCollider.idToCollider.TryGetValue(e.contacts.Data[i].other,out collider)){ + + if (collider == targetCollider) + currentParticles.Add(e.contacts.Data[i].particle); + + } + } + } + + particles.ExceptWith(currentParticles); + counter += particles.Count; + particles = currentParticles; + } + +} +*/ + +/*[RequireComponent(typeof(ObiSolver))] +public class CollisionEventHandler : MonoBehaviour { + + ObiSolver solver; + public Collider targetCollider = null; + + void Awake(){ + solver = GetComponent(); + } + + void OnEnable () { + solver.OnCollision += Solver_OnCollision; + } + + void OnDisable(){ + solver.OnCollision -= Solver_OnCollision; + } + + void Solver_OnCollision (object sender, Obi.ObiSolver.ObiCollisionEventArgs e) + { + + for(int i = 0; i < e.contacts.Count; ++i) + { + if (e.contacts.Data[i].distance < 0.001f) + { + Component collider; + if (ObiCollider.idToCollider.TryGetValue(e.contacts.Data[i].other,out collider)){ + + if (collider == targetCollider) + + solver.viscosities[e.contacts.Data[i].particle] = Mathf.Max(0,solver.viscosities[e.contacts.Data[i].particle] - 0.1f * Time.fixedDeltaTime); + + } + } + } + + } + +}*/ diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/CollisionEventHandler.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/CollisionEventHandler.cs.meta new file mode 100644 index 000000000..79eedd8e8 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/CollisionEventHandler.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f6efd222d18e14e0b99e22b7fa35448c +timeCreated: 1458771359 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorFromPhase.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorFromPhase.cs new file mode 100644 index 000000000..af3d4df10 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorFromPhase.cs @@ -0,0 +1,38 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + /** + * Sample script that colors fluid particles based on their vorticity (2D only) + */ + [RequireComponent(typeof(ObiActor))] + public class ColorFromPhase : MonoBehaviour + { + ObiActor actor; + + void Awake(){ + actor = GetComponent(); + } + + void LateUpdate() + { + if (!isActiveAndEnabled || actor.solver == null) + return; + + for (int i = 0; i < actor.solverIndices.Length; ++i) + { + + int k = actor.solverIndices[i]; + int phase = ObiUtils.GetGroupFromPhase(actor.solver.phases[k]); + + actor.solver.colors[k] = ObiUtils.colorAlphabet[phase % ObiUtils.colorAlphabet.Length]; + + } + } + + } +} + diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorFromPhase.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorFromPhase.cs.meta new file mode 100644 index 000000000..3c3a07feb --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorFromPhase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3252a39e388cf4229a933f0158ece73b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorFromVelocity.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorFromVelocity.cs new file mode 100644 index 000000000..3c1d5552f --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorFromVelocity.cs @@ -0,0 +1,43 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + /** + * Sample script that colors fluid particles based on their vorticity (2D only) + */ + [RequireComponent(typeof(ObiActor))] + public class ColorFromVelocity : MonoBehaviour + { + ObiActor actor; + public float sensibility = 0.2f; + + void Awake(){ + actor = GetComponent(); + } + + public void OnEnable(){} + + void LateUpdate() + { + if (!isActiveAndEnabled || actor.solver == null) + return; + + for (int i = 0; i < actor.solverIndices.Length; ++i){ + + int k = actor.solverIndices[i]; + + Vector4 vel = actor.solver.velocities[k]; + + actor.solver.colors[k] = new Color(Mathf.Clamp(vel.x / sensibility,-1,1) * 0.5f + 0.5f, + Mathf.Clamp(vel.y / sensibility,-1,1) * 0.5f + 0.5f, + Mathf.Clamp(vel.z / sensibility,-1,1) * 0.5f + 0.5f,1); + + } + } + + } +} + diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorFromVelocity.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorFromVelocity.cs.meta new file mode 100644 index 000000000..ecfa51851 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorFromVelocity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5acdea6dc69cb46f3ad3d92757580843 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorRandomizer.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorRandomizer.cs new file mode 100644 index 000000000..dcc1ba2d7 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorRandomizer.cs @@ -0,0 +1,26 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + [RequireComponent(typeof(ObiActor))] + public class ColorRandomizer : MonoBehaviour + { + ObiActor actor; + public Gradient gradient = new Gradient(); + + void Start() + { + actor = GetComponent(); + + for (int i = 0; i < actor.solverIndices.Length; ++i) + { + actor.solver.colors[actor.solverIndices[i]] = gradient.Evaluate(UnityEngine.Random.value); + } + } + + } +} + diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorRandomizer.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorRandomizer.cs.meta new file mode 100644 index 000000000..5b858de42 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ColorRandomizer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2e479c6a54eba4250a39b1f9a46c3b14 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/DebugParticleFrames.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/DebugParticleFrames.cs new file mode 100644 index 000000000..25e1f211b --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/DebugParticleFrames.cs @@ -0,0 +1,39 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Obi; + +[ExecuteInEditMode] +[RequireComponent(typeof(ObiActor))] +public class DebugParticleFrames : MonoBehaviour { + + ObiActor actor; + public float size = 1; + + public void Awake() + { + actor = GetComponent(); + } + + // Update is called once per frame + void OnDrawGizmos () + { + Vector4 b1 = new Vector4(1, 0, 0, 0); + Vector4 b2 = new Vector4(0, 1, 0, 0); + Vector4 b3 = new Vector4(0, 0, 1, 0); + for (int i = 0; i < actor.activeParticleCount; ++i) + { + + Vector3 position = actor.GetParticlePosition(actor.solverIndices[i]); + Quaternion quat = actor.GetParticleOrientation(actor.solverIndices[i]); + + Gizmos.color = Color.red; + Gizmos.DrawRay(position, quat * b1 * size); + Gizmos.color = Color.green; + Gizmos.DrawRay(position, quat * b2 * size); + Gizmos.color = Color.blue; + Gizmos.DrawRay(position, quat * b3 * size); + } + + } +} diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/DebugParticleFrames.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/DebugParticleFrames.cs.meta new file mode 100644 index 000000000..59a21d00b --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/DebugParticleFrames.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bab528011ba08418f99627d25a289fd3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ExtrapolationCamera.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/ExtrapolationCamera.cs new file mode 100644 index 000000000..4f7a13465 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ExtrapolationCamera.cs @@ -0,0 +1,76 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Obi; + +public class ExtrapolationCamera : MonoBehaviour +{ + public Transform target = null; + + public float extrapolation = 10; + + [Range(0, 1)] + public float smoothness = 0.8f; + + [Range(0, 1)] + public float linearSpeed = 1; + + [Range(0, 1)] + public float rotationalSpeed = 1; + + [Min(0)] + public float distanceFromTarget = 4; + + Vector3 lastPosition; + Vector3 extrapolatedPos; + + void Start() + { + if (target != null) + lastPosition = target.position; + } + + private void FixedUpdate() + { + if (target != null) + { + // Get position delta since the last physics update: + Vector3 positionDelta = target.position - lastPosition; + positionDelta.y = 0; + + // extrapolate position using velocity (the division/multiplication by Time.deltaTime simplify out) + extrapolatedPos = Vector3.Lerp(target.position + positionDelta * extrapolation, extrapolatedPos, smoothness); + + // store the target's current com for the next frame: + lastPosition = target.position; + } + } + + void LateUpdate() + { + if (target != null) + { + // get vector from the camera to the extrapolated position: + Vector3 toTarget = extrapolatedPos - transform.position; + + // rotate the camera towards the extrapolated position: + transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(toTarget), rotationalSpeed); + + // keep our current world space height: + toTarget.y = 0; + + // move the camera towards the extrapolated position, keeping some distance to it: + transform.position += toTarget.normalized * (toTarget.magnitude - distanceFromTarget) * linearSpeed; + + } + } + + public void Teleport(Vector3 position, Quaternion rotation) + { + transform.position = position; + transform.rotation = rotation; + + if (target != null) + extrapolatedPos = lastPosition = target.position; + } +} diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ExtrapolationCamera.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/ExtrapolationCamera.cs.meta new file mode 100644 index 000000000..20257ab02 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ExtrapolationCamera.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7118f3a432315464297cab517f322eca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/FPSDisplay.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/FPSDisplay.cs new file mode 100644 index 000000000..2433ea770 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/FPSDisplay.cs @@ -0,0 +1,77 @@ +using UnityEngine; +using UnityEngine.UI; +using System.Collections; + +[RequireComponent(typeof(Text))] +public class FPSDisplay : MonoBehaviour +{ + public float updateInterval = 0.5f; + + public bool showMedian = false; + public float medianLearnrate = 0.05f; + + private float accum = 0; // FPS accumulated over the interval + private int frames = 0; // Frames drawn over the interval + private float timeleft; // Left time for current interval + private float currentFPS = 0; + + private float median = 0; + private float average = 0; + + public float CurrentFPS{ + get { return currentFPS; } + } + + public float FPSMedian + { + get { return median; } + } + + public float FPSAverage + { + get { return average; } + } + + Text uguiText; + + void Start() + { + uguiText = GetComponent(); + timeleft = updateInterval; + } + + void Update() + { + // Timing inside the editor is not accurate. Only use in actual build. + + //#if !UNITY_EDITOR + + timeleft -= Time.deltaTime; + accum += Time.timeScale/Time.deltaTime; + ++frames; + + // Interval ended - update GUI text and start new interval + if( timeleft <= 0.0) + { + currentFPS = accum / frames; + + average += (Mathf.Abs(currentFPS) - average) * 0.1f; + median += Mathf.Sign(currentFPS - median) * Mathf.Min(average * medianLearnrate, Mathf.Abs(currentFPS - median)); + + // display two fractional digits (f2 format) + float fps = showMedian ? median : currentFPS; + uguiText.text = System.String.Format("{0:F2} FPS ({1:F1} ms)", fps, 1000.0f / fps); + + timeleft = updateInterval; + accum = 0.0F; + frames = 0; + } + //#endif + } + + public void ResetMedianAndAverage() + { + median = 0; + average = 0; + } +} \ No newline at end of file diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/FPSDisplay.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/FPSDisplay.cs.meta new file mode 100644 index 000000000..3255db50f --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/FPSDisplay.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f14f49b61044e49ebb2f29511f2b3f41 +timeCreated: 1518870953 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/LookAroundCamera.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/LookAroundCamera.cs new file mode 100644 index 000000000..bcd4788a5 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/LookAroundCamera.cs @@ -0,0 +1,78 @@ +using UnityEngine; + +namespace Obi +{ + [RequireComponent(typeof(Camera))] + public class LookAroundCamera : MonoBehaviour + { + public struct CameraShot + { + public Vector3 position; + public Quaternion rotation; + public Vector3 up; + public float fieldOfView; + + public CameraShot(Vector3 position, Quaternion rotation, Vector3 up, float fieldOfView) + { + this.position = position; + this.rotation = rotation; + this.up = up; + this.fieldOfView = fieldOfView; + } + } + + private Camera cam; + private CameraShot currentShot; + + public float movementSpeed = 5; + public float rotationSpeed = 8; + public float translationResponse = 10; + public float rotationResponse = 10; + public float fovResponse = 10; + + private void Awake() + { + cam = GetComponent(); + currentShot = new CameraShot(transform.position, transform.rotation, transform.up, cam.fieldOfView); + } + + private void LookAt(Vector3 position, Vector3 up) + { + currentShot.up = up; + currentShot.rotation = Quaternion.LookRotation(position - currentShot.position, currentShot.up); + } + + private void UpdateShot() + { + transform.position = Vector3.Lerp(transform.position, currentShot.position, translationResponse * Time.deltaTime); + transform.rotation = Quaternion.Slerp(transform.rotation, currentShot.rotation, rotationResponse * Time.deltaTime); + cam.fieldOfView = Mathf.Lerp(cam.fieldOfView, currentShot.fieldOfView, fovResponse * Time.deltaTime); + } + + private void LateUpdate() + { + Vector3 delta = Vector3.zero; + + if (Input.GetKey(KeyCode.W)) + delta += cam.transform.forward; + if (Input.GetKey(KeyCode.A)) + delta -= cam.transform.right; + if (Input.GetKey(KeyCode.S)) + delta -= cam.transform.forward; + if (Input.GetKey(KeyCode.D)) + delta += cam.transform.right; + + currentShot.position += delta * Time.deltaTime * movementSpeed; + + if (Input.GetKey(KeyCode.Mouse0)) + { + float deltaX = Input.GetAxis("Mouse X") * rotationSpeed; + float deltaY = Input.GetAxis("Mouse Y") * rotationSpeed; + Quaternion fwd = currentShot.rotation * Quaternion.AngleAxis(deltaX, Vector3.up) * Quaternion.AngleAxis(deltaY, -Vector3.right); + LookAt(currentShot.position + fwd * Vector3.forward, Vector3.up); + } + + UpdateShot(); + } + } +} diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/LookAroundCamera.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/LookAroundCamera.cs.meta new file mode 100644 index 000000000..189500fea --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/LookAroundCamera.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 138d2e060d2cd42f58c60b22bca0159e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/MoveAndRotate.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/MoveAndRotate.cs new file mode 100644 index 000000000..7597a980e --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/MoveAndRotate.cs @@ -0,0 +1,39 @@ +using System; +using UnityEngine; + +namespace Obi +{ + public class MoveAndRotate : MonoBehaviour + { + public Vector3andSpace moveUnitsPerSecond; + public Vector3andSpace rotateDegreesPerSecond; + public bool ignoreTimescale; + private float m_LastRealTime; + + private void Start() + { + m_LastRealTime = Time.realtimeSinceStartup; + } + + // Update is called once per frame + private void FixedUpdate() + { + float deltaTime = Time.fixedDeltaTime; + if (ignoreTimescale) + { + deltaTime = (Time.realtimeSinceStartup - m_LastRealTime); + m_LastRealTime = Time.realtimeSinceStartup; + } + transform.Translate(moveUnitsPerSecond.value*deltaTime, moveUnitsPerSecond.space); + transform.Rotate(rotateDegreesPerSecond.value*deltaTime, rotateDegreesPerSecond.space); + } + + + [Serializable] + public class Vector3andSpace + { + public Vector3 value; + public Space space = Space.Self; + } + } +} diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/MoveAndRotate.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/MoveAndRotate.cs.meta new file mode 100644 index 000000000..80e9d582b --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/MoveAndRotate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dae436d3aef704ae1b22a06a92480162 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ObiActorTeleport.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/ObiActorTeleport.cs new file mode 100644 index 000000000..d9b6f8d66 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ObiActorTeleport.cs @@ -0,0 +1,15 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Obi; + +public class ObiActorTeleport : MonoBehaviour +{ + public ObiActor actor; + public Transform target; + + public void Teleport() + { + actor.Teleport(target.position, target.rotation); + } +} diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ObiActorTeleport.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/ObiActorTeleport.cs.meta new file mode 100644 index 000000000..69ee13061 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ObiActorTeleport.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ef23dec4d0c424492a85ebca02b625bc +timeCreated: 1491379841 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ObiParticleCounter.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/ObiParticleCounter.cs new file mode 100644 index 000000000..ee392463f --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ObiParticleCounter.cs @@ -0,0 +1,53 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Obi; + +[RequireComponent(typeof(ObiSolver))] +public class ObiParticleCounter : MonoBehaviour { + + ObiSolver solver; + public int counter = 0; + public Collider2D targetCollider = null; + + Obi.ObiSolver.ObiCollisionEventArgs frame; + HashSet particles = new HashSet(); + + void Awake(){ + solver = GetComponent(); + } + + void OnEnable () { + solver.OnCollision += Solver_OnCollision; + } + + void OnDisable(){ + solver.OnCollision -= Solver_OnCollision; + } + + void Solver_OnCollision (object sender, Obi.ObiSolver.ObiCollisionEventArgs e) + { + HashSet currentParticles = new HashSet(); + + for(int i = 0; i < e.contacts.Count; ++i) + { + if (e.contacts.Data[i].distance < 0.001f) + { + + /*Component collider; + if (ObiCollider2D.idToCollider.TryGetValue(e.contacts.Data[i].other,out collider)){ + + if (collider == targetCollider) + currentParticles.Add(e.contacts.Data[i].particle); + + }*/ + } + } + + particles.ExceptWith(currentParticles); + counter += particles.Count; + particles = currentParticles;Debug.Log(counter); + } + +} + diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ObiParticleCounter.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/ObiParticleCounter.cs.meta new file mode 100644 index 000000000..399ee1a65 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ObiParticleCounter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b4d7608433fa641c6ad7e1ad3716e0b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ObjectDragger.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/ObjectDragger.cs new file mode 100644 index 000000000..1ca0319cf --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ObjectDragger.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using System.Collections; + +public class ObjectDragger : MonoBehaviour +{ + + private Vector3 screenPoint; + private Vector3 offset; + + void OnMouseDown() + { + screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position); + offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z)); + } + + void OnMouseDrag() + { + Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z); + transform.position = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset; + } + + + } \ No newline at end of file diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ObjectDragger.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/ObjectDragger.cs.meta new file mode 100644 index 000000000..37e2551c0 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ObjectDragger.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cbe5860a158ab4ff9852d93167f38e5a +timeCreated: 1490723525 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ObjectLimit.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/ObjectLimit.cs new file mode 100644 index 000000000..9bea6154e --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ObjectLimit.cs @@ -0,0 +1,22 @@ +using UnityEngine; + using System.Collections; + + public class ObjectLimit : MonoBehaviour + { + + public float minX = 0; + public float maxX = 1; + public float minY = 0; + public float maxY = 1; + public float minZ = 0; + public float maxZ = 1; + + void Update() + { + transform.localPosition = new Vector3(Mathf.Clamp(gameObject.transform.localPosition.x,minX,maxX), + Mathf.Clamp(gameObject.transform.localPosition.y,minY,maxY), + Mathf.Clamp(gameObject.transform.localPosition.z,minZ,maxZ)); + + } + + } \ No newline at end of file diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/ObjectLimit.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/ObjectLimit.cs.meta new file mode 100644 index 000000000..05e6e67b4 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/ObjectLimit.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6da1d294c86704f3394415f542741ebe +timeCreated: 1490723525 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/SlowmoToggler.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/SlowmoToggler.cs new file mode 100644 index 000000000..2e9072166 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/SlowmoToggler.cs @@ -0,0 +1,10 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class SlowmoToggler : MonoBehaviour { + + public void Slowmo (bool slowmo) { + Time.timeScale = slowmo?0.25f:1; + } +} diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/SlowmoToggler.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/SlowmoToggler.cs.meta new file mode 100644 index 000000000..b29b2a875 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/SlowmoToggler.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5ec309595a8ca48b3a4deae53d6b023d +timeCreated: 1496678069 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/WorldSpaceGravity.cs b/Assets/Obi/Samples/Common/SampleResources/Scripts/WorldSpaceGravity.cs new file mode 100644 index 000000000..c91f8816c --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/WorldSpaceGravity.cs @@ -0,0 +1,21 @@ +using UnityEngine; +using Obi; + +[RequireComponent(typeof(ObiSolver))] +public class WorldSpaceGravity : MonoBehaviour +{ + + ObiSolver solver; + public Vector3 worldGravity = new Vector3(0,-9.81f,0); + + void Awake() + { + solver = GetComponent(); + } + + void Update() + { + solver.parameters.gravity = transform.InverseTransformDirection(worldGravity); + solver.PushSolverParameters(); + } +} diff --git a/Assets/Obi/Samples/Common/SampleResources/Scripts/WorldSpaceGravity.cs.meta b/Assets/Obi/Samples/Common/SampleResources/Scripts/WorldSpaceGravity.cs.meta new file mode 100644 index 000000000..cb0ae7f97 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Scripts/WorldSpaceGravity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 278a56537b77b462a894513bc9d3e474 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/SparksEmitter.prefab b/Assets/Obi/Samples/Common/SampleResources/SparksEmitter.prefab new file mode 100644 index 000000000..d891c0eae --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/SparksEmitter.prefab @@ -0,0 +1,4989 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1583403103468830 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4722265400142248} + - component: {fileID: 198836399661015336} + - component: {fileID: 199384163534097954} + m_Layer: 0 + m_Name: SparksEmitter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4722265400142248 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1583403103468830} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 1.703, y: 0.731, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!198 &198836399661015336 +ParticleSystem: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1583403103468830} + serializedVersion: 8 + lengthInSec: 5 + simulationSpeed: 2 + stopAction: 0 + cullingMode: 3 + ringBufferMode: 0 + ringBufferLoopRange: {x: 0, y: 1} + emitterVelocityMode: 1 + looping: 1 + prewarm: 0 + playOnAwake: 1 + useUnscaledTime: 0 + autoRandomSeed: 1 + startDelay: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + moveWithTransform: 1 + moveWithCustomTransform: {fileID: 0} + scalingMode: 1 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + serializedVersion: 2 + minMaxState: 3 + scalar: 3 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.33333334 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + startSpeed: + serializedVersion: 2 + minMaxState: 3 + scalar: 2 + minScalar: 0.5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.25 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + startColor: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + startSize: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.05 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotation: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + randomizeRotationDirection: 0 + gravitySource: 0 + maxNumParticles: 400 + customEmitterVelocity: {x: 0, y: 0, z: 0} + size3D: 0 + rotation3D: 0 + gravityModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.5 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ShapeModule: + serializedVersion: 6 + enabled: 1 + type: 4 + angle: 10 + length: 5 + boxThickness: {x: 0, y: 0, z: 0} + radiusThickness: 1 + donutRadius: 0.2 + m_Position: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + placementMode: 0 + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_MeshSpawn: + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_Sprite: {fileID: 0} + m_SpriteRenderer: {fileID: 0} + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + m_Texture: {fileID: 0} + m_TextureClipChannel: 3 + m_TextureClipThreshold: 0 + m_TextureUVChannel: 0 + m_TextureColorAffectsParticles: 1 + m_TextureAlphaAffectsParticles: 1 + m_TextureBilinearFiltering: 0 + randomDirectionAmount: 0 + sphericalDirectionAmount: 0 + randomPositionAmount: 0 + radius: + value: 0.03 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + arc: + value: 360 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + EmissionModule: + enabled: 1 + serializedVersion: 4 + rateOverTime: + serializedVersion: 2 + minMaxState: 0 + scalar: 20 + minScalar: 10 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rateOverDistance: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_BurstCount: 3 + m_Bursts: + - serializedVersion: 2 + time: 0 + countCurve: + serializedVersion: 2 + minMaxState: 3 + scalar: 10 + minScalar: 3 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + cycleCount: 1 + repeatInterval: 0.01 + probability: 1 + - serializedVersion: 2 + time: 1 + countCurve: + serializedVersion: 2 + minMaxState: 3 + scalar: 15 + minScalar: 6 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + cycleCount: 1 + repeatInterval: 0.01 + probability: 1 + - serializedVersion: 2 + time: 1.3 + countCurve: + serializedVersion: 2 + minMaxState: 3 + scalar: 20 + minScalar: 2 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + cycleCount: 1 + repeatInterval: 0.01 + probability: 1 + SizeModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + RotationModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 0, a: 1} + key1: {r: 1, g: 0.47058824, b: 0, a: 0} + key2: {r: 1, g: 0, b: 0.03137255, a: 0} + key3: {r: 0.23529412, g: 0.23529412, b: 0.23529412, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 17733 + ctime2: 56861 + ctime3: 24865 + ctime4: 39321 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 16384 + atime1: 65535 + atime2: 65535 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 3 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + UVModule: + serializedVersion: 2 + enabled: 0 + mode: 0 + timeMode: 0 + fps: 30 + frameOverTime: + serializedVersion: 2 + minMaxState: 1 + scalar: 0.9999 + minScalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startFrame: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedRange: {x: 0, y: 1} + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + rowMode: 1 + sprites: + - sprite: {fileID: 0} + flipU: 0 + flipV: 0 + VelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + radial: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + LifetimeByEmitterSpeedModule: + enabled: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: -0.8 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.2 + inSlope: -0.8 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Range: {x: 0, y: 1} + ForceModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + serializedVersion: 2 + enabled: 0 + multiplierCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + influenceFilter: 0 + influenceMask: + serializedVersion: 2 + m_Bits: 4294967295 + influenceList: [] + ClampVelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + magnitude: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxis: 0 + inWorldSpace: 0 + multiplyDragByParticleSize: 1 + multiplyDragByParticleVelocity: 1 + dampen: 1 + drag: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + NoiseModule: + enabled: 0 + strength: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 2 + scrollSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remap: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapY: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapZ: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapEnabled: 0 + positionAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + sizeAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + SizeBySpeedModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + range: {x: 0, y: 1} + CollisionModule: + enabled: 1 + serializedVersion: 4 + type: 1 + collisionMode: 0 + colliderForce: 0 + multiplyColliderForceByParticleSize: 0 + multiplyColliderForceByParticleSpeed: 0 + multiplyColliderForceByCollisionAngle: 1 + m_Planes: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_Dampen: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Bounce: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.3 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_EnergyLossOnCollision: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.02 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minKillSpeed: 0 + maxKillSpeed: 100 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 1 + TriggerModule: + enabled: 0 + serializedVersion: 2 + inside: 1 + outside: 0 + enter: 0 + exit: 0 + colliderQueryMode: 0 + radiusScale: 1 + primitives: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - serializedVersion: 3 + emitter: {fileID: 0} + type: 0 + properties: 0 + emitProbability: 1 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + intensityCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxLights: 20 + TrailModule: + enabled: 0 + mode: 0 + ratio: 1 + lifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minVertexDistance: 0.2 + textureMode: 0 + textureScale: {x: 1, y: 1} + ribbonCount: 1 + shadowBias: 0.5 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + generateLightingData: 0 + splitSubEmitterRibbons: 0 + attachRibbonsToTransform: 0 + colorOverLifetime: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + widthOverTrail: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorOverTrail: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + CustomDataModule: + enabled: 0 + mode0: 0 + vectorComponentCount0: 4 + color0: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel0: Color + vector0_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_0: X + vector0_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_1: Y + vector0_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_2: Z + vector0_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_3: W + mode1: 0 + vectorComponentCount1: 4 + color1: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel1: Color + vector1_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_0: X + vector1_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_1: Y + vector1_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_2: Z + vector1_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_3: W +--- !u!199 &199384163534097954 +ParticleSystemRenderer: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1583403103468830} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10301, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_RenderMode: 1 + m_MeshDistribution: 0 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0.02 + m_LengthScale: 2 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_ShadowBias: 0 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Flip: {x: 0, y: 0, z: 0} + m_EnableGPUInstancing: 0 + m_ApplyActiveColorSpace: 0 + m_AllowRoll: 1 + m_FreeformStretching: 0 + m_RotateWithStretchDirection: 1 + m_UseCustomVertexStreams: 0 + m_VertexStreams: 0001030405 + m_UseCustomTrailVertexStreams: 0 + m_TrailVertexStreams: 00010304 + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} + m_MeshWeighting: 1 + m_MeshWeighting1: 1 + m_MeshWeighting2: 1 + m_MeshWeighting3: 1 diff --git a/Assets/Obi/Samples/Common/SampleResources/SparksEmitter.prefab.meta b/Assets/Obi/Samples/Common/SampleResources/SparksEmitter.prefab.meta new file mode 100644 index 000000000..bf6777e0d --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/SparksEmitter.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 46b3b311bc85645d88ddbc56ad5465f2 +labels: +- ObiRope +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Textures.meta b/Assets/Obi/Samples/Common/SampleResources/Textures.meta new file mode 100644 index 000000000..a9d4be5b7 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 58f248a554f634b9b8e2b604bffc0611 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Textures/ClothPattern.png b/Assets/Obi/Samples/Common/SampleResources/Textures/ClothPattern.png new file mode 100644 index 000000000..5277d46a3 Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Textures/ClothPattern.png differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Textures/ClothPattern.png.meta b/Assets/Obi/Samples/Common/SampleResources/Textures/ClothPattern.png.meta new file mode 100644 index 000000000..bc957810a --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Textures/ClothPattern.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: a60971e26baf9443db442cd7e2ba5b5e +timeCreated: 1435572248 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: 0 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Textures/ClothPattern_SM.psd b/Assets/Obi/Samples/Common/SampleResources/Textures/ClothPattern_SM.psd new file mode 100644 index 000000000..c5541c637 Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Textures/ClothPattern_SM.psd differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Textures/ClothPattern_SM.psd.meta b/Assets/Obi/Samples/Common/SampleResources/Textures/ClothPattern_SM.psd.meta new file mode 100644 index 000000000..0d23fff70 --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Textures/ClothPattern_SM.psd.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 83fe5f7b163cd49d085e4275cbf28473 +timeCreated: 1435574798 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/Common/SampleResources/Textures/checker.psd b/Assets/Obi/Samples/Common/SampleResources/Textures/checker.psd new file mode 100644 index 000000000..9c88470d5 Binary files /dev/null and b/Assets/Obi/Samples/Common/SampleResources/Textures/checker.psd differ diff --git a/Assets/Obi/Samples/Common/SampleResources/Textures/checker.psd.meta b/Assets/Obi/Samples/Common/SampleResources/Textures/checker.psd.meta new file mode 100644 index 000000000..432b8a6ac --- /dev/null +++ b/Assets/Obi/Samples/Common/SampleResources/Textures/checker.psd.meta @@ -0,0 +1,100 @@ +fileFormatVersion: 2 +guid: 8fbd9c5f957b8434883cdfce9d6a3c27 +timeCreated: 1483095694 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod.meta b/Assets/Obi/Samples/RopeAndRod.meta new file mode 100644 index 000000000..9b1be62b3 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: d590e90abb60549c5982d874c4264501 +labels: +- ObiRope +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/Chains.unity b/Assets/Obi/Samples/RopeAndRod/Chains.unity new file mode 100644 index 000000000..bd41fd1ae --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/Chains.unity @@ -0,0 +1,2600 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: b1477bd4d33969c458d1e706ee66efd9, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &28960618 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 28960622} + - component: {fileID: 28960621} + - component: {fileID: 28960620} + - component: {fileID: 28960619} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &28960619 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 28960618} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &28960620 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 28960618} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 1 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &28960621 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 28960618} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 1002464895} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_UseReflectionProbes: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &28960622 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 28960618} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.015565137, y: 0.015565143, z: 0.015565143} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1989779175} + m_Father: {fileID: 1804369595} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 1} + m_SizeDelta: {x: 250, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &34917040 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 34917041} + - component: {fileID: 34917045} + - component: {fileID: 34917044} + - component: {fileID: 34917043} + - component: {fileID: 34917042} + - component: {fileID: 34917047} + - component: {fileID: 34917046} + m_Layer: 0 + m_Name: Target1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &34917041 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 34917040} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.68, z: -0.75} + m_LocalScale: {x: 0.36332673, y: 1.194755, z: 0.36332673} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 870807627} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &34917042 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 34917040} + serializedVersion: 5 + m_Mass: 0.5 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!23 &34917043 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 34917040} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &34917044 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 34917040} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &34917045 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 34917040} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &34917046 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 34917040} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &34917047 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 34917040} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 34917044} + m_DistanceField: {fileID: 0} +--- !u!1 &37255347 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 37255348} + - component: {fileID: 37255352} + - component: {fileID: 37255351} + - component: {fileID: 37255350} + - component: {fileID: 37255349} + - component: {fileID: 37255354} + - component: {fileID: 37255353} + m_Layer: 0 + m_Name: Target2 (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &37255348 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37255347} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.81, y: 0.68, z: 0.75} + m_LocalScale: {x: 0.36332998, y: 1.19476, z: 0.36332998} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 870807627} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &37255349 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37255347} + serializedVersion: 5 + m_Mass: 0.5 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!23 &37255350 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37255347} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &37255351 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37255347} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &37255352 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37255347} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &37255353 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37255347} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &37255354 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37255347} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 37255351} + m_DistanceField: {fileID: 0} +--- !u!1 &56383757 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 56383761} + - component: {fileID: 56383760} + - component: {fileID: 56383759} + - component: {fileID: 56383758} + - component: {fileID: 56383762} + - component: {fileID: 56383764} + - component: {fileID: 56383763} + m_Layer: 0 + m_Name: ChainBall + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &56383758 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 56383757} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 278487642d12d4bf78416679d50d6fd7, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!135 &56383759 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 56383757} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &56383760 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 56383757} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &56383761 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 56383757} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.926, y: 2.74, z: 0.06} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &56383762 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 56383757} + serializedVersion: 5 + m_Mass: 5 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 2 +--- !u!114 &56383763 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 56383757} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &56383764 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 56383757} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 56383759} + m_DistanceField: {fileID: 0} +--- !u!1001 &421764872 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalScale.x + value: 1.2 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalScale.y + value: 1.2 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalScale.z + value: 1.2 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a0a5f9e13fa7c47f78547e54896609da, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459882} + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459883} + m_SourcePrefab: {fileID: 100100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!1 &447687745 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 447687746} + - component: {fileID: 447687750} + - component: {fileID: 447687749} + - component: {fileID: 447687748} + - component: {fileID: 447687747} + - component: {fileID: 447687752} + - component: {fileID: 447687751} + m_Layer: 0 + m_Name: Target2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &447687746 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447687745} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.68, z: 0.75} + m_LocalScale: {x: 0.36332673, y: 1.194755, z: 0.36332673} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 870807627} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &447687747 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447687745} + serializedVersion: 5 + m_Mass: 0.5 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!23 &447687748 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447687745} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &447687749 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447687745} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &447687750 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447687745} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &447687751 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447687745} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &447687752 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447687745} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 447687749} + m_DistanceField: {fileID: 0} +--- !u!1 &506459881 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + m_PrefabInstance: {fileID: 421764872} + m_PrefabAsset: {fileID: 0} +--- !u!64 &506459882 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 4300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!114 &506459883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 11400000, guid: d368f2c47473d4bfb8dd9f08073cb403, type: 2} + filter: -65535 + m_SourceCollider: {fileID: 506459882} + m_DistanceField: {fileID: 0} +--- !u!1 &512808546 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 512808547} + - component: {fileID: 512808551} + - component: {fileID: 512808550} + - component: {fileID: 512808549} + - component: {fileID: 512808548} + - component: {fileID: 512808553} + - component: {fileID: 512808552} + m_Layer: 0 + m_Name: Target (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &512808547 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 512808546} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.81, y: 0.68, z: 0} + m_LocalScale: {x: 0.36332998, y: 1.19476, z: 0.36332998} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 870807627} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &512808548 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 512808546} + serializedVersion: 5 + m_Mass: 0.5 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!23 &512808549 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 512808546} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &512808550 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 512808546} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &512808551 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 512808546} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &512808552 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 512808546} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &512808553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 512808546} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 512808550} + m_DistanceField: {fileID: 0} +--- !u!1 &646258623 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 646258625} + - component: {fileID: 646258624} + m_Layer: 0 + m_Name: BurstCollisionWorld + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &646258624 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 646258623} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1a161c4294214a4fbcb7e9e94800494, type: 3} + m_Name: + m_EditorClassIdentifier: Obi::Obi.BurstColliderWorld + cellSpans: + m_AlignBytes: 16 +--- !u!4 &646258625 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 646258623} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &870807626 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 870807627} + m_Layer: 0 + m_Name: Targets + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &870807627 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 870807626} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 1.89} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1225692703} + - {fileID: 34917041} + - {fileID: 447687746} + - {fileID: 37255348} + - {fileID: 1535267385} + - {fileID: 512808547} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1002464891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002464896} + - component: {fileID: 1002464895} + - component: {fileID: 1002464893} + - component: {fileID: 1002464892} + - component: {fileID: 1002464897} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1002464892 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!124 &1002464893 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!20 &1002464895 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 75 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1002464896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + serializedVersion: 2 + m_LocalRotation: {x: 0.15760262, y: 0, z: 0, w: 0.98750263} + m_LocalPosition: {x: 0, y: 4.7, z: -5.62} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1002464897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62e83a599724f45a4aa337d74764e572, type: 3} + m_Name: + m_EditorClassIdentifier: + skin: {fileID: 11400000, guid: b90d3c214c99743b0865fc0e0d1f1a15, type: 2} + threadColor: {r: 0, g: 1, b: 1, a: 1} + taskColor: {r: 0, g: 1, b: 0, a: 1} + parallelTaskColor: {r: 1, g: 0.8, b: 0.2, a: 1} + renderTaskColor: {r: 0.2, g: 0.7, b: 1, a: 1} + defaultTaskColor: {r: 1, g: 0.5, b: 0.2, a: 1} + showPercentages: 0 + profileThrottle: 30 +--- !u!1 &1175446144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1175446146} + - component: {fileID: 1175446145} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1175446145 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.03 + m_NormalBias: 0.01 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1175446146 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + serializedVersion: 2 + m_LocalRotation: {x: 0.41595167, y: -0.26247028, z: 0.26683384, w: 0.82879025} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 56.052002, y: -22.431002, z: 23.642} +--- !u!1 &1225692698 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1225692703} + - component: {fileID: 1225692702} + - component: {fileID: 1225692701} + - component: {fileID: 1225692700} + - component: {fileID: 1225692699} + - component: {fileID: 1225692705} + - component: {fileID: 1225692704} + m_Layer: 0 + m_Name: Target + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!54 &1225692699 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225692698} + serializedVersion: 5 + m_Mass: 0.5 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!23 &1225692700 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225692698} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1225692701 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225692698} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1225692702 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225692698} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1225692703 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225692698} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.68, z: 0} + m_LocalScale: {x: 0.36332673, y: 1.194755, z: 0.36332673} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 870807627} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1225692704 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225692698} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &1225692705 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225692698} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 1225692701} + m_DistanceField: {fileID: 0} +--- !u!1 &1346965641 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1346965650} + - component: {fileID: 1346965642} + - component: {fileID: 1346965647} + - component: {fileID: 1346965644} + - component: {fileID: 1346965643} + - component: {fileID: 1346965648} + - component: {fileID: 1346965645} + - component: {fileID: 1346965646} + m_Layer: 10 + m_Name: Obi Chain + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1346965642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000490000004a0000004b0000004c0000004d0000004e0000004f000000500000005100000052000000530000005400000055000000560000005700000058000000590000005a0000005b0000005c0000005d0000005e0000005f000000600000006100000062000000630000006400000065000000660000006700000068000000690000006a0000006b0000006c0000006d0000006e0000006f000000700000007100000072000000730000007400000075000000760000007700000078000000790000007a0000007b000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 5.092446 + elements: + - particle1: 0 + particle2: 1 + restLength: 0.20054139 + constraintForce: 0 + tearResistance: 1 + - particle1: 1 + particle2: 2 + restLength: 0.20063484 + constraintForce: 0 + tearResistance: 1 + - particle1: 2 + particle2: 3 + restLength: 0.23151232 + constraintForce: 0 + tearResistance: 1 + - particle1: 3 + particle2: 4 + restLength: 0.23186833 + constraintForce: 0 + tearResistance: 1 + - particle1: 4 + particle2: 5 + restLength: 0.23228103 + constraintForce: 0 + tearResistance: 1 + - particle1: 5 + particle2: 6 + restLength: 0.23191649 + constraintForce: 0 + tearResistance: 1 + - particle1: 6 + particle2: 7 + restLength: 0.23182793 + constraintForce: 0 + tearResistance: 1 + - particle1: 7 + particle2: 8 + restLength: 0.23240596 + constraintForce: 0 + tearResistance: 1 + - particle1: 8 + particle2: 9 + restLength: 0.21189757 + constraintForce: 0 + tearResistance: 1 + - particle1: 9 + particle2: 10 + restLength: 0.22655237 + constraintForce: 0 + tearResistance: 1 + - particle1: 10 + particle2: 11 + restLength: 0.23074576 + constraintForce: 0 + tearResistance: 1 + - particle1: 11 + particle2: 12 + restLength: 0.23471601 + constraintForce: 0 + tearResistance: 1 + - particle1: 12 + particle2: 13 + restLength: 0.2193626 + constraintForce: 0 + tearResistance: 1 + - particle1: 13 + particle2: 14 + restLength: 0.22230886 + constraintForce: 0 + tearResistance: 1 + - particle1: 14 + particle2: 15 + restLength: 0.21369718 + constraintForce: 0 + tearResistance: 1 + - particle1: 15 + particle2: 16 + restLength: 0.20833145 + constraintForce: 0 + tearResistance: 1 + - particle1: 16 + particle2: 17 + restLength: 0.21743543 + constraintForce: 0 + tearResistance: 1 + - particle1: 17 + particle2: 18 + restLength: 0.21923774 + constraintForce: 0 + tearResistance: 1 + - particle1: 18 + particle2: 19 + restLength: 0.21907198 + constraintForce: 0 + tearResistance: 1 + - particle1: 19 + particle2: 20 + restLength: 0.21933578 + constraintForce: 0 + tearResistance: 1 + - particle1: 20 + particle2: 21 + restLength: 0.21983477 + constraintForce: 0 + tearResistance: 1 + - particle1: 21 + particle2: 22 + restLength: 0.22001559 + constraintForce: 0 + tearResistance: 1 + - particle1: 22 + particle2: 23 + restLength: 0.21691507 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: 9b7a30b754796421d9e0b869d8eb345b, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0.05 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &1346965643 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 09ac962c0743c400aa230ebf871b6156, type: 3} + m_Name: + m_EditorClassIdentifier: + linkInstances: [] + randomizeLinks: 1 + linkScale: {x: 34, y: 34, z: 34} + linkPrefabs: + - {fileID: 116810, guid: 1a25eaebcccc14ffeabd9b15641f8b51, type: 3} + - {fileID: 116810, guid: 2d2a7dadfeecb4ffc9bdbfa8ae0b4727, type: 3} + twistAnchor: 0 + sectionTwist: 90 +--- !u!114 &1346965644 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 09ac962c0743c400aa230ebf871b6156, type: 3} + m_Name: + m_EditorClassIdentifier: + linkInstances: [] + randomizeLinks: 0 + linkScale: {x: 1, y: 1, z: 1} + linkPrefabs: [] + twistAnchor: 0 + sectionTwist: 0 +--- !u!114 &1346965645 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965642} + m_Target: {fileID: 56383761} + m_ParticleGroup: {fileID: 7546284794258584817, guid: 9b7a30b754796421d9e0b869d8eb345b, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1346965646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965642} + m_Target: {fileID: 1804369595} + m_ParticleGroup: {fileID: -4517029930201779066, guid: 9b7a30b754796421d9e0b869d8eb345b, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1346965647 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!114 &1346965648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965642} + m_Target: {fileID: 56383761} + m_ParticleGroup: {fileID: -53998285165153434, guid: 9b7a30b754796421d9e0b869d8eb345b, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!4 &1346965650 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.072, y: 3.14, z: 1.78} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1535267384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1535267385} + - component: {fileID: 1535267389} + - component: {fileID: 1535267388} + - component: {fileID: 1535267387} + - component: {fileID: 1535267386} + - component: {fileID: 1535267391} + - component: {fileID: 1535267390} + m_Layer: 0 + m_Name: Target1 (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1535267385 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1535267384} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.81, y: 0.68, z: -0.75} + m_LocalScale: {x: 0.36332998, y: 1.19476, z: 0.36332998} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 870807627} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &1535267386 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1535267384} + serializedVersion: 5 + m_Mass: 0.5 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!23 &1535267387 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1535267384} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1535267388 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1535267384} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1535267389 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1535267384} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &1535267390 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1535267384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &1535267391 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1535267384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 1535267388} + m_DistanceField: {fileID: 0} +--- !u!1 &1715322543 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1715322546} + - component: {fileID: 1715322545} + - component: {fileID: 1715322544} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1715322544 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1715322543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1715322545 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1715322543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1715322546 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1715322543} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1804369591 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1804369595} + - component: {fileID: 1804369594} + - component: {fileID: 1804369593} + - component: {fileID: 1804369592} + - component: {fileID: 1804369596} + - component: {fileID: 1804369597} + m_Layer: 0 + m_Name: ChainHandle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1804369592 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1804369591} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1804369593 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1804369591} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1804369594 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1804369591} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1804369595 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1804369591} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.35, y: 3.145, z: 1.78} + m_LocalScale: {x: 0.5527207, y: 0.5527207, z: 0.5527207} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 28960622} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1804369596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1804369591} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cbe5860a158ab4ff9852d93167f38e5a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1804369597 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1804369591} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6da1d294c86704f3394415f542741ebe, type: 3} + m_Name: + m_EditorClassIdentifier: + minX: -5 + maxX: 5 + minY: 1 + maxY: 7 + minZ: 0 + maxZ: 2 +--- !u!1 &1989779174 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1989779175} + - component: {fileID: 1989779177} + - component: {fileID: 1989779176} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1989779175 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989779174} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 28960622} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 200, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1989779176 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989779174} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 25 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Drag me around! +--- !u!222 &1989779177 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989779174} + m_CullTransparentMesh: 0 +--- !u!1 &2102841794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2102841797} + - component: {fileID: 2102841796} + - component: {fileID: 2102841795} + m_Layer: 0 + m_Name: Obi Solver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2102841795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d9704d540ac448439a425526f6b2986, type: 3} + m_Name: + m_EditorClassIdentifier: + solvers: + - {fileID: 2102841796} + substeps: 4 +--- !u!114 &2102841796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d174fab52f0c4b8399f25d5c3ea524c, type: 3} + m_Name: + m_EditorClassIdentifier: + simulateWhenInvisible: 1 + m_Backend: 1 + parameters: + mode: 0 + interpolation: 0 + gravity: {x: 0, y: -9.81, z: 0} + damping: 0.5 + maxAnisotropy: 3 + sleepThreshold: 0.001 + collisionMargin: 0.02 + maxDepenetration: 10 + continuousCollisionDetection: 1 + shockPropagation: 0 + surfaceCollisionIterations: 8 + surfaceCollisionTolerance: 0.005 + gravity: {x: 0, y: -9.81, z: 0} + gravitySpace: 1 + worldLinearInertiaScale: 0 + worldAngularInertiaScale: 0 + distanceConstraintParameters: + evaluationOrder: 0 + iterations: 5 + SORFactor: 1 + enabled: 1 + bendingConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 1 + particleCollisionConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 1 + particleFrictionConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 1 + collisionConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 1 + frictionConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 1 + skinConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + volumeConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + shapeMatchingConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + tetherConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 1 + pinConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 1 + stitchConstraintParameters: + evaluationOrder: 1 + iterations: 5 + SORFactor: 1 + enabled: 0 + densityConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + stretchShearConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + bendTwistConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + chainConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 +--- !u!4 &2102841797 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1346965650} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1002464896} + - {fileID: 421764872} + - {fileID: 1175446146} + - {fileID: 2102841797} + - {fileID: 56383761} + - {fileID: 1804369595} + - {fileID: 1715322546} + - {fileID: 870807627} + - {fileID: 646258625} diff --git a/Assets/Obi/Samples/RopeAndRod/Chains.unity.meta b/Assets/Obi/Samples/RopeAndRod/Chains.unity.meta new file mode 100644 index 000000000..00f01a26c --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/Chains.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: de781a1f903154a98a617b786d36a330 +labels: +- ObiRope +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/ChainsSettings.lighting b/Assets/Obi/Samples/RopeAndRod/ChainsSettings.lighting new file mode 100644 index 000000000..513e22c45 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/ChainsSettings.lighting @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: ChainsSettings + serializedVersion: 10 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_LightmapPackingMode: 1 + m_LightmapPackingMethod: 0 + m_XAtlasPackingAttempts: 16384 + m_XAtlasBruteForce: 0 + m_XAtlasBlockAlign: 0 + m_XAtlasRepackUnderutilizedLightmaps: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/ChainsSettings.lighting.meta b/Assets/Obi/Samples/RopeAndRod/ChainsSettings.lighting.meta new file mode 100644 index 000000000..c2a0c899c --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/ChainsSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b1477bd4d33969c458d1e706ee66efd9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/CharacterTentacles.unity b/Assets/Obi/Samples/RopeAndRod/CharacterTentacles.unity new file mode 100644 index 000000000..3cbf5bb74 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/CharacterTentacles.unity @@ -0,0 +1,3709 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: eea067baf9db55f429a1eb58a6cc7841, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &283647873 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 283647877} + - component: {fileID: 283647876} + - component: {fileID: 283647875} + - component: {fileID: 283647874} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &283647874 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283647873} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &283647875 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283647873} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &283647876 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283647873} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_UseReflectionProbes: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &283647877 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283647873} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1660007474} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &421764872 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a0a5f9e13fa7c47f78547e54896609da, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459882} + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459883} + m_SourcePrefab: {fileID: 100100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!1 &506459881 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + m_PrefabInstance: {fileID: 421764872} + m_PrefabAsset: {fileID: 0} +--- !u!64 &506459882 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 4300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!114 &506459883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 11400000, guid: c73079cca10924a80871331c66b4ad4b, type: 2} + filter: -65535 + m_SourceCollider: {fileID: 506459882} + m_DistanceField: {fileID: 0} +--- !u!1001 &630753787 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -9172040529234819637, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9673613 + objectReference: {fileID: 0} + - target: {fileID: -9172040529234819637, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.00000035347645 + objectReference: {fileID: 0} + - target: {fileID: -9172040529234819637, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.25340143 + objectReference: {fileID: 0} + - target: {fileID: -9172040529234819637, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.00000013932136 + objectReference: {fileID: 0} + - target: {fileID: -9127106894692312864, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.07600623 + objectReference: {fileID: 0} + - target: {fileID: -9127106894692312864, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.00000025504167 + objectReference: {fileID: 0} + - target: {fileID: -9127106894692312864, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -0.00000018258288 + objectReference: {fileID: 0} + - target: {fileID: -9127106894692312864, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.000000014007303 + objectReference: {fileID: 0} + - target: {fileID: -9127106894692312864, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.000091485614 + objectReference: {fileID: 0} + - target: {fileID: -9127106894692312864, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.00000020098787 + objectReference: {fileID: 0} + - target: {fileID: -9062284935739990963, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.13803943 + objectReference: {fileID: 0} + - target: {fileID: -9062284935739990963, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0.00000051572107 + objectReference: {fileID: 0} + - target: {fileID: -9062284935739990963, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 1.9185334e-23 + objectReference: {fileID: 0} + - target: {fileID: -9062284935739990963, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9997556 + objectReference: {fileID: 0} + - target: {fileID: -9062284935739990963, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 5.897394e-25 + objectReference: {fileID: 0} + - target: {fileID: -9062284935739990963, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -1.3514626e-23 + objectReference: {fileID: 0} + - target: {fileID: -9062284935739990963, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.02210797 + objectReference: {fileID: 0} + - target: {fileID: -8713422515971011683, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: -0.09805851 + objectReference: {fileID: 0} + - target: {fileID: -8713422515971011683, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.75200945 + objectReference: {fileID: 0} + - target: {fileID: -8713422515971011683, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.114931755 + objectReference: {fileID: 0} + - target: {fileID: -8713422515971011683, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.64160514 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8507949964929264032, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: 0.36055627 + objectReference: {fileID: 0} + - target: {fileID: -8507949964929264032, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0.0000005631009 + objectReference: {fileID: 0} + - target: {fileID: -8507949964929264032, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -0.120000735 + objectReference: {fileID: 0} + - target: {fileID: -8507949964929264032, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9999616 + objectReference: {fileID: 0} + - target: {fileID: -8507949964929264032, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.000000014688959 + objectReference: {fileID: 0} + - target: {fileID: -8507949964929264032, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.000000011031668 + objectReference: {fileID: 0} + - target: {fileID: -8507949964929264032, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.008770917 + objectReference: {fileID: 0} + - target: {fileID: -8256864240980919291, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: 0.079857364 + objectReference: {fileID: 0} + - target: {fileID: -8256864240980919291, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0.00000019398995 + objectReference: {fileID: 0} + - target: {fileID: -8256864240980919291, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -0.00000016918875 + objectReference: {fileID: 0} + - target: {fileID: -8256864240980919291, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9997641 + objectReference: {fileID: 0} + - target: {fileID: -8256864240980919291, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.0000000911087 + objectReference: {fileID: 0} + - target: {fileID: -8256864240980919291, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.021724027 + objectReference: {fileID: 0} + - target: {fileID: -8256864240980919291, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.00000012005526 + objectReference: {fileID: 0} + - target: {fileID: -7959887483407685756, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9673613 + objectReference: {fileID: 0} + - target: {fileID: -7959887483407685756, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.00000008222498 + objectReference: {fileID: 0} + - target: {fileID: -7959887483407685756, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.2534013 + objectReference: {fileID: 0} + - target: {fileID: -7959887483407685756, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.00000015242011 + objectReference: {fileID: 0} + - target: {fileID: -7940801031966596053, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9997869 + objectReference: {fileID: 0} + - target: {fileID: -7940801031966596053, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.000000090835755 + objectReference: {fileID: 0} + - target: {fileID: -7940801031966596053, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.020644648 + objectReference: {fileID: 0} + - target: {fileID: -7940801031966596053, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.000000045180247 + objectReference: {fileID: 0} + - target: {fileID: -7477343846450812277, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.131298 + objectReference: {fileID: 0} + - target: {fileID: -7477343846450812277, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0.00000012670051 + objectReference: {fileID: 0} + - target: {fileID: -7477343846450812277, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -1.3545083e-23 + objectReference: {fileID: 0} + - target: {fileID: -7477343846450812277, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -1.3234887e-23 + objectReference: {fileID: 0} + - target: {fileID: -7477343846450812277, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -1.3234887e-23 + objectReference: {fileID: 0} + - target: {fileID: -7477343846450812277, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.04408335 + objectReference: {fileID: 0} + - target: {fileID: -7272726868776662169, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.07985702 + objectReference: {fileID: 0} + - target: {fileID: -7272726868776662169, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.00000034656287 + objectReference: {fileID: 0} + - target: {fileID: -7272726868776662169, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 0.000000029655894 + objectReference: {fileID: 0} + - target: {fileID: -7272726868776662169, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.999764 + objectReference: {fileID: 0} + - target: {fileID: -7272726868776662169, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.000000011411709 + objectReference: {fileID: 0} + - target: {fileID: -7272726868776662169, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.0217239 + objectReference: {fileID: 0} + - target: {fileID: -7272726868776662169, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.000000069100224 + objectReference: {fileID: 0} + - target: {fileID: -6926694757232413474, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.11609162 + objectReference: {fileID: 0} + - target: {fileID: -6926694757232413474, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.0000005731995 + objectReference: {fileID: 0} + - target: {fileID: -6926694757232413474, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -1.0095917e-23 + objectReference: {fileID: 0} + - target: {fileID: -6926694757232413474, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -1.0545787e-26 + objectReference: {fileID: 0} + - target: {fileID: -6926694757232413474, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 1.296086e-23 + objectReference: {fileID: 0} + - target: {fileID: -6926694757232413474, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.020704772 + objectReference: {fileID: 0} + - target: {fileID: -6781684182533653455, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.99989176 + objectReference: {fileID: 0} + - target: {fileID: -6781684182533653455, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.000000027877974 + objectReference: {fileID: 0} + - target: {fileID: -6781684182533653455, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.01471638 + objectReference: {fileID: 0} + - target: {fileID: -6781684182533653455, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.00000016789998 + objectReference: {fileID: 0} + - target: {fileID: -6674389897051338689, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.09154375 + objectReference: {fileID: 0} + - target: {fileID: -6674389897051338689, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0.019813953 + objectReference: {fileID: 0} + - target: {fileID: -6674389897051338689, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 0.029995024 + objectReference: {fileID: 0} + - target: {fileID: -6674389897051338689, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9868013 + objectReference: {fileID: 0} + - target: {fileID: -6674389897051338689, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.04286804 + objectReference: {fileID: 0} + - target: {fileID: -6674389897051338689, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.1501124 + objectReference: {fileID: 0} + - target: {fileID: -6674389897051338689, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.04303353 + objectReference: {fileID: 0} + - target: {fileID: -6573219111723820052, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: 0.07746903 + objectReference: {fileID: 0} + - target: {fileID: -6573219111723820052, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.00000013306443 + objectReference: {fileID: 0} + - target: {fileID: -6573219111723820052, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 0.00000014895568 + objectReference: {fileID: 0} + - target: {fileID: -6573219111723820052, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9999629 + objectReference: {fileID: 0} + - target: {fileID: -6573219111723820052, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.000000038067565 + objectReference: {fileID: 0} + - target: {fileID: -6573219111723820052, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.008619632 + objectReference: {fileID: 0} + - target: {fileID: -6573219111723820052, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.000000022024029 + objectReference: {fileID: 0} + - target: {fileID: -6417551873659808624, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.0000002458691 + objectReference: {fileID: 0} + - target: {fileID: -6417551873659808624, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.016476635 + objectReference: {fileID: 0} + - target: {fileID: -6417551873659808624, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.00000013411042 + objectReference: {fileID: 0} + - target: {fileID: -6393091041921524369, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: 0.38948783 + objectReference: {fileID: 0} + - target: {fileID: -6393091041921524369, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.00000020861626 + objectReference: {fileID: 0} + - target: {fileID: -6393091041921524369, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 0.00000020861631 + objectReference: {fileID: 0} + - target: {fileID: -6393091041921524369, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.996377 + objectReference: {fileID: 0} + - target: {fileID: -6393091041921524369, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.000000036327606 + objectReference: {fileID: 0} + - target: {fileID: -6393091041921524369, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.000000055867655 + objectReference: {fileID: 0} + - target: {fileID: -6393091041921524369, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.08504705 + objectReference: {fileID: 0} + - target: {fileID: -6258611573451978496, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.06707275 + objectReference: {fileID: 0} + - target: {fileID: -6258611573451978496, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0.00000006884857 + objectReference: {fileID: 0} + - target: {fileID: -6258611573451978496, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 0.000000018969658 + objectReference: {fileID: 0} + - target: {fileID: -6258611573451978496, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7131761 + objectReference: {fileID: 0} + - target: {fileID: -6258611573451978496, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.00000016517498 + objectReference: {fileID: 0} + - target: {fileID: -6258611573451978496, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.700985 + objectReference: {fileID: 0} + - target: {fileID: -6258611573451978496, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.000000009968829 + objectReference: {fileID: 0} + - target: {fileID: -5999528792458690478, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: 0.08444028 + objectReference: {fileID: 0} + - target: {fileID: -5999528792458690478, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0.00000030478665 + objectReference: {fileID: 0} + - target: {fileID: -5999528792458690478, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 0.00000051571277 + objectReference: {fileID: 0} + - target: {fileID: -5999528792458690478, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9993727 + objectReference: {fileID: 0} + - target: {fileID: -5999528792458690478, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.0000002560232 + objectReference: {fileID: 0} + - target: {fileID: -5999528792458690478, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.03541356 + objectReference: {fileID: 0} + - target: {fileID: -5999528792458690478, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.00000011542316 + objectReference: {fileID: 0} + - target: {fileID: -5777574540501867108, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.015911011 + objectReference: {fileID: 0} + - target: {fileID: -5777574540501867108, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.10465575 + objectReference: {fileID: 0} + - target: {fileID: -5777574540501867108, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.14946046 + objectReference: {fileID: 0} + - target: {fileID: -5625989425371717735, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: 0.09619963 + objectReference: {fileID: 0} + - target: {fileID: -5625989425371717735, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.0000037450247 + objectReference: {fileID: 0} + - target: {fileID: -5625989425371717735, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -0.00000012138516 + objectReference: {fileID: 0} + - target: {fileID: -5625989425371717735, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9933717 + objectReference: {fileID: 0} + - target: {fileID: -5625989425371717735, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.00000007241961 + objectReference: {fileID: 0} + - target: {fileID: -5625989425371717735, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.11494669 + objectReference: {fileID: 0} + - target: {fileID: -5625989425371717735, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.00000012544264 + objectReference: {fileID: 0} + - target: {fileID: -5102611502599791723, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.38948792 + objectReference: {fileID: 0} + - target: {fileID: -5102611502599791723, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0.000000055879354 + objectReference: {fileID: 0} + - target: {fileID: -5102611502599791723, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -0.000000029802322 + objectReference: {fileID: 0} + - target: {fileID: -5102611502599791723, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.99637693 + objectReference: {fileID: 0} + - target: {fileID: -5102611502599791723, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.000000003835789 + objectReference: {fileID: 0} + - target: {fileID: -5102611502599791723, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.00000003230275 + objectReference: {fileID: 0} + - target: {fileID: -5102611502599791723, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.085047096 + objectReference: {fileID: 0} + - target: {fileID: -4705109256053941059, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: 0.08916188 + objectReference: {fileID: 0} + - target: {fileID: -4705109256053941059, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.000000044923127 + objectReference: {fileID: 0} + - target: {fileID: -4705109256053941059, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 0.00000018626451 + objectReference: {fileID: 0} + - target: {fileID: -4705109256053941059, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.999931 + objectReference: {fileID: 0} + - target: {fileID: -4705109256053941059, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.00000018626436 + objectReference: {fileID: 0} + - target: {fileID: -4705109256053941059, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.011748751 + objectReference: {fileID: 0} + - target: {fileID: -4705109256053941059, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.00000032782526 + objectReference: {fileID: 0} + - target: {fileID: -4421869768541714866, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: -0.060132433 + objectReference: {fileID: 0} + - target: {fileID: -4421869768541714866, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.9060735 + objectReference: {fileID: 0} + - target: {fileID: -4421869768541714866, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.137752 + objectReference: {fileID: 0} + - target: {fileID: -4421869768541714866, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.39552405 + objectReference: {fileID: 0} + - target: {fileID: -3575167729457297781, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9997869 + objectReference: {fileID: 0} + - target: {fileID: -3575167729457297781, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.0000002476626 + objectReference: {fileID: 0} + - target: {fileID: -3575167729457297781, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.020644594 + objectReference: {fileID: 0} + - target: {fileID: -3575167729457297781, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.000000045258204 + objectReference: {fileID: 0} + - target: {fileID: -3168850724122587569, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 5c0346dbcbacd4648bec909deff79751, type: 2} + - target: {fileID: -3057246181936861889, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.097654 + objectReference: {fileID: 0} + - target: {fileID: -3057246181936861889, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.00000036611073 + objectReference: {fileID: 0} + - target: {fileID: -3057246181936861889, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -0.000000003749075 + objectReference: {fileID: 0} + - target: {fileID: -3057246181936861889, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9996093 + objectReference: {fileID: 0} + - target: {fileID: -3057246181936861889, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.000000022251575 + objectReference: {fileID: 0} + - target: {fileID: -3057246181936861889, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.000000019825379 + objectReference: {fileID: 0} + - target: {fileID: -3057246181936861889, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.027953451 + objectReference: {fileID: 0} + - target: {fileID: -3011178037101974448, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9240755 + objectReference: {fileID: 0} + - target: {fileID: -3011178037101974448, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.00000015530905 + objectReference: {fileID: 0} + - target: {fileID: -3011178037101974448, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.38221008 + objectReference: {fileID: 0} + - target: {fileID: -3011178037101974448, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.00000006197281 + objectReference: {fileID: 0} + - target: {fileID: -2765548614572629195, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: 0.0670727 + objectReference: {fileID: 0} + - target: {fileID: -2765548614572629195, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.0000000052219806 + objectReference: {fileID: 0} + - target: {fileID: -2765548614572629195, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -0.00000035371752 + objectReference: {fileID: 0} + - target: {fileID: -2765548614572629195, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.71317565 + objectReference: {fileID: 0} + - target: {fileID: -2765548614572629195, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.00000038672738 + objectReference: {fileID: 0} + - target: {fileID: -2765548614572629195, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.7009854 + objectReference: {fileID: 0} + - target: {fileID: -2765548614572629195, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -8.278953e-10 + objectReference: {fileID: 0} + - target: {fileID: -1607268682270953884, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.16180958 + objectReference: {fileID: 0} + - target: {fileID: -1607268682270953884, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -1607268682270953884, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -1.7829252e-16 + objectReference: {fileID: 0} + - target: {fileID: -1607268682270953884, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.99993867 + objectReference: {fileID: 0} + - target: {fileID: -1607268682270953884, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -1.6228881e-16 + objectReference: {fileID: 0} + - target: {fileID: -1607268682270953884, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -1.8379096e-16 + objectReference: {fileID: 0} + - target: {fileID: -1607268682270953884, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.011078296 + objectReference: {fileID: 0} + - target: {fileID: -1336073094781112630, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.000000098879 + objectReference: {fileID: 0} + - target: {fileID: -1336073094781112630, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.010379857 + objectReference: {fileID: 0} + - target: {fileID: -1336073094781112630, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.000000038188134 + objectReference: {fileID: 0} + - target: {fileID: -1054683304811679433, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.09660024 + objectReference: {fileID: 0} + - target: {fileID: -1054683304811679433, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0.00000036440179 + objectReference: {fileID: 0} + - target: {fileID: -1054683304811679433, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -1.6653345e-16 + objectReference: {fileID: 0} + - target: {fileID: -1054683304811679433, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.99999195 + objectReference: {fileID: 0} + - target: {fileID: -1054683304811679433, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -1.7763562e-15 + objectReference: {fileID: 0} + - target: {fileID: -1054683304811679433, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -1054683304811679433, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.0040301573 + objectReference: {fileID: 0} + - target: {fileID: -749513139196117795, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.025980879 + objectReference: {fileID: 0} + - target: {fileID: -749513139196117795, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0.0028835752 + objectReference: {fileID: 0} + - target: {fileID: -749513139196117795, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 0.12321692 + objectReference: {fileID: 0} + - target: {fileID: -749513139196117795, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.69933355 + objectReference: {fileID: 0} + - target: {fileID: -749513139196117795, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.11304523 + objectReference: {fileID: 0} + - target: {fileID: -749513139196117795, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.69661623 + objectReference: {fileID: 0} + - target: {fileID: -749513139196117795, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.11348655 + objectReference: {fileID: 0} + - target: {fileID: -668384516862315930, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.068375364 + objectReference: {fileID: 0} + - target: {fileID: -668384516862315930, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0.00000043567888 + objectReference: {fileID: 0} + - target: {fileID: -668384516862315930, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -1.490854e-15 + objectReference: {fileID: 0} + - target: {fileID: -668384516862315930, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.50787044 + objectReference: {fileID: 0} + - target: {fileID: -668384516862315930, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.5078705 + objectReference: {fileID: 0} + - target: {fileID: -668384516862315930, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.4920038 + objectReference: {fileID: 0} + - target: {fileID: -668384516862315930, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.49200356 + objectReference: {fileID: 0} + - target: {fileID: 726893922322061280, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.089161985 + objectReference: {fileID: 0} + - target: {fileID: 726893922322061280, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.00000004194635 + objectReference: {fileID: 0} + - target: {fileID: 726893922322061280, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 0.00000048428774 + objectReference: {fileID: 0} + - target: {fileID: 726893922322061280, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.99993104 + objectReference: {fileID: 0} + - target: {fileID: 726893922322061280, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.00000008195633 + objectReference: {fileID: 0} + - target: {fileID: 726893922322061280, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.011748425 + objectReference: {fileID: 0} + - target: {fileID: 726893922322061280, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.0000004842874 + objectReference: {fileID: 0} + - target: {fileID: 848833919448333585, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.07399583 + objectReference: {fileID: 0} + - target: {fileID: 848833919448333585, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.0000000144355 + objectReference: {fileID: 0} + - target: {fileID: 848833919448333585, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -0.00000015180558 + objectReference: {fileID: 0} + - target: {fileID: 848833919448333585, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.999133 + objectReference: {fileID: 0} + - target: {fileID: 848833919448333585, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.000000040978158 + objectReference: {fileID: 0} + - target: {fileID: 848833919448333585, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.041632753 + objectReference: {fileID: 0} + - target: {fileID: 848833919448333585, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.0000001215375 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_Name + value: tentacle_guy + objectReference: {fileID: 0} + - target: {fileID: 1002887218015374962, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.09548417 + objectReference: {fileID: 0} + - target: {fileID: 1002887218015374962, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0.0000005920281 + objectReference: {fileID: 0} + - target: {fileID: 1002887218015374962, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 2.6253225e-27 + objectReference: {fileID: 0} + - target: {fileID: 1002887218015374962, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9997476 + objectReference: {fileID: 0} + - target: {fileID: 1002887218015374962, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.000000022360005 + objectReference: {fileID: 0} + - target: {fileID: 1002887218015374962, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.000000019703004 + objectReference: {fileID: 0} + - target: {fileID: 1002887218015374962, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.022468941 + objectReference: {fileID: 0} + - target: {fileID: 2040772738850610504, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.99989176 + objectReference: {fileID: 0} + - target: {fileID: 2040772738850610504, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.00000007007278 + objectReference: {fileID: 0} + - target: {fileID: 2040772738850610504, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.014716182 + objectReference: {fileID: 0} + - target: {fileID: 2040772738850610504, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.00000008374207 + objectReference: {fileID: 0} + - target: {fileID: 2115105493465890901, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.91017807 + objectReference: {fileID: 0} + - target: {fileID: 2115105493465890901, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.05894502 + objectReference: {fileID: 0} + - target: {fileID: 2115105493465890901, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.38568267 + objectReference: {fileID: 0} + - target: {fileID: 2115105493465890901, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.13910511 + objectReference: {fileID: 0} + - target: {fileID: 2527769708469969364, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9999461 + objectReference: {fileID: 0} + - target: {fileID: 2527769708469969364, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.00000005579037 + objectReference: {fileID: 0} + - target: {fileID: 2527769708469969364, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.010380306 + objectReference: {fileID: 0} + - target: {fileID: 2527769708469969364, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.00000026966057 + objectReference: {fileID: 0} + - target: {fileID: 2545839310169955134, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.13695669 + objectReference: {fileID: 0} + - target: {fileID: 2545839310169955134, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.000000086856744 + objectReference: {fileID: 0} + - target: {fileID: 2545839310169955134, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -3.352935e-24 + objectReference: {fileID: 0} + - target: {fileID: 2545839310169955134, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -5.8000204e-25 + objectReference: {fileID: 0} + - target: {fileID: 2545839310169955134, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 1.3218873e-23 + objectReference: {fileID: 0} + - target: {fileID: 2545839310169955134, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.00024904308 + objectReference: {fileID: 0} + - target: {fileID: 2548148072889551224, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.07817221 + objectReference: {fileID: 0} + - target: {fileID: 2548148072889551224, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0.00000015993884 + objectReference: {fileID: 0} + - target: {fileID: 2548148072889551224, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 1.0258534e-15 + objectReference: {fileID: 0} + - target: {fileID: 2548148072889551224, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.999327 + objectReference: {fileID: 0} + - target: {fileID: 2548148072889551224, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -9.362882e-19 + objectReference: {fileID: 0} + - target: {fileID: 2548148072889551224, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 6.5162556e-17 + objectReference: {fileID: 0} + - target: {fileID: 2548148072889551224, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.03668089 + objectReference: {fileID: 0} + - target: {fileID: 2683500738491615210, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: 0.09154148 + objectReference: {fileID: 0} + - target: {fileID: 2683500738491615210, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.01981489 + objectReference: {fileID: 0} + - target: {fileID: 2683500738491615210, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -0.02999468 + objectReference: {fileID: 0} + - target: {fileID: 2683500738491615210, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9868013 + objectReference: {fileID: 0} + - target: {fileID: 2683500738491615210, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.042868104 + objectReference: {fileID: 0} + - target: {fileID: 2683500738491615210, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.15011251 + objectReference: {fileID: 0} + - target: {fileID: 2683500738491615210, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.043033507 + objectReference: {fileID: 0} + - target: {fileID: 2885808408270941255, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.99983776 + objectReference: {fileID: 0} + - target: {fileID: 2885808408270941255, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.0000002030282 + objectReference: {fileID: 0} + - target: {fileID: 2885808408270941255, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.018015321 + objectReference: {fileID: 0} + - target: {fileID: 2885808408270941255, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.000000015599644 + objectReference: {fileID: 0} + - target: {fileID: 3027249137484211221, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.36055595 + objectReference: {fileID: 0} + - target: {fileID: 3027249137484211221, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.000000091735274 + objectReference: {fileID: 0} + - target: {fileID: 3027249137484211221, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 0.11999985 + objectReference: {fileID: 0} + - target: {fileID: 3027249137484211221, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9999616 + objectReference: {fileID: 0} + - target: {fileID: 3027249137484211221, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.00000004837842 + objectReference: {fileID: 0} + - target: {fileID: 3027249137484211221, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.00000003436716 + objectReference: {fileID: 0} + - target: {fileID: 3027249137484211221, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.008770723 + objectReference: {fileID: 0} + - target: {fileID: 3748059883230484020, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: 0.07600932 + objectReference: {fileID: 0} + - target: {fileID: 3748059883230484020, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0.00000334365 + objectReference: {fileID: 0} + - target: {fileID: 3748059883230484020, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 0.0000007629533 + objectReference: {fileID: 0} + - target: {fileID: 3748059883230484020, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.000000087195154 + objectReference: {fileID: 0} + - target: {fileID: 3748059883230484020, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.00009146326 + objectReference: {fileID: 0} + - target: {fileID: 3748059883230484020, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.00000014438807 + objectReference: {fileID: 0} + - target: {fileID: 4407419453612453932, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.09619819 + objectReference: {fileID: 0} + - target: {fileID: 4407419453612453932, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.00000018176283 + objectReference: {fileID: 0} + - target: {fileID: 4407419453612453932, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 0.00000057005826 + objectReference: {fileID: 0} + - target: {fileID: 4407419453612453932, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9933717 + objectReference: {fileID: 0} + - target: {fileID: 4407419453612453932, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.00000001302149 + objectReference: {fileID: 0} + - target: {fileID: 4407419453612453932, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.11494673 + objectReference: {fileID: 0} + - target: {fileID: 4407419453612453932, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.00000027911648 + objectReference: {fileID: 0} + - target: {fileID: 4990029417244473137, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.08443858 + objectReference: {fileID: 0} + - target: {fileID: 4990029417244473137, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.00000023513277 + objectReference: {fileID: 0} + - target: {fileID: 4990029417244473137, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -0.00000031256445 + objectReference: {fileID: 0} + - target: {fileID: 4990029417244473137, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9993728 + objectReference: {fileID: 0} + - target: {fileID: 4990029417244473137, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.00000014378008 + objectReference: {fileID: 0} + - target: {fileID: 4990029417244473137, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.03541338 + objectReference: {fileID: 0} + - target: {fileID: 4990029417244473137, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.0000003751099 + objectReference: {fileID: 0} + - target: {fileID: 5146824284552866293, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.99986434 + objectReference: {fileID: 0} + - target: {fileID: 5146824284552866293, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.000000044703462 + objectReference: {fileID: 0} + - target: {fileID: 5146824284552866293, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.01647713 + objectReference: {fileID: 0} + - target: {fileID: 5146824284552866293, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.00000007823106 + objectReference: {fileID: 0} + - target: {fileID: 5536388351197450959, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.99983776 + objectReference: {fileID: 0} + - target: {fileID: 5536388351197450959, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.00000024586907 + objectReference: {fileID: 0} + - target: {fileID: 5536388351197450959, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.018015463 + objectReference: {fileID: 0} + - target: {fileID: 5536388351197450959, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.00000031292427 + objectReference: {fileID: 0} + - target: {fileID: 5866666021909216657, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_Controller + value: + objectReference: {fileID: 9100000, guid: e2cf68ff4b1ffda45a77f7307dd789b9, type: 2} + - target: {fileID: 7514784303115233714, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: 0.07399513 + objectReference: {fileID: 0} + - target: {fileID: 7514784303115233714, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0.0000007917406 + objectReference: {fileID: 0} + - target: {fileID: 7514784303115233714, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -0.0000009469222 + objectReference: {fileID: 0} + - target: {fileID: 7514784303115233714, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.99913305 + objectReference: {fileID: 0} + - target: {fileID: 7514784303115233714, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: -0.000000033527588 + objectReference: {fileID: 0} + - target: {fileID: 7514784303115233714, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.041632883 + objectReference: {fileID: 0} + - target: {fileID: 7514784303115233714, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.0000000149011505 + objectReference: {fileID: 0} + - target: {fileID: 8136026706196182388, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: 0.02597995 + objectReference: {fileID: 0} + - target: {fileID: 8136026706196182388, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.0028835365 + objectReference: {fileID: 0} + - target: {fileID: 8136026706196182388, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: -0.12321778 + objectReference: {fileID: 0} + - target: {fileID: 8136026706196182388, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.6993333 + objectReference: {fileID: 0} + - target: {fileID: 8136026706196182388, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.11304535 + objectReference: {fileID: 0} + - target: {fileID: 8136026706196182388, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: 0.69661653 + objectReference: {fileID: 0} + - target: {fileID: 8136026706196182388, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.11348603 + objectReference: {fileID: 0} + - target: {fileID: 8216163743844190192, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.07746922 + objectReference: {fileID: 0} + - target: {fileID: 8216163743844190192, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: -0.00000003922807 + objectReference: {fileID: 0} + - target: {fileID: 8216163743844190192, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 0.00000046299692 + objectReference: {fileID: 0} + - target: {fileID: 8216163743844190192, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9999629 + objectReference: {fileID: 0} + - target: {fileID: 8216163743844190192, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.000000095049955 + objectReference: {fileID: 0} + - target: {fileID: 8216163743844190192, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.008619845 + objectReference: {fileID: 0} + - target: {fileID: 8216163743844190192, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.00000013218293 + objectReference: {fileID: 0} + - target: {fileID: 8561469618316601768, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9240755 + objectReference: {fileID: 0} + - target: {fileID: 8561469618316601768, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 0.000000037750738 + objectReference: {fileID: 0} + - target: {fileID: 8561469618316601768, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -0.3822102 + objectReference: {fileID: 0} + - target: {fileID: 8561469618316601768, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: -0.00000008068842 + objectReference: {fileID: 0} + - target: {fileID: 8663071241739252781, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.x + value: -0.08463919 + objectReference: {fileID: 0} + - target: {fileID: 8663071241739252781, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.y + value: 0.000000050538493 + objectReference: {fileID: 0} + - target: {fileID: 8663071241739252781, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalPosition.z + value: 1.3612353e-15 + objectReference: {fileID: 0} + - target: {fileID: 8663071241739252781, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.w + value: 0.99996805 + objectReference: {fileID: 0} + - target: {fileID: 8663071241739252781, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.x + value: 5.2939534e-22 + objectReference: {fileID: 0} + - target: {fileID: 8663071241739252781, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.y + value: -1.421738e-17 + objectReference: {fileID: 0} + - target: {fileID: 8663071241739252781, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + propertyPath: m_LocalRotation.z + value: 0.008003613 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + insertIndex: -1 + addedObject: {fileID: 1080600885} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + insertIndex: -1 + addedObject: {fileID: 1080600884} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + insertIndex: -1 + addedObject: {fileID: 1080600882} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + insertIndex: -1 + addedObject: {fileID: 1080600883} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + insertIndex: -1 + addedObject: {fileID: 1080600886} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + insertIndex: -1 + addedObject: {fileID: 1080600887} + - targetCorrespondingSourceObject: {fileID: 293062933868311820, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + insertIndex: -1 + addedObject: {fileID: 1908960881} + - targetCorrespondingSourceObject: {fileID: 2959690789404077516, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + insertIndex: -1 + addedObject: {fileID: 1723533913} + - targetCorrespondingSourceObject: {fileID: -7689614540460225619, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + insertIndex: -1 + addedObject: {fileID: 786287853} + - targetCorrespondingSourceObject: {fileID: 3534394712648722870, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + insertIndex: -1 + addedObject: {fileID: 1737943989} + m_SourcePrefab: {fileID: 100100000, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} +--- !u!1 &786287851 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: -7689614540460225619, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + m_PrefabInstance: {fileID: 630753787} + m_PrefabAsset: {fileID: 0} +--- !u!114 &786287853 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 786287851} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7be315bc5964b4fbca6cf0a978ff76a1, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + _radius: + multiplier: 0.1 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 0.2877426 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _mass: + multiplier: 0.1 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _rotationalMass: + multiplier: 0.1 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0.29166412 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 0.02357483 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _skinConstraintsEnabled: 1 + _skinCompliance: + multiplier: 0.01 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _skinRadius: + multiplier: 0.1 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _stretchShearConstraintsEnabled: 1 + _stretchCompliance: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _shear1Compliance: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _shear2Compliance: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _bendTwistConstraintsEnabled: 1 + _torsionCompliance: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _bend1Compliance: + multiplier: 0.1 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.32546997 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _bend2Compliance: + multiplier: 0.05 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.37026978 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _plasticYield: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _plasticCreep: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + filter: -65534 + fixRoot: 1 + stretchBones: 1 + ignored: [] +--- !u!1 &1002464891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002464896} + - component: {fileID: 1002464895} + - component: {fileID: 1002464893} + - component: {fileID: 1002464892} + - component: {fileID: 1002464897} + - component: {fileID: 1002464894} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1002464892 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!124 &1002464893 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!114 &1002464894 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7118f3a432315464297cab517f322eca, type: 3} + m_Name: + m_EditorClassIdentifier: + target: {fileID: 0} + extrapolation: 1 + smoothness: 0.995 + linearSpeed: 1 + rotationalSpeed: 1 + distanceFromTarget: 3 +--- !u!20 &1002464895 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 75 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1002464896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + serializedVersion: 2 + m_LocalRotation: {x: 0.15760262, y: 0, z: 0, w: 0.98750263} + m_LocalPosition: {x: 0, y: 3.34, z: -4.79} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1002464897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62e83a599724f45a4aa337d74764e572, type: 3} + m_Name: + m_EditorClassIdentifier: + skin: {fileID: 11400000, guid: b90d3c214c99743b0865fc0e0d1f1a15, type: 2} + threadColor: {r: 0, g: 1, b: 1, a: 1} + taskColor: {r: 0, g: 1, b: 0, a: 1} + parallelTaskColor: {r: 1, g: 0.8, b: 0.2, a: 1} + renderTaskColor: {r: 0.2, g: 0.7, b: 1, a: 1} + defaultTaskColor: {r: 1, g: 0.5, b: 0.2, a: 1} + showPercentages: 0 + profileThrottle: 30 +--- !u!1 &1076081359 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1076081361} + - component: {fileID: 1076081360} + m_Layer: 0 + m_Name: BurstCollisionWorld + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1076081360 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1076081359} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1a161c4294214a4fbcb7e9e94800494, type: 3} + m_Name: + m_EditorClassIdentifier: + cellSpans: + m_AlignBytes: 16 +--- !u!4 &1076081361 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1076081359} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1080600881 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + m_PrefabInstance: {fileID: 630753787} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1080600882 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1080600881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de9bce9a2c43c424d81e85ea229e0004, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1080600883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1080600881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30974edc9036841cebffee1d18425185, type: 3} + m_Name: + m_EditorClassIdentifier: + m_MovingTurnSpeed: 360 + m_StationaryTurnSpeed: 180 + m_JumpPower: 6 + m_GravityMultiplier: 2 + m_RunCycleLegOffset: 0.2 + m_MoveSpeedMultiplier: 1 + m_AnimSpeedMultiplier: 1 + m_GroundCheckDistance: 0.2 +--- !u!136 &1080600884 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1080600881} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.2 + m_Height: 2.2 + m_Direction: 1 + m_Center: {x: 0, y: 1.1, z: 0} +--- !u!54 &1080600885 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1080600881} + serializedVersion: 5 + m_Mass: 1 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1080600886 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1080600881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 434d88f9b3534406382ff56c0e74bd9a, type: 3} + m_Name: + m_EditorClassIdentifier: + solvers: + - {fileID: 1080600887} + deltaSmoothing: 0.95 + substeps: 2 +--- !u!114 &1080600887 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1080600881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d174fab52f0c4b8399f25d5c3ea524c, type: 3} + m_Name: + m_EditorClassIdentifier: + simulateWhenInvisible: 1 + m_Backend: 1 + parameters: + mode: 0 + interpolation: 0 + gravity: {x: 0, y: -5, z: 0} + damping: 0.6 + maxAnisotropy: 3 + sleepThreshold: 0.001 + collisionMargin: 0.02 + maxDepenetration: 10 + continuousCollisionDetection: 1 + shockPropagation: 0 + surfaceCollisionIterations: 8 + surfaceCollisionTolerance: 0.005 + gravity: {x: 0, y: -9.81, z: 0} + gravitySpace: 1 + worldLinearInertiaScale: 0.5 + worldAngularInertiaScale: 0.1 + distanceConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 0 + bendingConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 0 + particleCollisionConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 0 + particleFrictionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 0 + collisionConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 1 + frictionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + skinConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 1 + volumeConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 0 + shapeMatchingConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 0 + tetherConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 0 + pinConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 0 + stitchConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 0 + densityConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 0 + stretchShearConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 1 + bendTwistConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 1 + chainConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 0 +--- !u!1 &1175446144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1175446146} + - component: {fileID: 1175446145} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1175446145 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.03 + m_NormalBias: 0.01 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1175446146 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + serializedVersion: 2 + m_LocalRotation: {x: 0.41595167, y: -0.26247028, z: 0.26683384, w: 0.82879025} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 56.052002, y: -22.431002, z: 23.642} +--- !u!1 &1660007473 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1660007474} + - component: {fileID: 1660007476} + - component: {fileID: 1660007475} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1660007474 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1660007473} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 283647877} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 108.20001, y: 39.100006} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1660007475 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1660007473} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Use WASD to move around. +--- !u!222 &1660007476 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1660007473} + m_CullTransparentMesh: 0 +--- !u!1 &1723533911 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 2959690789404077516, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + m_PrefabInstance: {fileID: 630753787} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1723533913 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1723533911} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7be315bc5964b4fbca6cf0a978ff76a1, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 0d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + _radius: + multiplier: 0.04 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 0.4646225 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _mass: + multiplier: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _rotationalMass: + multiplier: 0.1 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 0.9874878 + value: 0.070755005 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _skinConstraintsEnabled: 1 + _skinCompliance: + multiplier: 0.05 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0.3583336 + value: 0.09196854 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _skinRadius: + multiplier: 0.02 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0.4750023 + value: 0.049533844 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _stretchShearConstraintsEnabled: 1 + _stretchCompliance: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _shear1Compliance: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _shear2Compliance: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _bendTwistConstraintsEnabled: 1 + _torsionCompliance: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _bend1Compliance: + multiplier: 0.05 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.32546997 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _bend2Compliance: + multiplier: 0.05 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.37026978 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _plasticYield: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _plasticCreep: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + filter: -65534 + fixRoot: 1 + stretchBones: 0 + ignored: [] +--- !u!1 &1737943986 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 3534394712648722870, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + m_PrefabInstance: {fileID: 630753787} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1737943989 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1737943986} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7be315bc5964b4fbca6cf0a978ff76a1, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + _radius: + multiplier: 0.1 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 0.4646225 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _mass: + multiplier: 0.1 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _rotationalMass: + multiplier: 0.02 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 0.9874878 + value: 0.070755005 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _skinConstraintsEnabled: 1 + _skinCompliance: + multiplier: 0.01 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _skinRadius: + multiplier: 1.2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.31603622 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _stretchShearConstraintsEnabled: 1 + _stretchCompliance: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _shear1Compliance: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _shear2Compliance: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _bendTwistConstraintsEnabled: 1 + _torsionCompliance: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _bend1Compliance: + multiplier: 0.1 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.32546997 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _bend2Compliance: + multiplier: 0.05 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.37026978 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _plasticYield: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _plasticCreep: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + filter: -65534 + fixRoot: 1 + stretchBones: 1 + ignored: [] +--- !u!1 &1908960879 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 293062933868311820, guid: 643a73163dc8d4f0e904d6c0f6857999, type: 3} + m_PrefabInstance: {fileID: 630753787} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1908960881 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1908960879} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7be315bc5964b4fbca6cf0a978ff76a1, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 2c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + _radius: + multiplier: 0.1 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 0.2877426 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _mass: + multiplier: 0.1 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _rotationalMass: + multiplier: 0.1 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0.29166412 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 0.02357483 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _skinConstraintsEnabled: 1 + _skinCompliance: + multiplier: 0.01 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _skinRadius: + multiplier: 0.1 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _stretchShearConstraintsEnabled: 1 + _stretchCompliance: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _shear1Compliance: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _shear2Compliance: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _bendTwistConstraintsEnabled: 1 + _torsionCompliance: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _bend1Compliance: + multiplier: 0.1 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.32546997 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _bend2Compliance: + multiplier: 0.05 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.37026978 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _plasticYield: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _plasticCreep: + multiplier: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + filter: -65534 + fixRoot: 1 + stretchBones: 1 + ignored: [] +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1002464896} + - {fileID: 630753787} + - {fileID: 421764872} + - {fileID: 1175446146} + - {fileID: 283647877} + - {fileID: 1076081361} diff --git a/Assets/Obi/Samples/RopeAndRod/CharacterTentacles.unity.meta b/Assets/Obi/Samples/RopeAndRod/CharacterTentacles.unity.meta new file mode 100644 index 000000000..117d03d44 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/CharacterTentacles.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ad63c807aee2f44b28fa2bcd46634d88 +labels: +- ObiRope +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/CharacterTentaclesSettings.lighting b/Assets/Obi/Samples/RopeAndRod/CharacterTentaclesSettings.lighting new file mode 100644 index 000000000..166accaa5 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/CharacterTentaclesSettings.lighting @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CharacterTentaclesSettings + serializedVersion: 10 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_LightmapPackingMode: 1 + m_LightmapPackingMethod: 0 + m_XAtlasPackingAttempts: 16384 + m_XAtlasBruteForce: 0 + m_XAtlasBlockAlign: 0 + m_XAtlasRepackUnderutilizedLightmaps: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/CharacterTentaclesSettings.lighting.meta b/Assets/Obi/Samples/RopeAndRod/CharacterTentaclesSettings.lighting.meta new file mode 100644 index 000000000..577ff8db5 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/CharacterTentaclesSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eea067baf9db55f429a1eb58a6cc7841 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/Crane.unity b/Assets/Obi/Samples/RopeAndRod/Crane.unity new file mode 100644 index 000000000..0be99a073 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/Crane.unity @@ -0,0 +1,3290 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: 2113ca78fca0a5c45b69799c2558c6f9, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &60958071 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 60958072} + - component: {fileID: 60958074} + - component: {fileID: 60958073} + - component: {fileID: 60958075} + m_Layer: 0 + m_Name: Crane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &60958072 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 60958071} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1929056558} + - {fileID: 1625299420} + - {fileID: 352165316} + - {fileID: 803669724} + - {fileID: 1704083325} + - {fileID: 71297250} + - {fileID: 1647661431} + - {fileID: 1623874906} + - {fileID: 1076874526} + - {fileID: 1346965650} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &60958073 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 60958071} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d9704d540ac448439a425526f6b2986, type: 3} + m_Name: + m_EditorClassIdentifier: + solvers: + - {fileID: 60958074} + substeps: 3 +--- !u!114 &60958074 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 60958071} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d174fab52f0c4b8399f25d5c3ea524c, type: 3} + m_Name: + m_EditorClassIdentifier: + simulateWhenInvisible: 1 + m_Backend: 1 + parameters: + mode: 0 + interpolation: 0 + gravity: {x: 0, y: -9.81, z: 0} + damping: 0.3 + maxAnisotropy: 3 + sleepThreshold: 0.001 + collisionMargin: 0.005 + maxDepenetration: 5 + continuousCollisionDetection: 1 + shockPropagation: 0 + surfaceCollisionIterations: 8 + surfaceCollisionTolerance: 0.005 + gravity: {x: 0, y: -9.81, z: 0} + gravitySpace: 1 + worldLinearInertiaScale: 0 + worldAngularInertiaScale: 0 + distanceConstraintParameters: + evaluationOrder: 0 + iterations: 2 + SORFactor: 1 + enabled: 1 + bendingConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + particleCollisionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + particleFrictionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + collisionConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 1 + frictionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + skinConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + volumeConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + shapeMatchingConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + tetherConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + pinConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + stitchConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + densityConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + stretchShearConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + bendTwistConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + chainConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 +--- !u!114 &60958075 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 60958071} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5551d37f45fd044ff8768019501c20a5, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &71297249 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 71297250} + - component: {fileID: 71297253} + - component: {fileID: 71297252} + - component: {fileID: 71297251} + m_Layer: 0 + m_Name: Fixpoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &71297250 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 71297249} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.222, y: 3.026, z: 0} + m_LocalScale: {x: 0.30636996, y: 0.10934244, z: 0.10934244} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 60958072} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &71297251 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 71297249} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &71297252 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 71297249} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &71297253 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 71297249} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &282899373 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 282899377} + - component: {fileID: 282899376} + - component: {fileID: 282899375} + - component: {fileID: 282899374} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &282899374 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 282899373} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &282899375 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 282899373} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &282899376 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 282899373} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_UseReflectionProbes: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &282899377 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 282899373} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2087273468} + - {fileID: 665462092} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &352165315 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 352165316} + - component: {fileID: 352165319} + - component: {fileID: 352165317} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &352165316 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 352165315} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.91, y: 3.45, z: -0.22} + m_LocalScale: {x: 2, y: 0.1, z: 0.1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 60958072} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &352165317 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 352165315} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &352165319 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 352165315} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &421764872 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a0a5f9e13fa7c47f78547e54896609da, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459882} + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459883} + m_SourcePrefab: {fileID: 100100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!1 &459217661 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 459217663} + - component: {fileID: 459217662} + m_Layer: 0 + m_Name: BurstCollisionWorld + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &459217662 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459217661} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1a161c4294214a4fbcb7e9e94800494, type: 3} + m_Name: + m_EditorClassIdentifier: + cellSpans: + m_AlignBytes: 16 +--- !u!4 &459217663 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459217661} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!43 &470645544 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &476562058 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 476562059} + - component: {fileID: 476562062} + - component: {fileID: 476562061} + - component: {fileID: 476562060} + - component: {fileID: 476562063} + m_Layer: 0 + m_Name: side (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &476562059 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 476562058} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -1, z: 0.000000027727193} + m_LocalScale: {x: 1.3271179, y: 0.108844705, z: 1.3271178} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1704083325} + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!65 &476562060 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 476562058} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1.0000001, y: 2.0000005, z: 1.0000006} + m_Center: {x: 0.000000059604645, y: -2.5410988e-21, z: -0.000000089406996} +--- !u!23 &476562061 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 476562058} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e78e1b735e05b4dee88b279cb6997001, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &476562062 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 476562058} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &476562063 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 476562058} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 476562060} + m_DistanceField: {fileID: 0} +--- !u!1 &506459881 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + m_PrefabInstance: {fileID: 421764872} + m_PrefabAsset: {fileID: 0} +--- !u!64 &506459882 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 4300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!114 &506459883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 506459882} + m_DistanceField: {fileID: 11400000, guid: 5eb5ff1af3a3f4a14977448198c232ae, type: 2} +--- !u!1 &665462091 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 665462092} + - component: {fileID: 665462094} + - component: {fileID: 665462093} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &665462092 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 665462091} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 282899377} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 100.29999, y: 24.400024} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &665462093 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 665462091} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 5 + m_MaxSize: 200 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Use W,A,S,D to control the crane. +--- !u!222 &665462094 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 665462091} + m_CullTransparentMesh: 0 +--- !u!1 &803669723 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 803669724} + - component: {fileID: 803669727} + - component: {fileID: 803669725} + m_Layer: 0 + m_Name: Cube (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &803669724 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 803669723} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.91, y: 3.45, z: 0.22} + m_LocalScale: {x: 2, y: 0.1, z: 0.1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 60958072} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &803669725 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 803669723} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &803669727 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 803669723} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1002464891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002464896} + - component: {fileID: 1002464895} + - component: {fileID: 1002464893} + - component: {fileID: 1002464892} + - component: {fileID: 1002464897} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1002464892 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!124 &1002464893 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!20 &1002464895 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 75 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1002464896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + serializedVersion: 2 + m_LocalRotation: {x: 0.15760262, y: 0, z: 0, w: 0.98750263} + m_LocalPosition: {x: 0, y: 3.95, z: -4.42} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1002464897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62e83a599724f45a4aa337d74764e572, type: 3} + m_Name: + m_EditorClassIdentifier: + skin: {fileID: 11400000, guid: b90d3c214c99743b0865fc0e0d1f1a15, type: 2} + threadColor: {r: 0, g: 1, b: 1, a: 1} + taskColor: {r: 0, g: 1, b: 0, a: 1} + parallelTaskColor: {r: 1, g: 0.8, b: 0.2, a: 1} + renderTaskColor: {r: 0.2, g: 0.7, b: 1, a: 1} + defaultTaskColor: {r: 1, g: 0.5, b: 0.2, a: 1} + showPercentages: 0 + profileThrottle: 30 +--- !u!1 &1060357566 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1060357570} + - component: {fileID: 1060357569} + - component: {fileID: 1060357568} + - component: {fileID: 1060357567} + - component: {fileID: 1060357571} + - component: {fileID: 1060357573} + - component: {fileID: 1060357572} + m_Layer: 0 + m_Name: Load + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1060357567 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1060357566} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1060357568 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1060357566} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1060357569 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1060357566} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1060357570 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1060357566} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.209, y: 1.65, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &1060357571 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1060357566} + serializedVersion: 5 + m_Mass: 1 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1060357572 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1060357566} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &1060357573 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1060357566} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 1060357568} + m_DistanceField: {fileID: 0} +--- !u!1 &1076874525 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1076874526} + - component: {fileID: 1076874529} + - component: {fileID: 1076874528} + - component: {fileID: 1076874527} + m_Layer: 0 + m_Name: Fixpoint (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1076874526 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1076874525} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.222, y: 0.995, z: 0} + m_LocalScale: {x: 0.30637, y: 0.10934, z: 0.10934} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 60958072} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1076874527 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1076874525} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1076874528 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1076874525} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1076874529 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1076874525} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1175446144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1175446146} + - component: {fileID: 1175446145} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1175446145 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.03 + m_NormalBias: 0.01 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1175446146 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + serializedVersion: 2 + m_LocalRotation: {x: 0.41595167, y: -0.26247028, z: 0.26683384, w: 0.82879025} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 56.052002, y: -22.431002, z: 23.642} +--- !u!1 &1327725106 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1327725109} + - component: {fileID: 1327725108} + - component: {fileID: 1327725107} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1327725107 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1327725106} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1327725108 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1327725106} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1327725109 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1327725106} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1346965641 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1346965650} + - component: {fileID: 1346965645} + - component: {fileID: 1346965644} + - component: {fileID: 1346965646} + - component: {fileID: 1346965643} + - component: {fileID: 1346965642} + - component: {fileID: 1346965651} + - component: {fileID: 1346965649} + - component: {fileID: 1346965648} + - component: {fileID: 1346965647} + - component: {fileID: 1346965652} + - component: {fileID: 1346965653} + - component: {fileID: 1346965654} + m_Layer: 10 + m_Name: Obi Rope + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1346965642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 1 + uvScale: {x: 1, y: 3} + normalizeV: 0 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &1346965643 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!23 &1346965644 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1346965645 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Mesh: {fileID: 470645544} +--- !u!114 &1346965646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000490000004a0000004b0000004c0000004d0000004e0000004f000000500000005100000052000000530000005400000055000000560000005700000058000000590000005a0000005b0000005c0000005d0000005e0000005f000000600000006100000062000000630000006400000065000000660000006700000068000000690000006a0000006b0000006c0000006d0000006e0000006f000000700000007100000072000000730000007400000075000000760000007700000078000000790000007a0000007b0000007c0000007d0000007e0000007f000000800000008100000082000000830000008400000085000000860000008700000088000000890000008a0000008b0000008c0000008d0000008e0000008f00000090000000910000009200000093000000940000009500000096000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 1 + m_SelfCollisions: 1 + restLength_: 7.78888 + elements: + - particle1: 0 + particle2: 1 + restLength: 0.1507261 + constraintForce: 0 + tearResistance: 1 + - particle1: 1 + particle2: 2 + restLength: 0.15123467 + constraintForce: 0 + tearResistance: 1 + - particle1: 2 + particle2: 3 + restLength: 0.1509243 + constraintForce: 0 + tearResistance: 1 + - particle1: 3 + particle2: 4 + restLength: 0.15107295 + constraintForce: 0 + tearResistance: 1 + - particle1: 4 + particle2: 5 + restLength: 0.15121686 + constraintForce: 0 + tearResistance: 1 + - particle1: 5 + particle2: 6 + restLength: 0.14650144 + constraintForce: 0 + tearResistance: 1 + - particle1: 6 + particle2: 7 + restLength: 0.1465397 + constraintForce: 0 + tearResistance: 1 + - particle1: 7 + particle2: 8 + restLength: 0.14655413 + constraintForce: 0 + tearResistance: 1 + - particle1: 8 + particle2: 9 + restLength: 0.14655772 + constraintForce: 0 + tearResistance: 1 + - particle1: 9 + particle2: 10 + restLength: 0.14655447 + constraintForce: 0 + tearResistance: 1 + - particle1: 10 + particle2: 11 + restLength: 0.146547 + constraintForce: 0 + tearResistance: 1 + - particle1: 11 + particle2: 12 + restLength: 0.146539 + constraintForce: 0 + tearResistance: 1 + - particle1: 12 + particle2: 13 + restLength: 0.14537717 + constraintForce: 0 + tearResistance: 1 + - particle1: 13 + particle2: 14 + restLength: 0.145376 + constraintForce: 0 + tearResistance: 1 + - particle1: 14 + particle2: 15 + restLength: 0.14537315 + constraintForce: 0 + tearResistance: 1 + - particle1: 15 + particle2: 16 + restLength: 0.14536862 + constraintForce: 0 + tearResistance: 1 + - particle1: 16 + particle2: 17 + restLength: 0.14536047 + constraintForce: 0 + tearResistance: 1 + - particle1: 17 + particle2: 18 + restLength: 0.14534782 + constraintForce: 0 + tearResistance: 1 + - particle1: 18 + particle2: 19 + restLength: 0.14533179 + constraintForce: 0 + tearResistance: 1 + - particle1: 19 + particle2: 20 + restLength: 0.15333234 + constraintForce: 0 + tearResistance: 1 + - particle1: 20 + particle2: 21 + restLength: 0.15336941 + constraintForce: 0 + tearResistance: 1 + - particle1: 21 + particle2: 22 + restLength: 0.15329686 + constraintForce: 0 + tearResistance: 1 + - particle1: 22 + particle2: 23 + restLength: 0.15281764 + constraintForce: 0 + tearResistance: 1 + - particle1: 23 + particle2: 24 + restLength: 0.16120628 + constraintForce: 0 + tearResistance: 1 + - particle1: 24 + particle2: 25 + restLength: 0.16455178 + constraintForce: 0 + tearResistance: 1 + - particle1: 25 + particle2: 26 + restLength: 0.16564642 + constraintForce: 0 + tearResistance: 1 + - particle1: 26 + particle2: 27 + restLength: 0.16537806 + constraintForce: 0 + tearResistance: 1 + - particle1: 27 + particle2: 28 + restLength: 0.16589169 + constraintForce: 0 + tearResistance: 1 + - particle1: 28 + particle2: 29 + restLength: 0.16580167 + constraintForce: 0 + tearResistance: 1 + - particle1: 29 + particle2: 30 + restLength: 0.16541299 + constraintForce: 0 + tearResistance: 1 + - particle1: 30 + particle2: 31 + restLength: 0.1656078 + constraintForce: 0 + tearResistance: 1 + - particle1: 31 + particle2: 32 + restLength: 0.16568695 + constraintForce: 0 + tearResistance: 1 + - particle1: 32 + particle2: 33 + restLength: 0.16556904 + constraintForce: 0 + tearResistance: 1 + - particle1: 33 + particle2: 34 + restLength: 0.164986 + constraintForce: 0 + tearResistance: 1 + - particle1: 34 + particle2: 35 + restLength: 0.16632591 + constraintForce: 0 + tearResistance: 1 + - particle1: 35 + particle2: 36 + restLength: 0.16450676 + constraintForce: 0 + tearResistance: 1 + - particle1: 36 + particle2: 37 + restLength: 0.16437778 + constraintForce: 0 + tearResistance: 1 + - particle1: 37 + particle2: 38 + restLength: 0.1647215 + constraintForce: 0 + tearResistance: 1 + - particle1: 38 + particle2: 39 + restLength: 0.16523813 + constraintForce: 0 + tearResistance: 1 + - particle1: 39 + particle2: 40 + restLength: 0.16536571 + constraintForce: 0 + tearResistance: 1 + - particle1: 40 + particle2: 41 + restLength: 0.16566478 + constraintForce: 0 + tearResistance: 1 + - particle1: 41 + particle2: 42 + restLength: 0.1656973 + constraintForce: 0 + tearResistance: 1 + - particle1: 42 + particle2: 43 + restLength: 0.16564785 + constraintForce: 0 + tearResistance: 1 + - particle1: 43 + particle2: 44 + restLength: 0.1657586 + constraintForce: 0 + tearResistance: 1 + - particle1: 44 + particle2: 45 + restLength: 0.16586185 + constraintForce: 0 + tearResistance: 1 + - particle1: 45 + particle2: 46 + restLength: 0.1652724 + constraintForce: 0 + tearResistance: 1 + - particle1: 46 + particle2: 47 + restLength: 0.14413904 + constraintForce: 0 + tearResistance: 1 + - particle1: 47 + particle2: 48 + restLength: 0.14454886 + constraintForce: 0 + tearResistance: 1 + - particle1: 48 + particle2: 49 + restLength: 0.14459378 + constraintForce: 0 + tearResistance: 1 + - particle1: 49 + particle2: 50 + restLength: 0.14410257 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: d3d21d979f26f472ca2945f4e727239c, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0.1 + _maxBending: 0.01 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &1346965647 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965646} + m_Target: {fileID: 1346965650} + m_ParticleGroup: {fileID: 1448059488115486757, guid: d3d21d979f26f472ca2945f4e727239c, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1346965648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965646} + m_Target: {fileID: 1346965650} + m_ParticleGroup: {fileID: 8966044903772103319, guid: d3d21d979f26f472ca2945f4e727239c, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1346965649 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965646} + m_Target: {fileID: 1346965650} + m_ParticleGroup: {fileID: -4315519228067560828, guid: d3d21d979f26f472ca2945f4e727239c, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!4 &1346965650 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 3.649, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 60958072} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1346965651 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965646} + m_Target: {fileID: 1346965650} + m_ParticleGroup: {fileID: 1429558885246807610, guid: d3d21d979f26f472ca2945f4e727239c, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1346965652 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965646} + m_Target: {fileID: 1060357570} + m_ParticleGroup: {fileID: 7435677298537737283, guid: d3d21d979f26f472ca2945f4e727239c, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1346965653 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8285ac97113f74d449053378d0e3a56b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_CursorMu: 0.531 + m_SourceMu: 0.741 + direction: 1 +--- !u!114 &1346965654 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c8b45ebbf86be4df6b0e6cd933812af2, type: 3} + m_Name: + m_EditorClassIdentifier: + render: 1 + shader: {fileID: 4800000, guid: 801733041f66b49e1b3c2101471db877, type: 3} + particleColor: {r: 1, g: 1, b: 1, a: 1} + radiusScale: 1 +--- !u!1 &1623874905 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1623874906} + - component: {fileID: 1623874909} + - component: {fileID: 1623874908} + - component: {fileID: 1623874907} + m_Layer: 0 + m_Name: Fixpoint (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1623874906 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1623874905} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0.3520592, w: 0.93597776} + m_LocalPosition: {x: -0.161, y: 3.581, z: 0} + m_LocalScale: {x: 0.30637, y: 0.10934, z: 0.10934} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 60958072} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -41.227} +--- !u!23 &1623874907 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1623874905} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1623874908 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1623874905} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1623874909 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1623874905} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1625299419 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1625299420} + - component: {fileID: 1625299423} + - component: {fileID: 1625299422} + - component: {fileID: 1625299421} + - component: {fileID: 1625299424} + m_Layer: 0 + m_Name: Post + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1625299420 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1625299419} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.865, z: 0} + m_LocalScale: {x: 0.3, y: 1.7, z: 0.3} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 60958072} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1625299421 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1625299419} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!136 &1625299422 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1625299419} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1625299423 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1625299419} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1625299424 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1625299419} + serializedVersion: 5 + m_Mass: 1 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &1647661430 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1647661431} + - component: {fileID: 1647661434} + - component: {fileID: 1647661433} + - component: {fileID: 1647661432} + m_Layer: 0 + m_Name: Fixpoint (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1647661431 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647661430} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.222, y: 2.013, z: 0} + m_LocalScale: {x: 0.30637, y: 0.10934, z: 0.10934} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 60958072} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1647661432 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647661430} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1647661433 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647661430} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1647661434 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647661430} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1704083320 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1704083325} + - component: {fileID: 1704083324} + - component: {fileID: 1704083323} + - component: {fileID: 1704083322} + - component: {fileID: 1704083321} + - component: {fileID: 1704083326} + - component: {fileID: 1704083327} + - component: {fileID: 1704083328} + m_Layer: 0 + m_Name: pulley + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!54 &1704083321 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1704083320} + serializedVersion: 5 + m_Mass: 2 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!23 &1704083322 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1704083320} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e78e1b735e05b4dee88b279cb6997001, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!136 &1704083323 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1704083320} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Height: 7 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1704083324 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1704083320} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1704083325 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1704083320} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 1.786, y: 3.414, z: 0} + m_LocalScale: {x: 0.5374203, y: 0.14277229, z: 0.5374205} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1779091963} + - {fileID: 476562059} + m_Father: {fileID: 60958072} + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!114 &1704083326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1704083320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 11400000, guid: 56297c6e785b44eb28e469b62cedc016, type: 2} + filter: -65535 + m_SourceCollider: {fileID: 1704083323} + m_DistanceField: {fileID: 0} +--- !u!59 &1704083327 +HingeJoint: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1704083320} + serializedVersion: 3 + m_ConnectedBody: {fileID: 1625299424} + m_ConnectedArticulationBody: {fileID: 0} + m_Anchor: {x: 0, y: 1.0000002, z: 0} + m_Axis: {x: 0, y: 1, z: 0} + m_AutoConfigureConnectedAnchor: 1 + m_ConnectedAnchor: {x: 5.953333, y: 0.91117644, z: -0.4759077} + m_UseSpring: 0 + m_Spring: + spring: 0 + damper: 0 + targetPosition: 0 + m_UseMotor: 0 + m_Motor: + targetVelocity: 0 + force: 0 + freeSpin: 0 + m_UseLimits: 0 + m_ExtendedLimits: 0 + m_UseAcceleration: 0 + m_Limits: + min: 0 + max: 0 + bounciness: 0 + bounceMinVelocity: 0.2 + contactDistance: 0 + m_BreakForce: Infinity + m_BreakTorque: Infinity + m_EnableCollision: 0 + m_EnablePreprocessing: 1 + m_MassScale: 1 + m_ConnectedMassScale: 1 +--- !u!114 &1704083328 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1704083320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!1 &1779091962 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1779091963} + - component: {fileID: 1779091966} + - component: {fileID: 1779091965} + - component: {fileID: 1779091964} + - component: {fileID: 1779091967} + m_Layer: 0 + m_Name: side + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1779091963 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1779091962} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -0} + m_LocalScale: {x: 1.327126, y: 0.10883308, z: 1.3271254} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1704083325} + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!65 &1779091964 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1779091962} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1.0000001, y: 2.0000005, z: 1.0000006} + m_Center: {x: 0.000000059604645, y: -2.5410988e-21, z: -0.000000089406996} +--- !u!23 &1779091965 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1779091962} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e78e1b735e05b4dee88b279cb6997001, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1779091966 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1779091962} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &1779091967 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1779091962} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 1779091964} + m_DistanceField: {fileID: 0} +--- !u!1 &1929056557 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1929056558} + - component: {fileID: 1929056561} + - component: {fileID: 1929056560} + - component: {fileID: 1929056559} + m_Layer: 0 + m_Name: Base + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1929056558 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1929056557} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 0.2, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 60958072} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1929056559 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1929056557} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!136 &1929056560 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1929056557} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1929056561 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1929056557} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2087273467 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2087273468} + - component: {fileID: 2087273472} + - component: {fileID: 2087273471} + - component: {fileID: 2087273470} + - component: {fileID: 2087273469} + m_Layer: 5 + m_Name: FPSDisplay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2087273468 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2087273467} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 282899377} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 99, y: -31} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2087273469 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2087273467} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &2087273470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2087273467} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f14f49b61044e49ebb2f29511f2b3f41, type: 3} + m_Name: + m_EditorClassIdentifier: + updateInterval: 0.5 + showMedian: 0 + medianLearnrate: 0.05 +--- !u!114 &2087273471 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2087273467} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &2087273472 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2087273467} + m_CullTransparentMesh: 0 +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1002464896} + - {fileID: 421764872} + - {fileID: 1175446146} + - {fileID: 60958072} + - {fileID: 1060357570} + - {fileID: 282899377} + - {fileID: 1327725109} + - {fileID: 459217663} diff --git a/Assets/Obi/Samples/RopeAndRod/Crane.unity.meta b/Assets/Obi/Samples/RopeAndRod/Crane.unity.meta new file mode 100644 index 000000000..3d5ddadd0 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/Crane.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 440a0ad01189148c4a077885d818dce1 +labels: +- ObiRope +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/CraneSettings.lighting b/Assets/Obi/Samples/RopeAndRod/CraneSettings.lighting new file mode 100644 index 000000000..101f33d73 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/CraneSettings.lighting @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CraneSettings + serializedVersion: 10 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_LightmapPackingMode: 1 + m_LightmapPackingMethod: 0 + m_XAtlasPackingAttempts: 16384 + m_XAtlasBruteForce: 0 + m_XAtlasBlockAlign: 0 + m_XAtlasRepackUnderutilizedLightmaps: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/CraneSettings.lighting.meta b/Assets/Obi/Samples/RopeAndRod/CraneSettings.lighting.meta new file mode 100644 index 000000000..981c56e9e --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/CraneSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2113ca78fca0a5c45b69799c2558c6f9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/ElectricalWires.unity b/Assets/Obi/Samples/RopeAndRod/ElectricalWires.unity new file mode 100644 index 000000000..652e44b11 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/ElectricalWires.unity @@ -0,0 +1,4342 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: 61831b9bdab53284a9732dba5f9b17ab, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &153317910 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 153317914} + - component: {fileID: 153317913} + - component: {fileID: 153317912} + - component: {fileID: 153317911} + - component: {fileID: 153317915} + m_Layer: 0 + m_Name: Wall2 (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &153317911 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 153317910} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &153317912 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 153317910} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &153317913 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 153317910} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &153317914 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 153317910} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.178, y: 2, z: 0} + m_LocalScale: {x: 0.19897103, y: 4, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &153317915 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 153317910} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 153317912} + m_DistanceField: {fileID: 0} +--- !u!43 &268893267 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!43 &377400401 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1001 &421764872 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a0a5f9e13fa7c47f78547e54896609da, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459882} + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459883} + m_SourcePrefab: {fileID: 100100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!1 &506459881 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + m_PrefabInstance: {fileID: 421764872} + m_PrefabAsset: {fileID: 0} +--- !u!64 &506459882 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 4300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!114 &506459883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 11400000, guid: d368f2c47473d4bfb8dd9f08073cb403, type: 2} + filter: -65535 + m_SourceCollider: {fileID: 506459882} + m_DistanceField: {fileID: 0} +--- !u!1 &526830944 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 526830948} + - component: {fileID: 526830947} + - component: {fileID: 526830946} + - component: {fileID: 526830945} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &526830945 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 526830944} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &526830946 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 526830944} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &526830947 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 526830944} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_UseReflectionProbes: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &526830948 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 526830944} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1083562910} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &574933228 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 574933238} + - component: {fileID: 574933237} + - component: {fileID: 574933236} + - component: {fileID: 574933229} + - component: {fileID: 574933235} + - component: {fileID: 574933234} + - component: {fileID: 574933233} + - component: {fileID: 574933232} + - component: {fileID: 574933231} + - component: {fileID: 574933230} + - component: {fileID: 574933239} + m_Layer: 10 + m_Name: Obi Rope (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &574933229 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574933228} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000490000004a0000004b0000004c0000004d0000004e0000004f000000500000005100000052000000530000005400000055000000560000005700000058000000590000005a0000005b0000005c0000005d0000005e0000005f000000600000006100000062000000630000006400000065000000660000006700000068000000690000006a0000006b0000006c0000006d0000006e0000006f000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 2 + elements: + - particle1: 0 + particle2: 1 + restLength: 0.18198538 + constraintForce: 0 + tearResistance: 1 + - particle1: 1 + particle2: 2 + restLength: 0.18199486 + constraintForce: 0 + tearResistance: 1 + - particle1: 2 + particle2: 3 + restLength: 0.18258971 + constraintForce: 0 + tearResistance: 1 + - particle1: 3 + particle2: 4 + restLength: 0.1823813 + constraintForce: 0 + tearResistance: 1 + - particle1: 4 + particle2: 5 + restLength: 0.18250579 + constraintForce: 0 + tearResistance: 1 + - particle1: 5 + particle2: 6 + restLength: 0.18252659 + constraintForce: 0 + tearResistance: 1 + - particle1: 6 + particle2: 7 + restLength: 0.18252763 + constraintForce: 0 + tearResistance: 1 + - particle1: 7 + particle2: 8 + restLength: 0.18244386 + constraintForce: 0 + tearResistance: 1 + - particle1: 8 + particle2: 9 + restLength: 0.18238264 + constraintForce: 0 + tearResistance: 1 + - particle1: 9 + particle2: 10 + restLength: 0.18209195 + constraintForce: 0 + tearResistance: 1 + - particle1: 10 + particle2: 11 + restLength: 0.17657018 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: 61d053dd5abd943919947f833abd0569, type: 2} + tearingEnabled: 1 + tearResistanceMultiplier: 450 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &574933230 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574933228} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 574933229} + m_Target: {fileID: 153317914} + m_ParticleGroup: {fileID: 5567824606580605130, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &574933231 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574933228} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 574933229} + m_Target: {fileID: 1189404435} + m_ParticleGroup: {fileID: 1812756508894959938, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &574933232 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574933228} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 574933229} + m_Target: {fileID: 153317914} + m_ParticleGroup: {fileID: -2436371210810594525, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &574933233 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574933228} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 574933229} + m_Target: {fileID: 1189404435} + m_ParticleGroup: {fileID: 1986289758551400005, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &574933234 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574933228} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 3} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &574933235 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574933228} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!23 &574933236 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574933228} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &574933237 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574933228} + m_Mesh: {fileID: 1903182369} +--- !u!4 &574933238 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574933228} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0.0717349, w: 0.99742377} + m_LocalPosition: {x: -1.094, y: 0.88, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -8.227} +--- !u!114 &574933239 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574933228} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4514513daf5b14cb689daa23e9d8575e, type: 3} + m_Name: + m_EditorClassIdentifier: + prefab: {fileID: 1583403103468830, guid: 46b3b311bc85645d88ddbc56ad5465f2, type: 3} + instanceScale: {x: 1, y: 1, z: 1} + plugTears: 1 + plugStart: 0 + plugEnd: 0 +--- !u!1 &593691592 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 593691593} + - component: {fileID: 593691595} + - component: {fileID: 593691594} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &593691593 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 593691592} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2064238800} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &593691594 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 593691592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 25 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 265 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Drag Me! --> +--- !u!222 &593691595 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 593691592} + m_CullTransparentMesh: 0 +--- !u!43 &826093225 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &1002464891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002464896} + - component: {fileID: 1002464895} + - component: {fileID: 1002464893} + - component: {fileID: 1002464892} + - component: {fileID: 1002464897} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1002464892 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!124 &1002464893 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!20 &1002464895 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 75 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1002464896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + serializedVersion: 2 + m_LocalRotation: {x: 0.15760262, y: 0, z: 0, w: 0.98750263} + m_LocalPosition: {x: 0, y: 3.95, z: -4.42} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1002464897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62e83a599724f45a4aa337d74764e572, type: 3} + m_Name: + m_EditorClassIdentifier: + skin: {fileID: 11400000, guid: b90d3c214c99743b0865fc0e0d1f1a15, type: 2} + threadColor: {r: 0, g: 1, b: 1, a: 1} + taskColor: {r: 0, g: 1, b: 0, a: 1} + parallelTaskColor: {r: 1, g: 0.8, b: 0.2, a: 1} + renderTaskColor: {r: 0.2, g: 0.7, b: 1, a: 1} + defaultTaskColor: {r: 1, g: 0.5, b: 0.2, a: 1} + showPercentages: 0 + profileThrottle: 30 +--- !u!1 &1083562909 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1083562910} + - component: {fileID: 1083562914} + - component: {fileID: 1083562913} + - component: {fileID: 1083562912} + - component: {fileID: 1083562911} + m_Layer: 5 + m_Name: FPSDisplay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1083562910 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1083562909} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 526830948} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 99, y: -31} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1083562911 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1083562909} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &1083562912 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1083562909} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f14f49b61044e49ebb2f29511f2b3f41, type: 3} + m_Name: + m_EditorClassIdentifier: + updateInterval: 0.5 + showMedian: 0 + medianLearnrate: 0.05 +--- !u!114 &1083562913 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1083562909} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1083562914 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1083562909} + m_CullTransparentMesh: 0 +--- !u!1 &1175446144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1175446146} + - component: {fileID: 1175446145} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1175446145 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.03 + m_NormalBias: 0.01 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1175446146 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + serializedVersion: 2 + m_LocalRotation: {x: 0.41595167, y: -0.26247028, z: 0.26683384, w: 0.82879025} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 56.052002, y: -22.431002, z: 23.642} +--- !u!1 &1189404431 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1189404435} + - component: {fileID: 1189404434} + - component: {fileID: 1189404433} + - component: {fileID: 1189404432} + - component: {fileID: 1189404436} + - component: {fileID: 1189404437} + - component: {fileID: 1189404438} + m_Layer: 0 + m_Name: Wall2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1189404432 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1189404431} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1189404433 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1189404431} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1189404434 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1189404431} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1189404435 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1189404431} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 2, z: 0} + m_LocalScale: {x: 0.19897103, y: 4, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2064238800} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1189404436 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1189404431} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cbe5860a158ab4ff9852d93167f38e5a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1189404437 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1189404431} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6da1d294c86704f3394415f542741ebe, type: 3} + m_Name: + m_EditorClassIdentifier: + minX: -1 + maxX: 2 + minY: 2 + maxY: 2 + minZ: 0 + maxZ: 0 +--- !u!114 &1189404438 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1189404431} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 1189404433} + m_DistanceField: {fileID: 0} +--- !u!1 &1346965641 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1346965650} + - component: {fileID: 1346965645} + - component: {fileID: 1346965644} + - component: {fileID: 1346965642} + - component: {fileID: 1346965646} + - component: {fileID: 1346965643} + - component: {fileID: 1346965648} + - component: {fileID: 1346965647} + - component: {fileID: 1346965651} + - component: {fileID: 1346965649} + - component: {fileID: 1346965652} + m_Layer: 10 + m_Name: Obi Rope + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1346965642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 700000007100000072000000730000007400000075000000760000007700000078000000790000007a0000007b0000007c0000007d0000007e0000007f000000800000008100000082000000830000008400000085000000860000008700000088000000890000008a0000008b0000008c0000008d0000008e0000008f000000900000009100000092000000930000009400000095000000960000009700000098000000990000009a0000009b0000009c0000009d0000009e0000009f000000a0000000a1000000a2000000a3000000a4000000a5000000a6000000a7000000a8000000a9000000aa000000ab000000ac000000ad000000ae000000af000000b0000000b1000000b2000000b3000000b4000000b5000000b6000000b7000000b8000000b9000000ba000000bb000000bc000000bd000000be000000bf000000c0000000c1000000c2000000c3000000c4000000c5000000c6000000c7000000c8000000c9000000ca000000cb000000cc000000cd000000ce000000cf000000d0000000d1000000d2000000d3000000d4000000d5000000d6000000d7000000d8000000d9000000da000000db000000dc000000dd000000de000000df000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 2 + elements: + - particle1: 112 + particle2: 113 + restLength: 0.18198538 + constraintForce: 0 + tearResistance: 1 + - particle1: 113 + particle2: 114 + restLength: 0.18199486 + constraintForce: 0 + tearResistance: 1 + - particle1: 114 + particle2: 115 + restLength: 0.18258971 + constraintForce: 0 + tearResistance: 1 + - particle1: 115 + particle2: 116 + restLength: 0.1823813 + constraintForce: 0 + tearResistance: 1 + - particle1: 116 + particle2: 117 + restLength: 0.18250579 + constraintForce: 0 + tearResistance: 1 + - particle1: 117 + particle2: 118 + restLength: 0.18252659 + constraintForce: 0 + tearResistance: 1 + - particle1: 118 + particle2: 119 + restLength: 0.18252763 + constraintForce: 0 + tearResistance: 1 + - particle1: 119 + particle2: 120 + restLength: 0.18244386 + constraintForce: 0 + tearResistance: 1 + - particle1: 120 + particle2: 121 + restLength: 0.18238264 + constraintForce: 0 + tearResistance: 1 + - particle1: 121 + particle2: 122 + restLength: 0.18209195 + constraintForce: 0 + tearResistance: 1 + - particle1: 122 + particle2: 123 + restLength: 0.17657018 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: 61d053dd5abd943919947f833abd0569, type: 2} + tearingEnabled: 1 + tearResistanceMultiplier: 450 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &1346965643 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 3} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!23 &1346965644 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1346965645 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Mesh: {fileID: 826093225} +--- !u!114 &1346965646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!114 &1346965647 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965642} + m_Target: {fileID: 153317914} + m_ParticleGroup: {fileID: -2436371210810594525, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1346965648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965642} + m_Target: {fileID: 1189404435} + m_ParticleGroup: {fileID: 1986289758551400005, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1346965649 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965642} + m_Target: {fileID: 153317914} + m_ParticleGroup: {fileID: 5567824606580605130, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!4 &1346965650 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.094, y: 3.65, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1346965651 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965642} + m_Target: {fileID: 1189404435} + m_ParticleGroup: {fileID: 1812756508894959938, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1346965652 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4514513daf5b14cb689daa23e9d8575e, type: 3} + m_Name: + m_EditorClassIdentifier: + prefab: {fileID: 1583403103468830, guid: 46b3b311bc85645d88ddbc56ad5465f2, type: 3} + instanceScale: {x: 1, y: 1, z: 1} + plugTears: 1 + plugStart: 0 + plugEnd: 0 +--- !u!43 &1353394497 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &1395255069 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1395255071} + - component: {fileID: 1395255070} + m_Layer: 0 + m_Name: BurstCollisionWorld + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1395255070 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1395255069} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1a161c4294214a4fbcb7e9e94800494, type: 3} + m_Name: + m_EditorClassIdentifier: + cellSpans: + m_AlignBytes: 16 +--- !u!4 &1395255071 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1395255069} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1544324415 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1544324425} + - component: {fileID: 1544324424} + - component: {fileID: 1544324423} + - component: {fileID: 1544324416} + - component: {fileID: 1544324422} + - component: {fileID: 1544324421} + - component: {fileID: 1544324420} + - component: {fileID: 1544324419} + - component: {fileID: 1544324418} + - component: {fileID: 1544324417} + - component: {fileID: 1544324426} + m_Layer: 10 + m_Name: Obi Rope (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1544324416 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1544324415} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: e0000000e1000000e2000000e3000000e4000000e5000000e6000000e7000000e8000000e9000000ea000000eb000000ec000000ed000000ee000000ef000000f0000000f1000000f2000000f3000000f4000000f5000000f6000000f7000000f8000000f9000000fa000000fb000000fc000000fd000000fe000000ff000000000100000101000002010000030100000401000005010000060100000701000008010000090100000a0100000b0100000c0100000d0100000e0100000f010000100100001101000012010000130100001401000015010000160100001701000018010000190100001a0100001b0100001c0100001d0100001e0100001f010000200100002101000022010000230100002401000025010000260100002701000028010000290100002a0100002b0100002c0100002d0100002e0100002f010000300100003101000032010000330100003401000035010000360100003701000038010000390100003a0100003b0100003c0100003d0100003e0100003f010000400100004101000042010000430100004401000045010000460100004701000048010000490100004a0100004b0100004c0100004d0100004e0100004f010000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 2 + elements: + - particle1: 224 + particle2: 225 + restLength: 0.18198538 + constraintForce: 0 + tearResistance: 1 + - particle1: 225 + particle2: 226 + restLength: 0.18199486 + constraintForce: 0 + tearResistance: 1 + - particle1: 226 + particle2: 227 + restLength: 0.18258971 + constraintForce: 0 + tearResistance: 1 + - particle1: 227 + particle2: 228 + restLength: 0.1823813 + constraintForce: 0 + tearResistance: 1 + - particle1: 228 + particle2: 229 + restLength: 0.18250579 + constraintForce: 0 + tearResistance: 1 + - particle1: 229 + particle2: 230 + restLength: 0.18252659 + constraintForce: 0 + tearResistance: 1 + - particle1: 230 + particle2: 231 + restLength: 0.18252763 + constraintForce: 0 + tearResistance: 1 + - particle1: 231 + particle2: 232 + restLength: 0.18244386 + constraintForce: 0 + tearResistance: 1 + - particle1: 232 + particle2: 233 + restLength: 0.18238264 + constraintForce: 0 + tearResistance: 1 + - particle1: 233 + particle2: 234 + restLength: 0.18209195 + constraintForce: 0 + tearResistance: 1 + - particle1: 234 + particle2: 235 + restLength: 0.17657018 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: 61d053dd5abd943919947f833abd0569, type: 2} + tearingEnabled: 1 + tearResistanceMultiplier: 450 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &1544324417 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1544324415} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1544324416} + m_Target: {fileID: 153317914} + m_ParticleGroup: {fileID: 5567824606580605130, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1544324418 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1544324415} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1544324416} + m_Target: {fileID: 1189404435} + m_ParticleGroup: {fileID: 1812756508894959938, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1544324419 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1544324415} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1544324416} + m_Target: {fileID: 153317914} + m_ParticleGroup: {fileID: -2436371210810594525, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1544324420 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1544324415} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1544324416} + m_Target: {fileID: 1189404435} + m_ParticleGroup: {fileID: 1986289758551400005, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1544324421 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1544324415} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 3} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &1544324422 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1544324415} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!23 &1544324423 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1544324415} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1544324424 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1544324415} + m_Mesh: {fileID: 268893267} +--- !u!4 &1544324425 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1544324415} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: 0.076309904, w: 0.99708414} + m_LocalPosition: {x: -1.094, y: 1.55, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 8.753} +--- !u!114 &1544324426 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1544324415} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4514513daf5b14cb689daa23e9d8575e, type: 3} + m_Name: + m_EditorClassIdentifier: + prefab: {fileID: 1583403103468830, guid: 46b3b311bc85645d88ddbc56ad5465f2, type: 3} + instanceScale: {x: 1, y: 1, z: 1} + plugTears: 1 + plugStart: 0 + plugEnd: 0 +--- !u!1 &1634024679 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1634024689} + - component: {fileID: 1634024688} + - component: {fileID: 1634024687} + - component: {fileID: 1634024680} + - component: {fileID: 1634024686} + - component: {fileID: 1634024685} + - component: {fileID: 1634024684} + - component: {fileID: 1634024683} + - component: {fileID: 1634024682} + - component: {fileID: 1634024681} + - component: {fileID: 1634024690} + m_Layer: 10 + m_Name: Obi Rope (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1634024680 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634024679} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 500100005101000052010000530100005401000055010000560100005701000058010000590100005a0100005b0100005c0100005d0100005e0100005f010000600100006101000062010000630100006401000065010000660100006701000068010000690100006a0100006b0100006c0100006d0100006e0100006f010000700100007101000072010000730100007401000075010000760100007701000078010000790100007a0100007b0100007c0100007d0100007e0100007f010000800100008101000082010000830100008401000085010000860100008701000088010000890100008a0100008b0100008c0100008d0100008e0100008f010000900100009101000092010000930100009401000095010000960100009701000098010000990100009a0100009b0100009c0100009d0100009e0100009f010000a0010000a1010000a2010000a3010000a4010000a5010000a6010000a7010000a8010000a9010000aa010000ab010000ac010000ad010000ae010000af010000b0010000b1010000b2010000b3010000b4010000b5010000b6010000b7010000b8010000b9010000ba010000bb010000bc010000bd010000be010000bf010000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 2 + elements: + - particle1: 336 + particle2: 337 + restLength: 0.18198538 + constraintForce: 0 + tearResistance: 1 + - particle1: 337 + particle2: 338 + restLength: 0.18199486 + constraintForce: 0 + tearResistance: 1 + - particle1: 338 + particle2: 339 + restLength: 0.18258971 + constraintForce: 0 + tearResistance: 1 + - particle1: 339 + particle2: 340 + restLength: 0.1823813 + constraintForce: 0 + tearResistance: 1 + - particle1: 340 + particle2: 341 + restLength: 0.18250579 + constraintForce: 0 + tearResistance: 1 + - particle1: 341 + particle2: 342 + restLength: 0.18252659 + constraintForce: 0 + tearResistance: 1 + - particle1: 342 + particle2: 343 + restLength: 0.18252763 + constraintForce: 0 + tearResistance: 1 + - particle1: 343 + particle2: 344 + restLength: 0.18244386 + constraintForce: 0 + tearResistance: 1 + - particle1: 344 + particle2: 345 + restLength: 0.18238264 + constraintForce: 0 + tearResistance: 1 + - particle1: 345 + particle2: 346 + restLength: 0.18209195 + constraintForce: 0 + tearResistance: 1 + - particle1: 346 + particle2: 347 + restLength: 0.17657018 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: 61d053dd5abd943919947f833abd0569, type: 2} + tearingEnabled: 1 + tearResistanceMultiplier: 450 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &1634024681 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634024679} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1634024680} + m_Target: {fileID: 153317914} + m_ParticleGroup: {fileID: 5567824606580605130, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1634024682 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634024679} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1634024680} + m_Target: {fileID: 1189404435} + m_ParticleGroup: {fileID: 1812756508894959938, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1634024683 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634024679} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1634024680} + m_Target: {fileID: 153317914} + m_ParticleGroup: {fileID: -2436371210810594525, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1634024684 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634024679} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1634024680} + m_Target: {fileID: 1189404435} + m_ParticleGroup: {fileID: 1986289758551400005, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1634024685 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634024679} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 3} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &1634024686 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634024679} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!23 &1634024687 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634024679} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1634024688 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634024679} + m_Mesh: {fileID: 1353394497} +--- !u!4 &1634024689 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634024679} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0.051464457, w: 0.99867487} + m_LocalPosition: {x: -1.094, y: 2.365, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -5.9} +--- !u!114 &1634024690 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634024679} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4514513daf5b14cb689daa23e9d8575e, type: 3} + m_Name: + m_EditorClassIdentifier: + prefab: {fileID: 1583403103468830, guid: 46b3b311bc85645d88ddbc56ad5465f2, type: 3} + instanceScale: {x: 1, y: 1, z: 1} + plugTears: 1 + plugStart: 0 + plugEnd: 0 +--- !u!43 &1701612439 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!43 &1903182369 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &2021410671 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2021410674} + - component: {fileID: 2021410673} + - component: {fileID: 2021410672} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2021410672 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021410671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &2021410673 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021410671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &2021410674 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021410671} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2025663232 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2025663242} + - component: {fileID: 2025663241} + - component: {fileID: 2025663240} + - component: {fileID: 2025663233} + - component: {fileID: 2025663239} + - component: {fileID: 2025663238} + - component: {fileID: 2025663237} + - component: {fileID: 2025663236} + - component: {fileID: 2025663235} + - component: {fileID: 2025663234} + - component: {fileID: 2025663243} + m_Layer: 10 + m_Name: Obi Rope (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2025663233 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2025663232} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: c0010000c1010000c2010000c3010000c4010000c5010000c6010000c7010000c8010000c9010000ca010000cb010000cc010000cd010000ce010000cf010000d0010000d1010000d2010000d3010000d4010000d5010000d6010000d7010000d8010000d9010000da010000db010000dc010000dd010000de010000df010000e0010000e1010000e2010000e3010000e4010000e5010000e6010000e7010000e8010000e9010000ea010000eb010000ec010000ed010000ee010000ef010000f0010000f1010000f2010000f3010000f4010000f5010000f6010000f7010000f8010000f9010000fa010000fb010000fc010000fd010000fe010000ff010000000200000102000002020000030200000402000005020000060200000702000008020000090200000a0200000b0200000c0200000d0200000e0200000f020000100200001102000012020000130200001402000015020000160200001702000018020000190200001a0200001b0200001c0200001d0200001e0200001f020000200200002102000022020000230200002402000025020000260200002702000028020000290200002a0200002b0200002c0200002d0200002e0200002f020000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 2 + elements: + - particle1: 448 + particle2: 449 + restLength: 0.18198538 + constraintForce: 0 + tearResistance: 1 + - particle1: 449 + particle2: 450 + restLength: 0.18199486 + constraintForce: 0 + tearResistance: 1 + - particle1: 450 + particle2: 451 + restLength: 0.18258971 + constraintForce: 0 + tearResistance: 1 + - particle1: 451 + particle2: 452 + restLength: 0.1823813 + constraintForce: 0 + tearResistance: 1 + - particle1: 452 + particle2: 453 + restLength: 0.18250579 + constraintForce: 0 + tearResistance: 1 + - particle1: 453 + particle2: 454 + restLength: 0.18252659 + constraintForce: 0 + tearResistance: 1 + - particle1: 454 + particle2: 455 + restLength: 0.18252763 + constraintForce: 0 + tearResistance: 1 + - particle1: 455 + particle2: 456 + restLength: 0.18244386 + constraintForce: 0 + tearResistance: 1 + - particle1: 456 + particle2: 457 + restLength: 0.18238264 + constraintForce: 0 + tearResistance: 1 + - particle1: 457 + particle2: 458 + restLength: 0.18209195 + constraintForce: 0 + tearResistance: 1 + - particle1: 458 + particle2: 459 + restLength: 0.17657018 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: 61d053dd5abd943919947f833abd0569, type: 2} + tearingEnabled: 1 + tearResistanceMultiplier: 450 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &2025663234 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2025663232} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 2025663233} + m_Target: {fileID: 153317914} + m_ParticleGroup: {fileID: 5567824606580605130, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &2025663235 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2025663232} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 2025663233} + m_Target: {fileID: 1189404435} + m_ParticleGroup: {fileID: 1812756508894959938, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &2025663236 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2025663232} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 2025663233} + m_Target: {fileID: 153317914} + m_ParticleGroup: {fileID: -2436371210810594525, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &2025663237 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2025663232} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 2025663233} + m_Target: {fileID: 1189404435} + m_ParticleGroup: {fileID: 1986289758551400005, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &2025663238 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2025663232} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 3} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &2025663239 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2025663232} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!23 &2025663240 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2025663232} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2025663241 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2025663232} + m_Mesh: {fileID: 377400401} +--- !u!4 &2025663242 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2025663232} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0.05311633, w: 0.9985884} + m_LocalPosition: {x: -1.094, y: 3.288, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -6.09} +--- !u!114 &2025663243 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2025663232} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4514513daf5b14cb689daa23e9d8575e, type: 3} + m_Name: + m_EditorClassIdentifier: + prefab: {fileID: 1583403103468830, guid: 46b3b311bc85645d88ddbc56ad5465f2, type: 3} + instanceScale: {x: 1, y: 1, z: 1} + plugTears: 1 + plugStart: 0 + plugEnd: 0 +--- !u!1 &2060423109 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2060423119} + - component: {fileID: 2060423118} + - component: {fileID: 2060423117} + - component: {fileID: 2060423110} + - component: {fileID: 2060423116} + - component: {fileID: 2060423115} + - component: {fileID: 2060423114} + - component: {fileID: 2060423113} + - component: {fileID: 2060423112} + - component: {fileID: 2060423111} + - component: {fileID: 2060423120} + m_Layer: 10 + m_Name: Obi Rope (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2060423110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2060423109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 300200003102000032020000330200003402000035020000360200003702000038020000390200003a0200003b0200003c0200003d0200003e0200003f020000400200004102000042020000430200004402000045020000460200004702000048020000490200004a0200004b0200004c0200004d0200004e0200004f020000500200005102000052020000530200005402000055020000560200005702000058020000590200005a0200005b0200005c0200005d0200005e0200005f020000600200006102000062020000630200006402000065020000660200006702000068020000690200006a0200006b0200006c0200006d0200006e0200006f020000700200007102000072020000730200007402000075020000760200007702000078020000790200007a0200007b0200007c0200007d0200007e0200007f020000800200008102000082020000830200008402000085020000860200008702000088020000890200008a0200008b0200008c0200008d0200008e0200008f020000900200009102000092020000930200009402000095020000960200009702000098020000990200009a0200009b0200009c0200009d0200009e0200009f020000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 2 + elements: + - particle1: 560 + particle2: 561 + restLength: 0.18198538 + constraintForce: 0 + tearResistance: 1 + - particle1: 561 + particle2: 562 + restLength: 0.18199486 + constraintForce: 0 + tearResistance: 1 + - particle1: 562 + particle2: 563 + restLength: 0.18258971 + constraintForce: 0 + tearResistance: 1 + - particle1: 563 + particle2: 564 + restLength: 0.1823813 + constraintForce: 0 + tearResistance: 1 + - particle1: 564 + particle2: 565 + restLength: 0.18250579 + constraintForce: 0 + tearResistance: 1 + - particle1: 565 + particle2: 566 + restLength: 0.18252659 + constraintForce: 0 + tearResistance: 1 + - particle1: 566 + particle2: 567 + restLength: 0.18252763 + constraintForce: 0 + tearResistance: 1 + - particle1: 567 + particle2: 568 + restLength: 0.18244386 + constraintForce: 0 + tearResistance: 1 + - particle1: 568 + particle2: 569 + restLength: 0.18238264 + constraintForce: 0 + tearResistance: 1 + - particle1: 569 + particle2: 570 + restLength: 0.18209195 + constraintForce: 0 + tearResistance: 1 + - particle1: 570 + particle2: 571 + restLength: 0.17657018 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: 61d053dd5abd943919947f833abd0569, type: 2} + tearingEnabled: 1 + tearResistanceMultiplier: 450 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &2060423111 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2060423109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 2060423110} + m_Target: {fileID: 153317914} + m_ParticleGroup: {fileID: 5567824606580605130, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &2060423112 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2060423109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 2060423110} + m_Target: {fileID: 1189404435} + m_ParticleGroup: {fileID: 1812756508894959938, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &2060423113 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2060423109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 2060423110} + m_Target: {fileID: 153317914} + m_ParticleGroup: {fileID: -2436371210810594525, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &2060423114 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2060423109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 2060423110} + m_Target: {fileID: 1189404435} + m_ParticleGroup: {fileID: 1986289758551400005, guid: 61d053dd5abd943919947f833abd0569, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &2060423115 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2060423109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 3} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &2060423116 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2060423109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!23 &2060423117 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2060423109} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2060423118 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2060423109} + m_Mesh: {fileID: 1701612439} +--- !u!4 &2060423119 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2060423109} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: 0.080383524, w: 0.996764} + m_LocalPosition: {x: -1.094, y: 2.803, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 9.221001} +--- !u!114 &2060423120 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2060423109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4514513daf5b14cb689daa23e9d8575e, type: 3} + m_Name: + m_EditorClassIdentifier: + prefab: {fileID: 1583403103468830, guid: 46b3b311bc85645d88ddbc56ad5465f2, type: 3} + instanceScale: {x: 1, y: 1, z: 1} + plugTears: 1 + plugStart: 0 + plugEnd: 0 +--- !u!1 &2064238796 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2064238800} + - component: {fileID: 2064238799} + - component: {fileID: 2064238798} + - component: {fileID: 2064238797} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2064238797 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2064238796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &2064238798 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2064238796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &2064238799 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2064238796} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_UseReflectionProbes: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &2064238800 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2064238796} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.049989406, y: 0.00248661, z: 0.00994644} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 593691593} + m_Father: {fileID: 1189404435} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 5.076124, y: 0.007500887} + m_SizeDelta: {x: 200, y: 150} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2102841794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2102841797} + - component: {fileID: 2102841796} + - component: {fileID: 2102841795} + m_Layer: 0 + m_Name: Obi Solver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2102841795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d9704d540ac448439a425526f6b2986, type: 3} + m_Name: + m_EditorClassIdentifier: + solvers: + - {fileID: 2102841796} + substeps: 2 +--- !u!114 &2102841796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d174fab52f0c4b8399f25d5c3ea524c, type: 3} + m_Name: + m_EditorClassIdentifier: + simulateWhenInvisible: 1 + m_Backend: 1 + parameters: + mode: 0 + interpolation: 0 + gravity: {x: 0, y: -9.81, z: 0} + damping: 0.3 + maxAnisotropy: 3 + sleepThreshold: 0.001 + collisionMargin: 0.02 + maxDepenetration: 5 + continuousCollisionDetection: 1 + shockPropagation: 0 + surfaceCollisionIterations: 8 + surfaceCollisionTolerance: 0.005 + gravity: {x: 0, y: -9.81, z: 0} + gravitySpace: 1 + worldLinearInertiaScale: 0 + worldAngularInertiaScale: 0 + distanceConstraintParameters: + evaluationOrder: 0 + iterations: 8 + SORFactor: 1 + enabled: 1 + bendingConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 1 + particleCollisionConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 1 + particleFrictionConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 1 + collisionConstraintParameters: + evaluationOrder: 1 + iterations: 4 + SORFactor: 1 + enabled: 1 + frictionConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 1 + skinConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + volumeConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + shapeMatchingConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + tetherConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + pinConstraintParameters: + evaluationOrder: 1 + iterations: 10 + SORFactor: 1 + enabled: 0 + stitchConstraintParameters: + evaluationOrder: 1 + iterations: 5 + SORFactor: 1 + enabled: 0 + densityConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + stretchShearConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 1 + bendTwistConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 1 + chainConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 +--- !u!4 &2102841797 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1346965650} + - {fileID: 2025663242} + - {fileID: 2060423119} + - {fileID: 1634024689} + - {fileID: 1544324425} + - {fileID: 574933238} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1002464896} + - {fileID: 421764872} + - {fileID: 1175446146} + - {fileID: 2102841797} + - {fileID: 1189404435} + - {fileID: 153317914} + - {fileID: 2021410674} + - {fileID: 526830948} + - {fileID: 1395255071} diff --git a/Assets/Obi/Samples/RopeAndRod/ElectricalWires.unity.meta b/Assets/Obi/Samples/RopeAndRod/ElectricalWires.unity.meta new file mode 100644 index 000000000..c8b9df489 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/ElectricalWires.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1ca589942e43e4cd6ac9a4f096ded02a +labels: +- ObiRope +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/ElectricalWiresSettings.lighting b/Assets/Obi/Samples/RopeAndRod/ElectricalWiresSettings.lighting new file mode 100644 index 000000000..a1cab7d2a --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/ElectricalWiresSettings.lighting @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: ElectricalWiresSettings + serializedVersion: 10 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_LightmapPackingMode: 1 + m_LightmapPackingMethod: 0 + m_XAtlasPackingAttempts: 16384 + m_XAtlasBruteForce: 0 + m_XAtlasBlockAlign: 0 + m_XAtlasRepackUnderutilizedLightmaps: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/ElectricalWiresSettings.lighting.meta b/Assets/Obi/Samples/RopeAndRod/ElectricalWiresSettings.lighting.meta new file mode 100644 index 000000000..800174f92 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/ElectricalWiresSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61831b9bdab53284a9732dba5f9b17ab +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/Firehose.unity b/Assets/Obi/Samples/RopeAndRod/Firehose.unity new file mode 100644 index 000000000..46f842a22 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/Firehose.unity @@ -0,0 +1,6635 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: 3c311eee085830c468be9bb1e32ace02, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &421764872 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a0a5f9e13fa7c47f78547e54896609da, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459882} + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459883} + m_SourcePrefab: {fileID: 100100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!1 &506459881 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + m_PrefabInstance: {fileID: 421764872} + m_PrefabAsset: {fileID: 0} +--- !u!64 &506459882 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 4300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!114 &506459883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 11400000, guid: 56297c6e785b44eb28e469b62cedc016, type: 2} + filter: -65535 + m_SourceCollider: {fileID: 506459882} + m_DistanceField: {fileID: 0} +--- !u!1 &526830944 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 526830948} + - component: {fileID: 526830947} + - component: {fileID: 526830946} + - component: {fileID: 526830945} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &526830945 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 526830944} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &526830946 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 526830944} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &526830947 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 526830944} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_UseReflectionProbes: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &526830948 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 526830944} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1145597568} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!43 &650523563 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &931329520 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 931329522} + - component: {fileID: 931329521} + m_Layer: 0 + m_Name: BurstCollisionWorld + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &931329521 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 931329520} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1a161c4294214a4fbcb7e9e94800494, type: 3} + m_Name: + m_EditorClassIdentifier: + cellSpans: + m_AlignBytes: 16 +--- !u!4 &931329522 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 931329520} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1002464891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002464896} + - component: {fileID: 1002464895} + - component: {fileID: 1002464893} + - component: {fileID: 1002464892} + - component: {fileID: 1002464897} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1002464892 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!124 &1002464893 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!20 &1002464895 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 75 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1002464896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + serializedVersion: 2 + m_LocalRotation: {x: 0.15760262, y: 0, z: 0, w: 0.98750263} + m_LocalPosition: {x: 0, y: 3.95, z: -4.42} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1002464897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62e83a599724f45a4aa337d74764e572, type: 3} + m_Name: + m_EditorClassIdentifier: + skin: {fileID: 11400000, guid: b90d3c214c99743b0865fc0e0d1f1a15, type: 2} + threadColor: {r: 0, g: 1, b: 1, a: 1} + taskColor: {r: 0, g: 1, b: 0, a: 1} + parallelTaskColor: {r: 1, g: 0.8, b: 0.2, a: 1} + renderTaskColor: {r: 0.2, g: 0.7, b: 1, a: 1} + defaultTaskColor: {r: 1, g: 0.5, b: 0.2, a: 1} + showPercentages: 0 + profileThrottle: 30 +--- !u!1 &1145597567 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1145597568} + - component: {fileID: 1145597570} + - component: {fileID: 1145597569} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1145597568 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1145597567} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 526830948} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 103, y: 26} + m_SizeDelta: {x: 160, y: 23.1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1145597569 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1145597567} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 20 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Click and drag the hose to manipulate it. +--- !u!222 &1145597570 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1145597567} + m_CullTransparentMesh: 0 +--- !u!1 &1165207593 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1165207597} + - component: {fileID: 1165207596} + - component: {fileID: 1165207595} + - component: {fileID: 1165207594} + - component: {fileID: 1165207598} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!136 &1165207594 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165207593} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1165207595 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165207593} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1165207596 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165207593} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1165207597 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165207593} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.5, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1165207598 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165207593} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 1165207594} + m_DistanceField: {fileID: 0} +--- !u!1 &1175446144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1175446146} + - component: {fileID: 1175446145} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1175446145 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.03 + m_NormalBias: 0.01 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1175446146 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + serializedVersion: 2 + m_LocalRotation: {x: 0.41595167, y: -0.26247028, z: 0.26683384, w: 0.82879025} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 56.052002, y: -22.431002, z: 23.642} +--- !u!1 &1346965641 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1346965650} + - component: {fileID: 1346965645} + - component: {fileID: 1346965644} + - component: {fileID: 1346965642} + - component: {fileID: 1346965646} + - component: {fileID: 1346965643} + - component: {fileID: 1346965647} + - component: {fileID: 1346965649} + - component: {fileID: 1346965648} + m_Layer: 10 + m_Name: Obi Rope + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1346965642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000250000002600000027000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 1 + restLength_: 5.4620275 + elements: + - particle1: 0 + particle2: 1 + restLength: 0.11343384 + constraintForce: 0 + tearResistance: 1 + - particle1: 1 + particle2: 2 + restLength: 0.1400795 + constraintForce: 0 + tearResistance: 1 + - particle1: 2 + particle2: 3 + restLength: 0.13731146 + constraintForce: 0 + tearResistance: 1 + - particle1: 3 + particle2: 4 + restLength: 0.14056301 + constraintForce: 0 + tearResistance: 1 + - particle1: 4 + particle2: 5 + restLength: 0.14499426 + constraintForce: 0 + tearResistance: 1 + - particle1: 5 + particle2: 6 + restLength: 0.1369896 + constraintForce: 0 + tearResistance: 1 + - particle1: 6 + particle2: 7 + restLength: 0.14367747 + constraintForce: 0 + tearResistance: 1 + - particle1: 7 + particle2: 8 + restLength: 0.13849878 + constraintForce: 0 + tearResistance: 1 + - particle1: 8 + particle2: 9 + restLength: 0.14347577 + constraintForce: 0 + tearResistance: 1 + - particle1: 9 + particle2: 10 + restLength: 0.13862038 + constraintForce: 0 + tearResistance: 1 + - particle1: 10 + particle2: 11 + restLength: 0.14278126 + constraintForce: 0 + tearResistance: 1 + - particle1: 11 + particle2: 12 + restLength: 0.1394751 + constraintForce: 0 + tearResistance: 1 + - particle1: 12 + particle2: 13 + restLength: 0.14137006 + constraintForce: 0 + tearResistance: 1 + - particle1: 13 + particle2: 14 + restLength: 0.14105272 + constraintForce: 0 + tearResistance: 1 + - particle1: 14 + particle2: 15 + restLength: 0.14048934 + constraintForce: 0 + tearResistance: 1 + - particle1: 15 + particle2: 16 + restLength: 0.14181376 + constraintForce: 0 + tearResistance: 1 + - particle1: 16 + particle2: 17 + restLength: 0.14023328 + constraintForce: 0 + tearResistance: 1 + - particle1: 17 + particle2: 18 + restLength: 0.14107311 + constraintForce: 0 + tearResistance: 1 + - particle1: 18 + particle2: 19 + restLength: 0.14103353 + constraintForce: 0 + tearResistance: 1 + - particle1: 19 + particle2: 20 + restLength: 0.14082837 + constraintForce: 0 + tearResistance: 1 + - particle1: 20 + particle2: 21 + restLength: 0.14076781 + constraintForce: 0 + tearResistance: 1 + - particle1: 21 + particle2: 22 + restLength: 0.14133894 + constraintForce: 0 + tearResistance: 1 + - particle1: 22 + particle2: 23 + restLength: 0.14049971 + constraintForce: 0 + tearResistance: 1 + - particle1: 23 + particle2: 24 + restLength: 0.14129508 + constraintForce: 0 + tearResistance: 1 + - particle1: 24 + particle2: 25 + restLength: 0.14103425 + constraintForce: 0 + tearResistance: 1 + - particle1: 25 + particle2: 26 + restLength: 0.14002609 + constraintForce: 0 + tearResistance: 1 + - particle1: 26 + particle2: 27 + restLength: 0.14223284 + constraintForce: 0 + tearResistance: 1 + - particle1: 27 + particle2: 28 + restLength: 0.13930953 + constraintForce: 0 + tearResistance: 1 + - particle1: 28 + particle2: 29 + restLength: 0.14266565 + constraintForce: 0 + tearResistance: 1 + - particle1: 29 + particle2: 30 + restLength: 0.13980219 + constraintForce: 0 + tearResistance: 1 + - particle1: 30 + particle2: 31 + restLength: 0.14202453 + constraintForce: 0 + tearResistance: 1 + - particle1: 31 + particle2: 32 + restLength: 0.14010233 + constraintForce: 0 + tearResistance: 1 + - particle1: 32 + particle2: 33 + restLength: 0.14205298 + constraintForce: 0 + tearResistance: 1 + - particle1: 33 + particle2: 34 + restLength: 0.13910069 + constraintForce: 0 + tearResistance: 1 + - particle1: 34 + particle2: 35 + restLength: 0.14355478 + constraintForce: 0 + tearResistance: 1 + - particle1: 35 + particle2: 36 + restLength: 0.13863954 + constraintForce: 0 + tearResistance: 1 + - particle1: 36 + particle2: 37 + restLength: 0.14013106 + constraintForce: 0 + tearResistance: 1 + - particle1: 37 + particle2: 38 + restLength: 0.14137465 + constraintForce: 0 + tearResistance: 1 + - particle1: 38 + particle2: 39 + restLength: 0.13828081 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: b2fe09b5a1ae2424597b4776dc36fa5c, type: 2} + tearingEnabled: 1 + tearResistanceMultiplier: 450 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0.001 + _maxBending: 0.02 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &1346965643 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 8} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!23 &1346965644 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: f342c944c10cc4c9188a4f352c6a6eee, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1346965645 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Mesh: {fileID: 650523563} +--- !u!114 &1346965646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!114 &1346965647 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d71cdcf242c9b44fb874af7b7d8fd2b9, type: 3} + m_Name: + m_EditorClassIdentifier: + pumpSpeed: 5 + bulgeFrequency: 3 + baseThickness: 0.075 + bulgeThickness: 0.15 + bulgeColor: {r: 0, g: 0.50424004, b: 0.6698113, a: 1} + waterEmitter: {fileID: 1396980387} + flowSpeedMin: 1 + flowSpeedMax: 7 + minEmitRate: 50 + maxEmitRate: 1000 + smoother: {fileID: 0} +--- !u!114 &1346965648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965642} + m_Target: {fileID: 1165207597} + m_ParticleGroup: {fileID: 5505919189061892379, guid: b2fe09b5a1ae2424597b4776dc36fa5c, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1346965649 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965642} + m_Target: {fileID: 1165207597} + m_ParticleGroup: {fileID: -2867197770825267649, guid: b2fe09b5a1ae2424597b4776dc36fa5c, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!4 &1346965650 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2.46, y: 0.27, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1396980384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1396980388} + - component: {fileID: 1396980387} + - component: {fileID: 1396980386} + m_Layer: 0 + m_Name: Particle System + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!199 &1396980386 +ParticleSystemRenderer: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396980384} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10308, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_RenderMode: 0 + m_MeshDistribution: 0 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 1 + m_VelocityScale: 0.025 + m_LengthScale: 0.2 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_ShadowBias: 0 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Flip: {x: 0, y: 0, z: 0} + m_EnableGPUInstancing: 1 + m_ApplyActiveColorSpace: 1 + m_AllowRoll: 1 + m_FreeformStretching: 0 + m_RotateWithStretchDirection: 1 + m_UseCustomVertexStreams: 0 + m_VertexStreams: 00010304 + m_UseCustomTrailVertexStreams: 0 + m_TrailVertexStreams: 00010304 + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} + m_MeshWeighting: 1 + m_MeshWeighting1: 1 + m_MeshWeighting2: 1 + m_MeshWeighting3: 1 +--- !u!198 &1396980387 +ParticleSystem: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396980384} + serializedVersion: 8 + lengthInSec: 5 + simulationSpeed: 1 + stopAction: 0 + cullingMode: 0 + ringBufferMode: 0 + ringBufferLoopRange: {x: 0, y: 1} + emitterVelocityMode: 1 + looping: 1 + prewarm: 0 + playOnAwake: 1 + useUnscaledTime: 0 + autoRandomSeed: 1 + startDelay: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + moveWithTransform: 1 + moveWithCustomTransform: {fileID: 0} + scalingMode: 1 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 3 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 5 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startColor: + serializedVersion: 2 + minMaxState: 2 + minColor: {r: 0.114542544, g: 0.50326735, b: 0.735849, a: 1} + maxColor: {r: 0.2460395, g: 0.76591134, b: 0.9150943, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + startSize: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.15 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotation: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + randomizeRotationDirection: 0 + gravitySource: 0 + maxNumParticles: 80000 + customEmitterVelocity: {x: 0, y: 0, z: 0} + size3D: 0 + rotation3D: 0 + gravityModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ShapeModule: + serializedVersion: 6 + enabled: 1 + type: 4 + angle: 10 + length: 5 + boxThickness: {x: 0, y: 0, z: 0} + radiusThickness: 1 + donutRadius: 0.2 + m_Position: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + placementMode: 0 + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_MeshSpawn: + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_Sprite: {fileID: 0} + m_SpriteRenderer: {fileID: 0} + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + m_Texture: {fileID: 0} + m_TextureClipChannel: 3 + m_TextureClipThreshold: 0 + m_TextureUVChannel: 0 + m_TextureColorAffectsParticles: 1 + m_TextureAlphaAffectsParticles: 1 + m_TextureBilinearFiltering: 0 + randomDirectionAmount: 0 + sphericalDirectionAmount: 0 + randomPositionAmount: 0 + radius: + value: 0.05 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + arc: + value: 360 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + EmissionModule: + enabled: 1 + serializedVersion: 4 + rateOverTime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1000 + minScalar: 10 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rateOverDistance: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_BurstCount: 0 + m_Bursts: [] + SizeModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + RotationModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 32768 + atime2: 65535 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 3 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + UVModule: + serializedVersion: 2 + enabled: 0 + mode: 0 + timeMode: 0 + fps: 30 + frameOverTime: + serializedVersion: 2 + minMaxState: 1 + scalar: 0.9999 + minScalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startFrame: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedRange: {x: 0, y: 1} + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + rowMode: 1 + sprites: + - sprite: {fileID: 0} + flipU: 0 + flipV: 0 + VelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + radial: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + LifetimeByEmitterSpeedModule: + enabled: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: -0.8 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.2 + inSlope: -0.8 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Range: {x: 0, y: 1} + ForceModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + serializedVersion: 2 + enabled: 0 + multiplierCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + influenceFilter: 0 + influenceMask: + serializedVersion: 2 + m_Bits: 4294967295 + influenceList: [] + ClampVelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + magnitude: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxis: 0 + inWorldSpace: 0 + multiplyDragByParticleSize: 1 + multiplyDragByParticleVelocity: 1 + dampen: 0 + drag: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + NoiseModule: + enabled: 0 + strength: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 2 + scrollSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remap: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapY: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapZ: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapEnabled: 0 + positionAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + sizeAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + SizeBySpeedModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + range: {x: 0, y: 1} + CollisionModule: + enabled: 1 + serializedVersion: 4 + type: 1 + collisionMode: 0 + colliderForce: 0 + multiplyColliderForceByParticleSize: 0 + multiplyColliderForceByParticleSpeed: 0 + multiplyColliderForceByCollisionAngle: 1 + m_Planes: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_Dampen: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Bounce: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_EnergyLossOnCollision: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.05 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 0 + TriggerModule: + enabled: 0 + serializedVersion: 2 + inside: 1 + outside: 0 + enter: 0 + exit: 0 + colliderQueryMode: 0 + radiusScale: 1 + primitives: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - serializedVersion: 3 + emitter: {fileID: 0} + type: 0 + properties: 0 + emitProbability: 1 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + intensityCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxLights: 20 + TrailModule: + enabled: 0 + mode: 0 + ratio: 1 + lifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minVertexDistance: 0.2 + textureMode: 0 + textureScale: {x: 1, y: 1} + ribbonCount: 1 + shadowBias: 0.5 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + generateLightingData: 0 + splitSubEmitterRibbons: 0 + attachRibbonsToTransform: 0 + colorOverLifetime: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + widthOverTrail: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorOverTrail: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + CustomDataModule: + enabled: 0 + mode0: 0 + vectorComponentCount0: 4 + color0: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel0: Color + vector0_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_0: X + vector0_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_1: Y + vector0_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_2: Z + vector0_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_3: W + mode1: 0 + vectorComponentCount1: 4 + color1: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel1: Color + vector1_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_0: X + vector1_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_1: Y + vector1_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_2: Z + vector1_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_3: W +--- !u!4 &1396980388 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396980384} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 3.51, y: 0.291, z: -0.02} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!1 &2021410671 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2021410674} + - component: {fileID: 2021410673} + - component: {fileID: 2021410672} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2021410672 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021410671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &2021410673 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021410671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &2021410674 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021410671} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2102841794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2102841797} + - component: {fileID: 2102841796} + - component: {fileID: 2102841795} + - component: {fileID: 2102841800} + - component: {fileID: 2102841799} + - component: {fileID: 2102841798} + m_Layer: 0 + m_Name: Obi Solver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2102841795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d9704d540ac448439a425526f6b2986, type: 3} + m_Name: + m_EditorClassIdentifier: + solvers: + - {fileID: 2102841796} + substeps: 8 +--- !u!114 &2102841796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d174fab52f0c4b8399f25d5c3ea524c, type: 3} + m_Name: + m_EditorClassIdentifier: + simulateWhenInvisible: 1 + m_Backend: 1 + parameters: + mode: 0 + interpolation: 0 + gravity: {x: 0, y: -9.81, z: 0} + damping: 0.3 + maxAnisotropy: 3 + sleepThreshold: 0.0001 + collisionMargin: 0.02 + maxDepenetration: 5 + continuousCollisionDetection: 1 + shockPropagation: 0 + surfaceCollisionIterations: 8 + surfaceCollisionTolerance: 0.005 + gravity: {x: 0, y: -9.81, z: 0} + gravitySpace: 1 + worldLinearInertiaScale: 0 + worldAngularInertiaScale: 0 + distanceConstraintParameters: + evaluationOrder: 0 + iterations: 2 + SORFactor: 1 + enabled: 1 + bendingConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + particleCollisionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + particleFrictionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + collisionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + frictionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + skinConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + volumeConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + shapeMatchingConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + tetherConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + pinConstraintParameters: + evaluationOrder: 1 + iterations: 10 + SORFactor: 1 + enabled: 0 + stitchConstraintParameters: + evaluationOrder: 1 + iterations: 5 + SORFactor: 1 + enabled: 0 + densityConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + stretchShearConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + bendTwistConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + chainConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 +--- !u!4 &2102841797 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1346965650} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2102841798 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30e140e2334fb4e2f9430c6ed936e4ca, type: 3} + m_Name: + m_EditorClassIdentifier: + springStiffness: 1000 + springDamping: 50 + drawSpring: 1 +--- !u!114 &2102841799 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: db4318b9b044a420ba02ad5138d542e0, type: 3} + m_Name: + m_EditorClassIdentifier: + solver: {fileID: 2102841796} + radiusScale: 2 + OnParticlePicked: + m_PersistentCalls: + m_Calls: [] + OnParticleHeld: + m_PersistentCalls: + m_Calls: [] + OnParticleDragged: + m_PersistentCalls: + m_Calls: [] + OnParticleReleased: + m_PersistentCalls: + m_Calls: [] +--- !u!120 &2102841800 +LineRenderer: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10306, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 1} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 0.05 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 0, b: 0, a: 1} + key1: {r: 1, g: 0.09286968, b: 0, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_UseWorldSpace: 1 + m_Loop: 0 + m_ApplyActiveColorSpace: 0 +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1002464896} + - {fileID: 421764872} + - {fileID: 1175446146} + - {fileID: 2102841797} + - {fileID: 2021410674} + - {fileID: 526830948} + - {fileID: 1165207597} + - {fileID: 1396980388} + - {fileID: 931329522} diff --git a/Assets/Obi/Samples/RopeAndRod/Firehose.unity.meta b/Assets/Obi/Samples/RopeAndRod/Firehose.unity.meta new file mode 100644 index 000000000..c60811ff7 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/Firehose.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 433676b596d32485f82785463d0e0837 +labels: +- ObiRope +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/FirehoseSettings.lighting b/Assets/Obi/Samples/RopeAndRod/FirehoseSettings.lighting new file mode 100644 index 000000000..2f5265bd8 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/FirehoseSettings.lighting @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: FirehoseSettings + serializedVersion: 10 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_LightmapPackingMode: 1 + m_LightmapPackingMethod: 0 + m_XAtlasPackingAttempts: 16384 + m_XAtlasBruteForce: 0 + m_XAtlasBlockAlign: 0 + m_XAtlasRepackUnderutilizedLightmaps: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/FirehoseSettings.lighting.meta b/Assets/Obi/Samples/RopeAndRod/FirehoseSettings.lighting.meta new file mode 100644 index 000000000..5755f612a --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/FirehoseSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3c311eee085830c468be9bb1e32ace02 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/FreightLift.unity b/Assets/Obi/Samples/RopeAndRod/FreightLift.unity new file mode 100644 index 000000000..b4607999e --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/FreightLift.unity @@ -0,0 +1,3575 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: 0176ffbdb9209c94cb24588147a54225, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &99547752 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 99547753} + - component: {fileID: 99547757} + - component: {fileID: 99547756} + - component: {fileID: 99547755} + - component: {fileID: 99547754} + - component: {fileID: 99547759} + - component: {fileID: 99547758} + m_Layer: 0 + m_Name: Load (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &99547753 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99547752} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 2.6399999, z: 0} + m_LocalScale: {x: 0.39999998, y: 0.39999998, z: 0.39999998} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &99547754 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99547752} + serializedVersion: 5 + m_Mass: 0.5 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!23 &99547755 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99547752} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e78e1b735e05b4dee88b279cb6997001, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &99547756 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99547752} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &99547757 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99547752} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &99547758 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99547752} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &99547759 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99547752} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 99547756} + m_DistanceField: {fileID: 0} +--- !u!1 &254982891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 254982895} + - component: {fileID: 254982894} + - component: {fileID: 254982893} + - component: {fileID: 254982892} + - component: {fileID: 254982896} + - component: {fileID: 254982898} + - component: {fileID: 254982897} + m_Layer: 0 + m_Name: Platform + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &254982892 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 254982891} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &254982893 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 254982891} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &254982894 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 254982891} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &254982895 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 254982891} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.8399999, z: 0} + m_LocalScale: {x: 2.1, y: 0.1, z: 2.1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &254982896 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 254982891} + serializedVersion: 5 + m_Mass: 4 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &254982897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 254982891} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &254982898 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 254982891} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 254982893} + m_DistanceField: {fileID: 0} +--- !u!1001 &421764872 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a0a5f9e13fa7c47f78547e54896609da, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459882} + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459883} + m_SourcePrefab: {fileID: 100100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!1 &506459881 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + m_PrefabInstance: {fileID: 421764872} + m_PrefabAsset: {fileID: 0} +--- !u!64 &506459882 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 4300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!114 &506459883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 11400000, guid: d368f2c47473d4bfb8dd9f08073cb403, type: 2} + filter: -65535 + m_SourceCollider: {fileID: 506459882} + m_DistanceField: {fileID: 11400000, guid: 5eb5ff1af3a3f4a14977448198c232ae, type: 2} +--- !u!1 &522272186 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 522272187} + - component: {fileID: 522272191} + - component: {fileID: 522272190} + - component: {fileID: 522272189} + - component: {fileID: 522272188} + - component: {fileID: 522272193} + - component: {fileID: 522272192} + m_Layer: 0 + m_Name: Load (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &522272187 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 522272186} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.25, y: 2.191, z: 0} + m_LocalScale: {x: 0.39999998, y: 0.39999998, z: 0.39999998} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &522272188 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 522272186} + serializedVersion: 5 + m_Mass: 0.5 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!23 &522272189 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 522272186} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e78e1b735e05b4dee88b279cb6997001, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &522272190 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 522272186} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &522272191 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 522272186} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &522272192 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 522272186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &522272193 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 522272186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 522272190} + m_DistanceField: {fileID: 0} +--- !u!1 &597266340 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 597266341} + - component: {fileID: 597266352} + - component: {fileID: 597266351} + - component: {fileID: 597266344} + - component: {fileID: 597266343} + - component: {fileID: 597266342} + - component: {fileID: 597266345} + - component: {fileID: 597266346} + - component: {fileID: 597266347} + - component: {fileID: 597266348} + m_Layer: 10 + m_Name: Obi Rope (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &597266341 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597266340} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: 0.7071068, w: 0.7071068} + m_LocalPosition: {x: -1, y: -1.1199999, z: -1} + m_LocalScale: {x: 1.0000005, y: 1.0000005, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1007350293} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} +--- !u!114 &597266342 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597266340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 3} + normalizeV: 0 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &597266343 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597266340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0.02 + smoothing: 0 + twist: 0 +--- !u!114 &597266344 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597266340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000490000004a0000004b0000004c0000004d0000004e0000004f000000500000005100000052000000530000005400000055000000560000005700000058000000590000005a0000005b0000005c0000005d0000005e0000005f000000600000006100000062000000630000006400000065000000660000006700000068000000690000006a0000006b0000006c0000006d0000006e0000006f000000700000007100000072000000730000007400000075000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 1 + restLength_: 2 + elements: + - particle1: 0 + particle2: 1 + restLength: 0.11670005 + constraintForce: 0 + tearResistance: 1 + - particle1: 1 + particle2: 2 + restLength: 0.11669767 + constraintForce: 0 + tearResistance: 1 + - particle1: 2 + particle2: 3 + restLength: 0.11849612 + constraintForce: 0 + tearResistance: 1 + - particle1: 3 + particle2: 4 + restLength: 0.11731398 + constraintForce: 0 + tearResistance: 1 + - particle1: 4 + particle2: 5 + restLength: 0.117768645 + constraintForce: 0 + tearResistance: 1 + - particle1: 5 + particle2: 6 + restLength: 0.11787382 + constraintForce: 0 + tearResistance: 1 + - particle1: 6 + particle2: 7 + restLength: 0.1178714 + constraintForce: 0 + tearResistance: 1 + - particle1: 7 + particle2: 8 + restLength: 0.11784513 + constraintForce: 0 + tearResistance: 1 + - particle1: 8 + particle2: 9 + restLength: 0.11781409 + constraintForce: 0 + tearResistance: 1 + - particle1: 9 + particle2: 10 + restLength: 0.117773324 + constraintForce: 0 + tearResistance: 1 + - particle1: 10 + particle2: 11 + restLength: 0.11769721 + constraintForce: 0 + tearResistance: 1 + - particle1: 11 + particle2: 12 + restLength: 0.117714405 + constraintForce: 0 + tearResistance: 1 + - particle1: 12 + particle2: 13 + restLength: 0.11811137 + constraintForce: 0 + tearResistance: 1 + - particle1: 13 + particle2: 14 + restLength: 0.11810517 + constraintForce: 0 + tearResistance: 1 + - particle1: 14 + particle2: 15 + restLength: 0.11729765 + constraintForce: 0 + tearResistance: 1 + - particle1: 15 + particle2: 16 + restLength: 0.11854333 + constraintForce: 0 + tearResistance: 1 + - particle1: 16 + particle2: 17 + restLength: 0.11637664 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: df057526865004da9ac53f3c8bc43d9f, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0.05 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &597266345 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597266340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 597266344} + m_Target: {fileID: 597266341} + m_ParticleGroup: {fileID: 1119723573710947368, guid: df057526865004da9ac53f3c8bc43d9f, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &597266346 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597266340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 597266344} + m_Target: {fileID: 254982895} + m_ParticleGroup: {fileID: 1023878380947534591, guid: df057526865004da9ac53f3c8bc43d9f, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &597266347 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597266340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 83c7e82b3aac04e408bc8bfe9027c983, type: 3} + m_Name: + m_EditorClassIdentifier: + minLength: 0.1 + speed: 1 +--- !u!114 &597266348 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597266340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8285ac97113f74d449053378d0e3a56b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_CursorMu: 0.95 + m_SourceMu: 0.95 + direction: 0 +--- !u!23 &597266351 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597266340} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &597266352 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597266340} + m_Mesh: {fileID: 630782999} +--- !u!43 &630782999 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!43 &656035999 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!43 &831718891 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &849349590 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 849349591} + - component: {fileID: 849349593} + - component: {fileID: 849349592} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &849349591 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 849349590} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 897006173} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 100.29999, y: 24.400024} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &849349592 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 849349590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 5 + m_MaxSize: 200 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Use W,A,S,D to control the lift. +--- !u!222 &849349593 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 849349590} + m_CullTransparentMesh: 0 +--- !u!1 &865561429 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 865561430} + - component: {fileID: 865561433} + - component: {fileID: 865561432} + - component: {fileID: 865561431} + - component: {fileID: 865561434} + - component: {fileID: 865561436} + - component: {fileID: 865561435} + m_Layer: 0 + m_Name: Load + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &865561430 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 865561429} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.25, y: 2.191, z: 0} + m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &865561431 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 865561429} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e78e1b735e05b4dee88b279cb6997001, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &865561432 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 865561429} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &865561433 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 865561429} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &865561434 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 865561429} + serializedVersion: 5 + m_Mass: 0.5 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &865561435 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 865561429} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &865561436 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 865561429} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 865561432} + m_DistanceField: {fileID: 0} +--- !u!1 &897006169 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 897006173} + - component: {fileID: 897006172} + - component: {fileID: 897006171} + - component: {fileID: 897006170} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &897006170 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 897006169} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &897006171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 897006169} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &897006172 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 897006169} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_UseReflectionProbes: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &897006173 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 897006169} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 849349591} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &977238586 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 977238587} + - component: {fileID: 977238598} + - component: {fileID: 977238597} + - component: {fileID: 977238590} + - component: {fileID: 977238589} + - component: {fileID: 977238588} + - component: {fileID: 977238591} + - component: {fileID: 977238592} + - component: {fileID: 977238593} + - component: {fileID: 977238595} + - component: {fileID: 977238594} + m_Layer: 10 + m_Name: Obi Rope (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &977238587 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 977238586} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: 0.7071068, w: 0.7071068} + m_LocalPosition: {x: -1, y: -1.1199999, z: 1} + m_LocalScale: {x: 1.0000005, y: 1.0000005, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1007350293} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} +--- !u!114 &977238588 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 977238586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 3} + normalizeV: 0 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &977238589 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 977238586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0.02 + smoothing: 0 + twist: 0 +--- !u!114 &977238590 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 977238586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 760000007700000078000000790000007a0000007b0000007c0000007d0000007e0000007f000000800000008100000082000000830000008400000085000000860000008700000088000000890000008a0000008b0000008c0000008d0000008e0000008f000000900000009100000092000000930000009400000095000000960000009700000098000000990000009a0000009b0000009c0000009d0000009e0000009f000000a0000000a1000000a2000000a3000000a4000000a5000000a6000000a7000000a8000000a9000000aa000000ab000000ac000000ad000000ae000000af000000b0000000b1000000b2000000b3000000b4000000b5000000b6000000b7000000b8000000b9000000ba000000bb000000bc000000bd000000be000000bf000000c0000000c1000000c2000000c3000000c4000000c5000000c6000000c7000000c8000000c9000000ca000000cb000000cc000000cd000000ce000000cf000000d0000000d1000000d2000000d3000000d4000000d5000000d6000000d7000000d8000000d9000000da000000db000000dc000000dd000000de000000df000000e0000000e1000000e2000000e3000000e4000000e5000000e6000000e7000000e8000000e9000000ea000000eb000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 1 + restLength_: 2 + elements: + - particle1: 118 + particle2: 119 + restLength: 0.11670005 + constraintForce: 0 + tearResistance: 1 + - particle1: 119 + particle2: 120 + restLength: 0.11669767 + constraintForce: 0 + tearResistance: 1 + - particle1: 120 + particle2: 121 + restLength: 0.11849612 + constraintForce: 0 + tearResistance: 1 + - particle1: 121 + particle2: 122 + restLength: 0.11731398 + constraintForce: 0 + tearResistance: 1 + - particle1: 122 + particle2: 123 + restLength: 0.117768645 + constraintForce: 0 + tearResistance: 1 + - particle1: 123 + particle2: 124 + restLength: 0.11787382 + constraintForce: 0 + tearResistance: 1 + - particle1: 124 + particle2: 125 + restLength: 0.1178714 + constraintForce: 0 + tearResistance: 1 + - particle1: 125 + particle2: 126 + restLength: 0.11784513 + constraintForce: 0 + tearResistance: 1 + - particle1: 126 + particle2: 127 + restLength: 0.11781409 + constraintForce: 0 + tearResistance: 1 + - particle1: 127 + particle2: 128 + restLength: 0.117773324 + constraintForce: 0 + tearResistance: 1 + - particle1: 128 + particle2: 129 + restLength: 0.11769721 + constraintForce: 0 + tearResistance: 1 + - particle1: 129 + particle2: 130 + restLength: 0.117714405 + constraintForce: 0 + tearResistance: 1 + - particle1: 130 + particle2: 131 + restLength: 0.11811137 + constraintForce: 0 + tearResistance: 1 + - particle1: 131 + particle2: 132 + restLength: 0.11810517 + constraintForce: 0 + tearResistance: 1 + - particle1: 132 + particle2: 133 + restLength: 0.11729765 + constraintForce: 0 + tearResistance: 1 + - particle1: 133 + particle2: 134 + restLength: 0.11854333 + constraintForce: 0 + tearResistance: 1 + - particle1: 134 + particle2: 135 + restLength: 0.11637664 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: df057526865004da9ac53f3c8bc43d9f, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0.05 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &977238591 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 977238586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 977238590} + m_Target: {fileID: 977238587} + m_ParticleGroup: {fileID: 1119723573710947368, guid: df057526865004da9ac53f3c8bc43d9f, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &977238592 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 977238586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 977238590} + m_Target: {fileID: 254982895} + m_ParticleGroup: {fileID: 1023878380947534591, guid: df057526865004da9ac53f3c8bc43d9f, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &977238593 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 977238586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 83c7e82b3aac04e408bc8bfe9027c983, type: 3} + m_Name: + m_EditorClassIdentifier: + minLength: 0.1 + speed: 1 +--- !u!114 &977238594 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 977238586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8285ac97113f74d449053378d0e3a56b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_CursorMu: 0.95 + m_SourceMu: 0.95 + direction: 0 +--- !u!114 &977238595 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 977238586} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c8b45ebbf86be4df6b0e6cd933812af2, type: 3} + m_Name: + m_EditorClassIdentifier: + render: 1 + shader: {fileID: 4800000, guid: 801733041f66b49e1b3c2101471db877, type: 3} + particleColor: {r: 1, g: 1, b: 1, a: 1} + radiusScale: 1 +--- !u!23 &977238597 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 977238586} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &977238598 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 977238586} + m_Mesh: {fileID: 831718891} +--- !u!1 &1002464891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002464896} + - component: {fileID: 1002464895} + - component: {fileID: 1002464893} + - component: {fileID: 1002464892} + - component: {fileID: 1002464897} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1002464892 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!124 &1002464893 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!20 &1002464895 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 75 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1002464896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + serializedVersion: 2 + m_LocalRotation: {x: 0.15760262, y: 0, z: 0, w: 0.98750263} + m_LocalPosition: {x: 0, y: 3.95, z: -4.42} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1002464897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62e83a599724f45a4aa337d74764e572, type: 3} + m_Name: + m_EditorClassIdentifier: + skin: {fileID: 11400000, guid: b90d3c214c99743b0865fc0e0d1f1a15, type: 2} + threadColor: {r: 0, g: 1, b: 1, a: 1} + taskColor: {r: 0, g: 1, b: 0, a: 1} + parallelTaskColor: {r: 1, g: 0.8, b: 0.2, a: 1} + renderTaskColor: {r: 0.2, g: 0.7, b: 1, a: 1} + defaultTaskColor: {r: 1, g: 0.5, b: 0.2, a: 1} + showPercentages: 0 + profileThrottle: 30 +--- !u!1 &1007350292 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1007350293} + m_Layer: 0 + m_Name: Lift + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1007350293 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1007350292} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2091522317} + - {fileID: 597266341} + - {fileID: 1398407820} + - {fileID: 977238587} + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1175446144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1175446146} + - component: {fileID: 1175446145} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1175446145 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.03 + m_NormalBias: 0.01 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1175446146 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + serializedVersion: 2 + m_LocalRotation: {x: 0.41595167, y: -0.26247028, z: 0.26683384, w: 0.82879025} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 56.052002, y: -22.431002, z: 23.642} +--- !u!43 &1264071601 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &1398407819 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1398407820} + - component: {fileID: 1398407831} + - component: {fileID: 1398407830} + - component: {fileID: 1398407823} + - component: {fileID: 1398407822} + - component: {fileID: 1398407821} + - component: {fileID: 1398407824} + - component: {fileID: 1398407825} + - component: {fileID: 1398407826} + - component: {fileID: 1398407828} + - component: {fileID: 1398407827} + m_Layer: 10 + m_Name: Obi Rope (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1398407820 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1398407819} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: 0.7071068, w: 0.7071068} + m_LocalPosition: {x: 1, y: -1.1199999, z: 1} + m_LocalScale: {x: 1.0000005, y: 1.0000005, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1007350293} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} +--- !u!114 &1398407821 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1398407819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 3} + normalizeV: 0 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &1398407822 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1398407819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0.02 + smoothing: 0 + twist: 0 +--- !u!114 &1398407823 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1398407819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: ec000000ed000000ee000000ef000000f0000000f1000000f2000000f3000000f4000000f5000000f6000000f7000000f8000000f9000000fa000000fb000000fc000000fd000000fe000000ff000000000100000101000002010000030100000401000005010000060100000701000008010000090100000a0100000b0100000c0100000d0100000e0100000f010000100100001101000012010000130100001401000015010000160100001701000018010000190100001a0100001b0100001c0100001d0100001e0100001f010000200100002101000022010000230100002401000025010000260100002701000028010000290100002a0100002b0100002c0100002d0100002e0100002f010000300100003101000032010000330100003401000035010000360100003701000038010000390100003a0100003b0100003c0100003d0100003e0100003f010000400100004101000042010000430100004401000045010000460100004701000048010000490100004a0100004b0100004c0100004d0100004e0100004f010000500100005101000052010000530100005401000055010000560100005701000058010000590100005a0100005b0100005c0100005d0100005e0100005f0100006001000061010000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 1 + restLength_: 2 + elements: + - particle1: 236 + particle2: 237 + restLength: 0.11670005 + constraintForce: 0 + tearResistance: 1 + - particle1: 237 + particle2: 238 + restLength: 0.11669767 + constraintForce: 0 + tearResistance: 1 + - particle1: 238 + particle2: 239 + restLength: 0.11849612 + constraintForce: 0 + tearResistance: 1 + - particle1: 239 + particle2: 240 + restLength: 0.11731398 + constraintForce: 0 + tearResistance: 1 + - particle1: 240 + particle2: 241 + restLength: 0.117768645 + constraintForce: 0 + tearResistance: 1 + - particle1: 241 + particle2: 242 + restLength: 0.11787382 + constraintForce: 0 + tearResistance: 1 + - particle1: 242 + particle2: 243 + restLength: 0.1178714 + constraintForce: 0 + tearResistance: 1 + - particle1: 243 + particle2: 244 + restLength: 0.11784513 + constraintForce: 0 + tearResistance: 1 + - particle1: 244 + particle2: 245 + restLength: 0.11781409 + constraintForce: 0 + tearResistance: 1 + - particle1: 245 + particle2: 246 + restLength: 0.117773324 + constraintForce: 0 + tearResistance: 1 + - particle1: 246 + particle2: 247 + restLength: 0.11769721 + constraintForce: 0 + tearResistance: 1 + - particle1: 247 + particle2: 248 + restLength: 0.117714405 + constraintForce: 0 + tearResistance: 1 + - particle1: 248 + particle2: 249 + restLength: 0.11811137 + constraintForce: 0 + tearResistance: 1 + - particle1: 249 + particle2: 250 + restLength: 0.11810517 + constraintForce: 0 + tearResistance: 1 + - particle1: 250 + particle2: 251 + restLength: 0.11729765 + constraintForce: 0 + tearResistance: 1 + - particle1: 251 + particle2: 252 + restLength: 0.11854333 + constraintForce: 0 + tearResistance: 1 + - particle1: 252 + particle2: 253 + restLength: 0.11637664 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: df057526865004da9ac53f3c8bc43d9f, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0.05 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &1398407824 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1398407819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1398407823} + m_Target: {fileID: 1398407820} + m_ParticleGroup: {fileID: 1119723573710947368, guid: df057526865004da9ac53f3c8bc43d9f, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1398407825 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1398407819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1398407823} + m_Target: {fileID: 254982895} + m_ParticleGroup: {fileID: 1023878380947534591, guid: df057526865004da9ac53f3c8bc43d9f, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1398407826 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1398407819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 83c7e82b3aac04e408bc8bfe9027c983, type: 3} + m_Name: + m_EditorClassIdentifier: + minLength: 0.1 + speed: 1 +--- !u!114 &1398407827 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1398407819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8285ac97113f74d449053378d0e3a56b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_CursorMu: 0.95 + m_SourceMu: 0.95 + direction: 0 +--- !u!114 &1398407828 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1398407819} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c8b45ebbf86be4df6b0e6cd933812af2, type: 3} + m_Name: + m_EditorClassIdentifier: + render: 1 + shader: {fileID: 4800000, guid: 801733041f66b49e1b3c2101471db877, type: 3} + particleColor: {r: 1, g: 1, b: 1, a: 1} + radiusScale: 1 +--- !u!23 &1398407830 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1398407819} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1398407831 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1398407819} + m_Mesh: {fileID: 656035999} +--- !u!1 &1621829079 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1621829081} + - component: {fileID: 1621829080} + m_Layer: 0 + m_Name: BurstCollisionWorld + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1621829080 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1621829079} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1a161c4294214a4fbcb7e9e94800494, type: 3} + m_Name: + m_EditorClassIdentifier: + cellSpans: + m_AlignBytes: 16 +--- !u!4 &1621829081 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1621829079} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2091522316 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2091522317} + - component: {fileID: 2091522324} + - component: {fileID: 2091522323} + - component: {fileID: 2091522320} + - component: {fileID: 2091522319} + - component: {fileID: 2091522318} + - component: {fileID: 2091522321} + - component: {fileID: 2091522322} + - component: {fileID: 2091522325} + - component: {fileID: 2091522327} + - component: {fileID: 2091522326} + m_Layer: 10 + m_Name: 'Obi Rope ' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2091522317 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091522316} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_LocalPosition: {x: 1, y: -1.12, z: -1} + m_LocalScale: {x: 1.0000005, y: 1.0000005, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1007350293} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} +--- !u!114 &2091522318 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091522316} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 3} + normalizeV: 0 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &2091522319 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091522316} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0.02 + smoothing: 0 + twist: 0 +--- !u!114 &2091522320 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091522316} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 62010000630100006401000065010000660100006701000068010000690100006a0100006b0100006c0100006d0100006e0100006f010000700100007101000072010000730100007401000075010000760100007701000078010000790100007a0100007b0100007c0100007d0100007e0100007f010000800100008101000082010000830100008401000085010000860100008701000088010000890100008a0100008b0100008c0100008d0100008e0100008f010000900100009101000092010000930100009401000095010000960100009701000098010000990100009a0100009b0100009c0100009d0100009e0100009f010000a0010000a1010000a2010000a3010000a4010000a5010000a6010000a7010000a8010000a9010000aa010000ab010000ac010000ad010000ae010000af010000b0010000b1010000b2010000b3010000b4010000b5010000b6010000b7010000b8010000b9010000ba010000bb010000bc010000bd010000be010000bf010000c0010000c1010000c2010000c3010000c4010000c5010000c6010000c7010000c8010000c9010000ca010000cb010000cc010000cd010000ce010000cf010000d0010000d1010000d2010000d3010000d4010000d5010000d6010000d7010000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 1 + restLength_: 2 + elements: + - particle1: 354 + particle2: 355 + restLength: 0.11670005 + constraintForce: 0 + tearResistance: 1 + - particle1: 355 + particle2: 356 + restLength: 0.11669767 + constraintForce: 0 + tearResistance: 1 + - particle1: 356 + particle2: 357 + restLength: 0.11849612 + constraintForce: 0 + tearResistance: 1 + - particle1: 357 + particle2: 358 + restLength: 0.11731398 + constraintForce: 0 + tearResistance: 1 + - particle1: 358 + particle2: 359 + restLength: 0.117768645 + constraintForce: 0 + tearResistance: 1 + - particle1: 359 + particle2: 360 + restLength: 0.11787382 + constraintForce: 0 + tearResistance: 1 + - particle1: 360 + particle2: 361 + restLength: 0.1178714 + constraintForce: 0 + tearResistance: 1 + - particle1: 361 + particle2: 362 + restLength: 0.11784513 + constraintForce: 0 + tearResistance: 1 + - particle1: 362 + particle2: 363 + restLength: 0.11781409 + constraintForce: 0 + tearResistance: 1 + - particle1: 363 + particle2: 364 + restLength: 0.117773324 + constraintForce: 0 + tearResistance: 1 + - particle1: 364 + particle2: 365 + restLength: 0.11769721 + constraintForce: 0 + tearResistance: 1 + - particle1: 365 + particle2: 366 + restLength: 0.117714405 + constraintForce: 0 + tearResistance: 1 + - particle1: 366 + particle2: 367 + restLength: 0.11811137 + constraintForce: 0 + tearResistance: 1 + - particle1: 367 + particle2: 368 + restLength: 0.11810517 + constraintForce: 0 + tearResistance: 1 + - particle1: 368 + particle2: 369 + restLength: 0.11729765 + constraintForce: 0 + tearResistance: 1 + - particle1: 369 + particle2: 370 + restLength: 0.11854333 + constraintForce: 0 + tearResistance: 1 + - particle1: 370 + particle2: 371 + restLength: 0.11637664 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: df057526865004da9ac53f3c8bc43d9f, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0.05 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &2091522321 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091522316} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 2091522320} + m_Target: {fileID: 2091522317} + m_ParticleGroup: {fileID: 1119723573710947368, guid: df057526865004da9ac53f3c8bc43d9f, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &2091522322 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091522316} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 2091522320} + m_Target: {fileID: 254982895} + m_ParticleGroup: {fileID: 1023878380947534591, guid: df057526865004da9ac53f3c8bc43d9f, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!23 &2091522323 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091522316} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2091522324 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091522316} + m_Mesh: {fileID: 1264071601} +--- !u!114 &2091522325 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091522316} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 83c7e82b3aac04e408bc8bfe9027c983, type: 3} + m_Name: + m_EditorClassIdentifier: + minLength: 0.1 + speed: 1 +--- !u!114 &2091522326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091522316} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8285ac97113f74d449053378d0e3a56b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_CursorMu: 0.95 + m_SourceMu: 0.95 + direction: 0 +--- !u!114 &2091522327 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091522316} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c8b45ebbf86be4df6b0e6cd933812af2, type: 3} + m_Name: + m_EditorClassIdentifier: + render: 1 + shader: {fileID: 4800000, guid: 801733041f66b49e1b3c2101471db877, type: 3} + particleColor: {r: 1, g: 1, b: 1, a: 1} + radiusScale: 1 +--- !u!1 &2102841794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2102841797} + - component: {fileID: 2102841796} + - component: {fileID: 2102841795} + m_Layer: 0 + m_Name: Obi Solver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2102841795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d9704d540ac448439a425526f6b2986, type: 3} + m_Name: + m_EditorClassIdentifier: + solvers: + - {fileID: 2102841796} + substeps: 2 +--- !u!114 &2102841796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d174fab52f0c4b8399f25d5c3ea524c, type: 3} + m_Name: + m_EditorClassIdentifier: + simulateWhenInvisible: 1 + m_Backend: 1 + parameters: + mode: 0 + interpolation: 0 + gravity: {x: 0, y: -9.81, z: 0} + damping: 0 + maxAnisotropy: 3 + sleepThreshold: 0.001 + collisionMargin: 0.02 + maxDepenetration: 5 + continuousCollisionDetection: 1 + shockPropagation: 0 + surfaceCollisionIterations: 8 + surfaceCollisionTolerance: 0.005 + gravity: {x: 0, y: -9.81, z: 0} + gravitySpace: 1 + worldLinearInertiaScale: 0 + worldAngularInertiaScale: 0 + distanceConstraintParameters: + evaluationOrder: 0 + iterations: 10 + SORFactor: 1 + enabled: 1 + bendingConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + particleCollisionConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 1 + particleFrictionConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 1 + collisionConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 1 + frictionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + skinConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + volumeConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + shapeMatchingConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + tetherConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + pinConstraintParameters: + evaluationOrder: 1 + iterations: 5 + SORFactor: 1 + enabled: 1 + stitchConstraintParameters: + evaluationOrder: 1 + iterations: 5 + SORFactor: 1 + enabled: 0 + densityConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + stretchShearConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + bendTwistConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + chainConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 +--- !u!4 &2102841797 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1007350293} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1002464896} + - {fileID: 421764872} + - {fileID: 1175446146} + - {fileID: 2102841797} + - {fileID: 897006173} + - {fileID: 254982895} + - {fileID: 865561430} + - {fileID: 522272187} + - {fileID: 99547753} + - {fileID: 1621829081} diff --git a/Assets/Obi/Samples/RopeAndRod/FreightLift.unity.meta b/Assets/Obi/Samples/RopeAndRod/FreightLift.unity.meta new file mode 100644 index 000000000..307bcd8a1 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/FreightLift.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f2c99bab98af74a5ebf6edfe56636bc8 +labels: +- ObiRope +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/FreightLiftSettings.lighting b/Assets/Obi/Samples/RopeAndRod/FreightLiftSettings.lighting new file mode 100644 index 000000000..5ca7ed80a --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/FreightLiftSettings.lighting @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: FreightLiftSettings + serializedVersion: 10 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_LightmapPackingMode: 1 + m_LightmapPackingMethod: 0 + m_XAtlasPackingAttempts: 16384 + m_XAtlasBruteForce: 0 + m_XAtlasBlockAlign: 0 + m_XAtlasRepackUnderutilizedLightmaps: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/FreightLiftSettings.lighting.meta b/Assets/Obi/Samples/RopeAndRod/FreightLiftSettings.lighting.meta new file mode 100644 index 000000000..f04f92cdf --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/FreightLiftSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0176ffbdb9209c94cb24588147a54225 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/Plectoneme.unity b/Assets/Obi/Samples/RopeAndRod/Plectoneme.unity new file mode 100644 index 000000000..926fdb7bf --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/Plectoneme.unity @@ -0,0 +1,1570 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: e906219090cbf1f40b1e686e6aa2b869, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &117150008 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 117150010} + - component: {fileID: 117150009} + m_Layer: 0 + m_Name: BurstCollisionWorld + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &117150009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117150008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1a161c4294214a4fbcb7e9e94800494, type: 3} + m_Name: + m_EditorClassIdentifier: + cellSpans: + m_AlignBytes: 16 +--- !u!4 &117150010 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117150008} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &326895829 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 326895831} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &326895831 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 326895829} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.97937447, y: 2.82, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1733402950} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &421764872 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalScale.x + value: 1.2 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalScale.y + value: 1.2 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalScale.z + value: 1.2 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a0a5f9e13fa7c47f78547e54896609da, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459882} + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459883} + m_SourcePrefab: {fileID: 100100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!1 &506459881 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + m_PrefabInstance: {fileID: 421764872} + m_PrefabAsset: {fileID: 0} +--- !u!64 &506459882 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 4300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!114 &506459883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 11400000, guid: d368f2c47473d4bfb8dd9f08073cb403, type: 2} + filter: -65535 + m_SourceCollider: {fileID: 506459882} + m_DistanceField: {fileID: 0} +--- !u!1 &537986385 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 537986386} + - component: {fileID: 537986389} + - component: {fileID: 537986388} + - component: {fileID: 537986387} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &537986386 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 537986385} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.034563184, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.3, z: 0.1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1174747260} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &537986387 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 537986385} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &537986388 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 537986385} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &537986389 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 537986385} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1002464891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002464896} + - component: {fileID: 1002464895} + - component: {fileID: 1002464893} + - component: {fileID: 1002464892} + - component: {fileID: 1002464897} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1002464892 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!124 &1002464893 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!20 &1002464895 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 75 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1002464896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + serializedVersion: 2 + m_LocalRotation: {x: 0.15760262, y: 0, z: 0, w: 0.98750263} + m_LocalPosition: {x: 0, y: 3.19, z: -1.52} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1002464897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62e83a599724f45a4aa337d74764e572, type: 3} + m_Name: + m_EditorClassIdentifier: + skin: {fileID: 11400000, guid: b90d3c214c99743b0865fc0e0d1f1a15, type: 2} + threadColor: {r: 0, g: 1, b: 1, a: 1} + taskColor: {r: 0, g: 1, b: 0, a: 1} + parallelTaskColor: {r: 1, g: 0.8, b: 0.2, a: 1} + renderTaskColor: {r: 0.2, g: 0.7, b: 1, a: 1} + defaultTaskColor: {r: 1, g: 0.5, b: 0.2, a: 1} + showPercentages: 0 + profileThrottle: 30 +--- !u!1 &1072598549 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1072598560} + - component: {fileID: 1072598559} + - component: {fileID: 1072598558} + - component: {fileID: 1072598551} + - component: {fileID: 1072598550} + - component: {fileID: 1072598553} + - component: {fileID: 1072598552} + - component: {fileID: 1072598555} + - component: {fileID: 1072598554} + m_Layer: 0 + m_Name: Obi Rod + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1072598550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1072598549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f2bc32c4faf04f039a86a6e3cea12a1, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 1 + restLength_: 1.9999998 + elements: + - particle1: 0 + particle2: 1 + restLength: 0.049322546 + constraintForce: 0 + tearResistance: 0 + - particle1: 1 + particle2: 2 + restLength: 0.050302863 + constraintForce: 0 + tearResistance: 0 + - particle1: 2 + particle2: 3 + restLength: 0.048888803 + constraintForce: 0 + tearResistance: 0 + - particle1: 3 + particle2: 4 + restLength: 0.050338387 + constraintForce: 0 + tearResistance: 0 + - particle1: 4 + particle2: 5 + restLength: 0.050490856 + constraintForce: 0 + tearResistance: 0 + - particle1: 5 + particle2: 6 + restLength: 0.0494833 + constraintForce: 0 + tearResistance: 0 + - particle1: 6 + particle2: 7 + restLength: 0.050834358 + constraintForce: 0 + tearResistance: 0 + - particle1: 7 + particle2: 8 + restLength: 0.049355686 + constraintForce: 0 + tearResistance: 0 + - particle1: 8 + particle2: 9 + restLength: 0.050579965 + constraintForce: 0 + tearResistance: 0 + - particle1: 9 + particle2: 10 + restLength: 0.049668133 + constraintForce: 0 + tearResistance: 0 + - particle1: 10 + particle2: 11 + restLength: 0.050201297 + constraintForce: 0 + tearResistance: 0 + - particle1: 11 + particle2: 12 + restLength: 0.050103366 + constraintForce: 0 + tearResistance: 0 + - particle1: 12 + particle2: 13 + restLength: 0.049883336 + constraintForce: 0 + tearResistance: 0 + - particle1: 13 + particle2: 14 + restLength: 0.050436974 + constraintForce: 0 + tearResistance: 0 + - particle1: 14 + particle2: 15 + restLength: 0.049704492 + constraintForce: 0 + tearResistance: 0 + - particle1: 15 + particle2: 16 + restLength: 0.050257146 + constraintForce: 0 + tearResistance: 0 + - particle1: 16 + particle2: 17 + restLength: 0.049968615 + constraintForce: 0 + tearResistance: 0 + - particle1: 17 + particle2: 18 + restLength: 0.050020218 + constraintForce: 0 + tearResistance: 0 + - particle1: 18 + particle2: 19 + restLength: 0.05014978 + constraintForce: 0 + tearResistance: 0 + - particle1: 19 + particle2: 20 + restLength: 0.050009843 + constraintForce: 0 + tearResistance: 0 + - particle1: 20 + particle2: 21 + restLength: 0.05000964 + constraintForce: 0 + tearResistance: 0 + - particle1: 21 + particle2: 22 + restLength: 0.050149772 + constraintForce: 0 + tearResistance: 0 + - particle1: 22 + particle2: 23 + restLength: 0.05002047 + constraintForce: 0 + tearResistance: 0 + - particle1: 23 + particle2: 24 + restLength: 0.049968615 + constraintForce: 0 + tearResistance: 0 + - particle1: 24 + particle2: 25 + restLength: 0.050256997 + constraintForce: 0 + tearResistance: 0 + - particle1: 25 + particle2: 26 + restLength: 0.049704522 + constraintForce: 0 + tearResistance: 0 + - particle1: 26 + particle2: 27 + restLength: 0.050436974 + constraintForce: 0 + tearResistance: 0 + - particle1: 27 + particle2: 28 + restLength: 0.049883336 + constraintForce: 0 + tearResistance: 0 + - particle1: 28 + particle2: 29 + restLength: 0.050103366 + constraintForce: 0 + tearResistance: 0 + - particle1: 29 + particle2: 30 + restLength: 0.050201327 + constraintForce: 0 + tearResistance: 0 + - particle1: 30 + particle2: 31 + restLength: 0.049668252 + constraintForce: 0 + tearResistance: 0 + - particle1: 31 + particle2: 32 + restLength: 0.050579846 + constraintForce: 0 + tearResistance: 0 + - particle1: 32 + particle2: 33 + restLength: 0.049355567 + constraintForce: 0 + tearResistance: 0 + - particle1: 33 + particle2: 34 + restLength: 0.050834477 + constraintForce: 0 + tearResistance: 0 + - particle1: 34 + particle2: 35 + restLength: 0.0494833 + constraintForce: 0 + tearResistance: 0 + - particle1: 35 + particle2: 36 + restLength: 0.050490975 + constraintForce: 0 + tearResistance: 0 + - particle1: 36 + particle2: 37 + restLength: 0.050338387 + constraintForce: 0 + tearResistance: 0 + - particle1: 37 + particle2: 38 + restLength: 0.048888862 + constraintForce: 0 + tearResistance: 0 + - particle1: 38 + particle2: 39 + restLength: 0.050302804 + constraintForce: 0 + tearResistance: 0 + - particle1: 39 + particle2: 40 + restLength: 0.049322546 + constraintForce: 0 + tearResistance: 0 + m_RodBlueprint: {fileID: 11400000, guid: 74806658f50d141e88786022b12fc58b, type: 2} + _stretchShearConstraintsEnabled: 1 + _stretchCompliance: 0 + _shear1Compliance: 0 + _shear2Compliance: 0 + _bendTwistConstraintsEnabled: 1 + _torsionCompliance: 0 + _bend1Compliance: 0 + _bend2Compliance: 0 + _plasticYield: 0 + _plasticCreep: 0 + _chainConstraintsEnabled: 1 + _tightness: 1 +--- !u!114 &1072598551 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1072598549} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c8b45ebbf86be4df6b0e6cd933812af2, type: 3} + m_Name: + m_EditorClassIdentifier: + render: 1 + shader: {fileID: 4800000, guid: 801733041f66b49e1b3c2101471db877, type: 3} + particleColor: {r: 1, g: 1, b: 1, a: 1} + radiusScale: 1 +--- !u!114 &1072598552 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1072598549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 6} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &1072598553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1072598549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!114 &1072598554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1072598549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1072598550} + m_Target: {fileID: 537986386} + m_ParticleGroup: {fileID: 5048701005528565804, guid: 74806658f50d141e88786022b12fc58b, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 1 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1072598555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1072598549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1072598550} + m_Target: {fileID: 1733402950} + m_ParticleGroup: {fileID: -3402949915523605302, guid: 74806658f50d141e88786022b12fc58b, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 1 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!23 &1072598558 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1072598549} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9bc0d93bc33e445c7a765578064cdd1e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1072598559 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1072598549} + m_Mesh: {fileID: 1542102694} +--- !u!4 &1072598560 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1072598549} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.039, y: 2.82, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1718836712} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1174747258 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1174747260} + - component: {fileID: 1174747261} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1174747260 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1174747258} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.0486681, y: 2.82, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 537986386} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!95 &1174747261 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1174747258} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 97c29ef2dfc89427385f43924109cfa8, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!1 &1175446144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1175446146} + - component: {fileID: 1175446145} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1175446145 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.03 + m_NormalBias: 0.01 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1175446146 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + serializedVersion: 2 + m_LocalRotation: {x: 0.41595167, y: -0.26247028, z: 0.26683384, w: 0.82879025} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 56.052002, y: -22.431002, z: 23.642} +--- !u!43 &1542102694 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &1718836709 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1718836712} + - component: {fileID: 1718836711} + - component: {fileID: 1718836710} + m_Layer: 0 + m_Name: Solver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1718836710 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1718836709} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 434ec3c1822e84ae79a7f64f950b1bf9, type: 3} + m_Name: + m_EditorClassIdentifier: + solvers: + - {fileID: 1718836711} + substeps: 2 +--- !u!114 &1718836711 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1718836709} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d174fab52f0c4b8399f25d5c3ea524c, type: 3} + m_Name: + m_EditorClassIdentifier: + simulateWhenInvisible: 1 + m_Backend: 1 + parameters: + mode: 0 + interpolation: 1 + gravity: {x: 0, y: -9.81, z: 0} + damping: 0 + maxAnisotropy: 3 + sleepThreshold: 0.001 + collisionMargin: 0.02 + maxDepenetration: 5 + continuousCollisionDetection: 1 + shockPropagation: 0 + surfaceCollisionIterations: 8 + surfaceCollisionTolerance: 0.005 + gravity: {x: 0, y: -9.81, z: 0} + gravitySpace: 1 + worldLinearInertiaScale: 0 + worldAngularInertiaScale: 0 + distanceConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + bendingConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + particleCollisionConstraintParameters: + evaluationOrder: 0 + iterations: 5 + SORFactor: 1 + enabled: 1 + particleFrictionConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 1 + collisionConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 1 + frictionConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 1 + skinConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + volumeConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + shapeMatchingConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + tetherConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + pinConstraintParameters: + evaluationOrder: 0 + iterations: 10 + SORFactor: 1 + enabled: 0 + stitchConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + densityConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + stretchShearConstraintParameters: + evaluationOrder: 1 + iterations: 6 + SORFactor: 1 + enabled: 1 + bendTwistConstraintParameters: + evaluationOrder: 1 + iterations: 6 + SORFactor: 1 + enabled: 1 + chainConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 1 +--- !u!4 &1718836712 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1718836709} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1072598560} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1733402949 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1733402950} + - component: {fileID: 1733402953} + - component: {fileID: 1733402952} + - component: {fileID: 1733402951} + m_Layer: 0 + m_Name: Cube (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1733402950 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1733402949} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.033625543, y: 0, z: 0} + m_LocalScale: {x: 0.099999994, y: 0.29999998, z: 0.099999994} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 326895831} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1733402951 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1733402949} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1733402952 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1733402949} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1733402953 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1733402949} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1002464896} + - {fileID: 421764872} + - {fileID: 1175446146} + - {fileID: 326895831} + - {fileID: 1174747260} + - {fileID: 1718836712} + - {fileID: 117150010} diff --git a/Assets/Obi/Samples/RopeAndRod/Plectoneme.unity.meta b/Assets/Obi/Samples/RopeAndRod/Plectoneme.unity.meta new file mode 100644 index 000000000..e9a96f2b3 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/Plectoneme.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 328a6310251d54b959032988b2b6a480 +labels: +- ObiRope +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/PlectonemeSettings.lighting b/Assets/Obi/Samples/RopeAndRod/PlectonemeSettings.lighting new file mode 100644 index 000000000..e7b337448 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/PlectonemeSettings.lighting @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: PlectonemeSettings + serializedVersion: 10 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_LightmapPackingMode: 1 + m_LightmapPackingMethod: 0 + m_XAtlasPackingAttempts: 16384 + m_XAtlasBruteForce: 0 + m_XAtlasBlockAlign: 0 + m_XAtlasRepackUnderutilizedLightmaps: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/PlectonemeSettings.lighting.meta b/Assets/Obi/Samples/RopeAndRod/PlectonemeSettings.lighting.meta new file mode 100644 index 000000000..5f380afa5 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/PlectonemeSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e906219090cbf1f40b1e686e6aa2b869 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/Rocker.unity b/Assets/Obi/Samples/RopeAndRod/Rocker.unity new file mode 100644 index 000000000..4cda709d7 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/Rocker.unity @@ -0,0 +1,2247 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: 0db85af432ddcff43bccc553cde7d4f5, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &283647873 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 283647877} + - component: {fileID: 283647876} + - component: {fileID: 283647875} + - component: {fileID: 283647874} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &283647874 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283647873} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &283647875 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283647873} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &283647876 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283647873} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_UseReflectionProbes: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &283647877 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283647873} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 582899617} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &359190389 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 359190391} + - component: {fileID: 359190390} + m_Layer: 0 + m_Name: BurstCollisionWorld + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &359190390 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 359190389} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1a161c4294214a4fbcb7e9e94800494, type: 3} + m_Name: + m_EditorClassIdentifier: + cellSpans: + m_AlignBytes: 16 +--- !u!4 &359190391 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 359190389} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &371642822 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 371642823} + - component: {fileID: 371642826} + - component: {fileID: 371642825} + - component: {fileID: 371642824} + - component: {fileID: 371642827} + m_Layer: 0 + m_Name: Side2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &371642823 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 371642822} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.5153397, y: 0, z: 0} + m_LocalScale: {x: 0.05706403, y: 3.7535858, z: 1.5454657} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2124930376} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &371642824 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 371642822} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &371642825 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 371642822} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &371642826 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 371642822} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &371642827 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 371642822} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 371642825} + m_DistanceField: {fileID: 0} +--- !u!1001 &421764872 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a0a5f9e13fa7c47f78547e54896609da, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459882} + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459883} + m_SourcePrefab: {fileID: 100100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!1 &506459881 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + m_PrefabInstance: {fileID: 421764872} + m_PrefabAsset: {fileID: 0} +--- !u!64 &506459882 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 4300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!114 &506459883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 506459882} + m_DistanceField: {fileID: 0} +--- !u!1 &582899616 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 582899617} + - component: {fileID: 582899621} + - component: {fileID: 582899620} + - component: {fileID: 582899619} + - component: {fileID: 582899618} + m_Layer: 5 + m_Name: FPSDisplay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &582899617 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 582899616} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 283647877} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 99, y: -31} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &582899618 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 582899616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &582899619 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 582899616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f14f49b61044e49ebb2f29511f2b3f41, type: 3} + m_Name: + m_EditorClassIdentifier: + updateInterval: 0.5 + showMedian: 0 + medianLearnrate: 0.05 +--- !u!114 &582899620 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 582899616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &582899621 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 582899616} + m_CullTransparentMesh: 0 +--- !u!43 &831718891 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &1002464891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002464896} + - component: {fileID: 1002464895} + - component: {fileID: 1002464893} + - component: {fileID: 1002464892} + - component: {fileID: 1002464897} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1002464892 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!124 &1002464893 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!20 &1002464895 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 75 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1002464896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + serializedVersion: 2 + m_LocalRotation: {x: 0.15760262, y: 0, z: 0, w: 0.98750263} + m_LocalPosition: {x: 0, y: 3.95, z: -4.42} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1002464897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62e83a599724f45a4aa337d74764e572, type: 3} + m_Name: + m_EditorClassIdentifier: + skin: {fileID: 11400000, guid: b90d3c214c99743b0865fc0e0d1f1a15, type: 2} + threadColor: {r: 0, g: 1, b: 1, a: 1} + taskColor: {r: 0, g: 1, b: 0, a: 1} + parallelTaskColor: {r: 1, g: 0.8, b: 0.2, a: 1} + renderTaskColor: {r: 0.2, g: 0.7, b: 1, a: 1} + defaultTaskColor: {r: 1, g: 0.5, b: 0.2, a: 1} + showPercentages: 0 + profileThrottle: 30 +--- !u!1 &1175446144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1175446146} + - component: {fileID: 1175446145} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1175446145 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.03 + m_NormalBias: 0.01 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1175446146 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + serializedVersion: 2 + m_LocalRotation: {x: 0.41595167, y: -0.26247028, z: 0.26683384, w: 0.82879025} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 56.052002, y: -22.431002, z: 23.642} +--- !u!1 &1196756658 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1196756662} + - component: {fileID: 1196756661} + - component: {fileID: 1196756660} + - component: {fileID: 1196756659} + - component: {fileID: 1196756663} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1196756659 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1196756658} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1196756660 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1196756658} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1196756661 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1196756658} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1196756662 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1196756658} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.971, y: 2.887, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!95 &1196756663 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1196756658} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: d48cf3556d5844543a51259340bc1344, type: 2} + m_CullingMode: 0 + m_UpdateMode: 1 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 1 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!1 &1346965641 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1346965650} + - component: {fileID: 1346965645} + - component: {fileID: 1346965644} + - component: {fileID: 1346965642} + - component: {fileID: 1346965646} + - component: {fileID: 1346965643} + - component: {fileID: 1346965648} + - component: {fileID: 1346965647} + m_Layer: 10 + m_Name: Obi Rope + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1346965642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000490000004a0000004b0000004c0000004d0000004e0000004f000000500000005100000052000000530000005400000055000000560000005700000058000000590000005a0000005b0000005c0000005d0000005e0000005f000000600000006100000062000000630000006400000065000000660000006700000068000000690000006a0000006b0000006c0000006d0000006e0000006f000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 2.017229 + elements: + - particle1: 0 + particle2: 1 + restLength: 0.18298253 + constraintForce: 0 + tearResistance: 1 + - particle1: 1 + particle2: 2 + restLength: 0.18343952 + constraintForce: 0 + tearResistance: 1 + - particle1: 2 + particle2: 3 + restLength: 0.18301578 + constraintForce: 0 + tearResistance: 1 + - particle1: 3 + particle2: 4 + restLength: 0.18388647 + constraintForce: 0 + tearResistance: 1 + - particle1: 4 + particle2: 5 + restLength: 0.18345642 + constraintForce: 0 + tearResistance: 1 + - particle1: 5 + particle2: 6 + restLength: 0.18361436 + constraintForce: 0 + tearResistance: 1 + - particle1: 6 + particle2: 7 + restLength: 0.18370213 + constraintForce: 0 + tearResistance: 1 + - particle1: 7 + particle2: 8 + restLength: 0.18345217 + constraintForce: 0 + tearResistance: 1 + - particle1: 8 + particle2: 9 + restLength: 0.18332246 + constraintForce: 0 + tearResistance: 1 + - particle1: 9 + particle2: 10 + restLength: 0.1834608 + constraintForce: 0 + tearResistance: 1 + - particle1: 10 + particle2: 11 + restLength: 0.18289638 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: ca9e262f11fb246cbb6d2177bacb27ea, type: 2} + tearingEnabled: 1 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0.04 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &1346965643 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 3} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!23 &1346965644 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1346965645 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Mesh: {fileID: 831718891} +--- !u!114 &1346965646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!114 &1346965647 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965642} + m_Target: {fileID: 1499352028} + m_ParticleGroup: {fileID: -3735696104525882986, guid: ca9e262f11fb246cbb6d2177bacb27ea, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1346965648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965642} + m_Target: {fileID: 1817376321} + m_ParticleGroup: {fileID: 8673311686603544650, guid: ca9e262f11fb246cbb6d2177bacb27ea, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!4 &1346965650 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: -1.68, y: 2.53, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1376993203} + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!1 &1356049001 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1356049002} + - component: {fileID: 1356049005} + - component: {fileID: 1356049004} + - component: {fileID: 1356049003} + - component: {fileID: 1356049006} + m_Layer: 0 + m_Name: Side1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1356049002 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356049001} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.5153397, y: 0, z: 0} + m_LocalScale: {x: 0.057063304, y: 3.7535796, z: 1.5454605} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2124930376} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1356049003 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356049001} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1356049004 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356049001} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1356049005 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356049001} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &1356049006 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356049001} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 1356049004} + m_DistanceField: {fileID: 0} +--- !u!1 &1376993202 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1376993203} + m_Layer: 0 + m_Name: Rocker + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1376993203 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1376993202} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1346965650} + - {fileID: 2124930376} + - {fileID: 1817376321} + - {fileID: 1499352028} + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1499352027 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1499352028} + - component: {fileID: 1499352032} + - component: {fileID: 1499352031} + - component: {fileID: 1499352030} + - component: {fileID: 1499352029} + - component: {fileID: 1499352034} + - component: {fileID: 1499352033} + m_Layer: 10 + m_Name: Weight 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1499352028 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1499352027} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.69, y: 2.53, z: 1.252} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1376993203} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &1499352029 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1499352027} + serializedVersion: 5 + m_Mass: 2 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!23 &1499352030 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1499352027} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!135 &1499352031 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1499352027} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1499352032 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1499352027} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &1499352033 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1499352027} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &1499352034 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1499352027} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -131071 + m_SourceCollider: {fileID: 1499352031} + m_DistanceField: {fileID: 0} +--- !u!1 &1817376320 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1817376321} + - component: {fileID: 1817376325} + - component: {fileID: 1817376324} + - component: {fileID: 1817376323} + - component: {fileID: 1817376322} + - component: {fileID: 1817376327} + - component: {fileID: 1817376326} + m_Layer: 10 + m_Name: Weight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1817376321 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817376320} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.69, y: 2.53, z: -1.242} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1376993203} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &1817376322 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817376320} + serializedVersion: 5 + m_Mass: 2 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!23 &1817376323 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817376320} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!135 &1817376324 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817376320} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1817376325 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817376320} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &1817376326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817376320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &1817376327 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817376320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -131071 + m_SourceCollider: {fileID: 1817376324} + m_DistanceField: {fileID: 0} +--- !u!1 &2102841794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2102841797} + - component: {fileID: 2102841796} + - component: {fileID: 2102841795} + m_Layer: 0 + m_Name: Obi Solver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2102841795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d9704d540ac448439a425526f6b2986, type: 3} + m_Name: + m_EditorClassIdentifier: + solvers: + - {fileID: 2102841796} + substeps: 1 +--- !u!114 &2102841796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d174fab52f0c4b8399f25d5c3ea524c, type: 3} + m_Name: + m_EditorClassIdentifier: + simulateWhenInvisible: 1 + m_Backend: 1 + parameters: + mode: 0 + interpolation: 0 + gravity: {x: 0, y: -9.81, z: 0} + damping: 0 + maxAnisotropy: 3 + sleepThreshold: 0.001 + collisionMargin: 0.02 + maxDepenetration: 5 + continuousCollisionDetection: 1 + shockPropagation: 0 + surfaceCollisionIterations: 8 + surfaceCollisionTolerance: 0.005 + gravity: {x: 0, y: -9.81, z: 0} + gravitySpace: 1 + worldLinearInertiaScale: 0 + worldAngularInertiaScale: 0 + distanceConstraintParameters: + evaluationOrder: 0 + iterations: 20 + SORFactor: 1 + enabled: 1 + bendingConstraintParameters: + evaluationOrder: 0 + iterations: 2 + SORFactor: 1 + enabled: 1 + particleCollisionConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + particleFrictionConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + collisionConstraintParameters: + evaluationOrder: 1 + iterations: 5 + SORFactor: 1 + enabled: 1 + frictionConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 1 + skinConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + volumeConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + shapeMatchingConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + tetherConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + pinConstraintParameters: + evaluationOrder: 1 + iterations: 10 + SORFactor: 1 + enabled: 1 + stitchConstraintParameters: + evaluationOrder: 1 + iterations: 5 + SORFactor: 1 + enabled: 0 + densityConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + stretchShearConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + bendTwistConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + chainConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 +--- !u!4 &2102841797 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1376993203} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2124930372 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2124930376} + - component: {fileID: 2124930375} + - component: {fileID: 2124930374} + - component: {fileID: 2124930373} + - component: {fileID: 2124930377} + - component: {fileID: 2124930378} + - component: {fileID: 2124930379} + m_Layer: 0 + m_Name: Center + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &2124930373 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2124930372} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &2124930374 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2124930372} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2124930375 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2124930372} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2124930376 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2124930372} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.5, z: 0} + m_LocalScale: {x: 5.3362865, y: 0.2001739, z: 0.59812397} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1356049002} + - {fileID: 371642823} + m_Father: {fileID: 1376993203} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &2124930377 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2124930372} + serializedVersion: 5 + m_Mass: 20 + m_LinearDamping: 0 + m_AngularDamping: 0.2 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 62 + m_CollisionDetection: 0 +--- !u!114 &2124930378 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2124930372} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0.02 + material: {fileID: 11400000, guid: d368f2c47473d4bfb8dd9f08073cb403, type: 2} + filter: -65535 + m_SourceCollider: {fileID: 2124930374} + m_DistanceField: {fileID: 0} +--- !u!114 &2124930379 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2124930372} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1002464896} + - {fileID: 421764872} + - {fileID: 1175446146} + - {fileID: 2102841797} + - {fileID: 1196756662} + - {fileID: 283647877} + - {fileID: 359190391} diff --git a/Assets/Obi/Samples/RopeAndRod/Rocker.unity.meta b/Assets/Obi/Samples/RopeAndRod/Rocker.unity.meta new file mode 100644 index 000000000..795c2fef1 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/Rocker.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9c8d31b0b36434fd199dc8bf5919ba85 +labels: +- ObiRope +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/RockerSettings.lighting b/Assets/Obi/Samples/RopeAndRod/RockerSettings.lighting new file mode 100644 index 000000000..9b5589245 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RockerSettings.lighting @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RockerSettings + serializedVersion: 10 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_LightmapPackingMode: 1 + m_LightmapPackingMethod: 0 + m_XAtlasPackingAttempts: 16384 + m_XAtlasBruteForce: 0 + m_XAtlasBlockAlign: 0 + m_XAtlasRepackUnderutilizedLightmaps: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/RockerSettings.lighting.meta b/Assets/Obi/Samples/RopeAndRod/RockerSettings.lighting.meta new file mode 100644 index 000000000..5e4e7cc38 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RockerSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0db85af432ddcff43bccc553cde7d4f5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/RopeAndJoints.unity b/Assets/Obi/Samples/RopeAndRod/RopeAndJoints.unity new file mode 100644 index 000000000..fe7f6ee24 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeAndJoints.unity @@ -0,0 +1,3176 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: 808d599795c1c714ba75acc1e9aafc72, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &296577041 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 296577042} + - component: {fileID: 296577046} + - component: {fileID: 296577045} + - component: {fileID: 296577044} + - component: {fileID: 296577043} + m_Layer: 5 + m_Name: FPSDisplay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &296577042 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 296577041} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1556965141} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 99, y: -31} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &296577043 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 296577041} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &296577044 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 296577041} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f14f49b61044e49ebb2f29511f2b3f41, type: 3} + m_Name: + m_EditorClassIdentifier: + updateInterval: 0.5 + showMedian: 0 + medianLearnrate: 0.05 +--- !u!114 &296577045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 296577041} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &296577046 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 296577041} + m_CullTransparentMesh: 0 +--- !u!43 &412479596 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1001 &421764872 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a0a5f9e13fa7c47f78547e54896609da, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459882} + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459883} + m_SourcePrefab: {fileID: 100100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!1 &491995553 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 491995559} + - component: {fileID: 491995558} + - component: {fileID: 491995557} + - component: {fileID: 491995556} + - component: {fileID: 491995555} + - component: {fileID: 491995554} + m_Layer: 10 + m_Name: Capsule (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!59 &491995554 +HingeJoint: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 491995553} + serializedVersion: 3 + m_ConnectedBody: {fileID: 0} + m_ConnectedArticulationBody: {fileID: 0} + m_Anchor: {x: 0, y: 0.5000001, z: 0} + m_Axis: {x: 0, y: 0, z: 1} + m_AutoConfigureConnectedAnchor: 1 + m_ConnectedAnchor: {x: -1.2849011, y: 4.086458, z: 0.19} + m_UseSpring: 0 + m_Spring: + spring: 0 + damper: 0 + targetPosition: 0 + m_UseMotor: 0 + m_Motor: + targetVelocity: 0 + force: 0 + freeSpin: 0 + m_UseLimits: 0 + m_ExtendedLimits: 0 + m_UseAcceleration: 0 + m_Limits: + min: 0 + max: 0 + bounciness: 0 + bounceMinVelocity: 0.2 + contactDistance: 0 + m_BreakForce: Infinity + m_BreakTorque: Infinity + m_EnableCollision: 0 + m_EnablePreprocessing: 1 + m_MassScale: 1 + m_ConnectedMassScale: 1 +--- !u!65 &491995555 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 491995553} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &491995556 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 491995553} + serializedVersion: 5 + m_Mass: 1 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!23 &491995557 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 491995553} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &491995558 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 491995553} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &491995559 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 491995553} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0.054329306, w: 0.99852306} + m_LocalPosition: {x: -0.918763, y: 0.37653518, z: -0.67946297} + m_LocalScale: {x: 0.19999997, y: 1.2, z: 0.2} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1238800305} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -6.229} +--- !u!1 &506459881 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + m_PrefabInstance: {fileID: 421764872} + m_PrefabAsset: {fileID: 0} +--- !u!64 &506459882 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 4300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!114 &506459883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 506459882} + m_DistanceField: {fileID: 0} +--- !u!43 &650523563 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &916249660 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 916249664} + - component: {fileID: 916249663} + - component: {fileID: 916249662} + - component: {fileID: 916249661} + - component: {fileID: 916249666} + - component: {fileID: 916249665} + - component: {fileID: 916249668} + - component: {fileID: 916249667} + m_Layer: 10 + m_Name: Cylinder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &916249661 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 916249660} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!136 &916249662 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 916249660} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &916249663 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 916249660} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &916249664 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 916249660} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.303, y: 3.12, z: 0.163} + m_LocalScale: {x: 1.6741419, y: 0.055837065, z: 1.6741422} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!59 &916249665 +HingeJoint: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 916249660} + serializedVersion: 3 + m_ConnectedBody: {fileID: 0} + m_ConnectedArticulationBody: {fileID: 0} + m_Anchor: {x: 0, y: 1, z: 0} + m_Axis: {x: 0, y: 1, z: 0} + m_AutoConfigureConnectedAnchor: 1 + m_ConnectedAnchor: {x: 1.303, y: 3.175837, z: 0.163} + m_UseSpring: 0 + m_Spring: + spring: 0 + damper: 0 + targetPosition: 0 + m_UseMotor: 1 + m_Motor: + targetVelocity: 100 + force: 300 + freeSpin: 0 + m_UseLimits: 0 + m_ExtendedLimits: 0 + m_UseAcceleration: 0 + m_Limits: + min: 0 + max: 0 + bounciness: 0 + bounceMinVelocity: 0.2 + contactDistance: 0 + m_BreakForce: Infinity + m_BreakTorque: Infinity + m_EnableCollision: 0 + m_EnablePreprocessing: 1 + m_MassScale: 1 + m_ConnectedMassScale: 1 +--- !u!54 &916249666 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 916249660} + serializedVersion: 5 + m_Mass: 1 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &916249667 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 916249660} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &916249668 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 916249660} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 916249662} + m_DistanceField: {fileID: 0} +--- !u!1 &1002464891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002464896} + - component: {fileID: 1002464895} + - component: {fileID: 1002464893} + - component: {fileID: 1002464892} + - component: {fileID: 1002464897} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1002464892 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!124 &1002464893 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!20 &1002464895 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 87.6 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1002464896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + serializedVersion: 2 + m_LocalRotation: {x: 0.011613097, y: 0.17214976, z: -0.0020296327, w: 0.9850003} + m_LocalPosition: {x: -0.574, y: 2.82, z: -2.15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 1.3510001, y: 19.827002, z: 0} +--- !u!114 &1002464897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62e83a599724f45a4aa337d74764e572, type: 3} + m_Name: + m_EditorClassIdentifier: + skin: {fileID: 11400000, guid: b90d3c214c99743b0865fc0e0d1f1a15, type: 2} + threadColor: {r: 0, g: 1, b: 1, a: 1} + taskColor: {r: 0, g: 1, b: 0, a: 1} + parallelTaskColor: {r: 1, g: 0.8, b: 0.2, a: 1} + renderTaskColor: {r: 0.2, g: 0.7, b: 1, a: 1} + defaultTaskColor: {r: 1, g: 0.5, b: 0.2, a: 1} + showPercentages: 0 + profileThrottle: 30 +--- !u!1 &1013469396 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1013469397} + - component: {fileID: 1013469399} + - component: {fileID: 1013469398} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1013469397 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1013469396} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2032392336} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1013469398 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1013469396} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1013469399 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1013469396} + m_CullTransparentMesh: 0 +--- !u!1 &1175446144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1175446146} + - component: {fileID: 1175446145} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1175446145 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.03 + m_NormalBias: 0.01 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1175446146 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + serializedVersion: 2 + m_LocalRotation: {x: 0.41595167, y: -0.26247028, z: 0.26683384, w: 0.82879025} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 56.052002, y: -22.431002, z: 23.642} +--- !u!1 &1201406215 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1201406216} + - component: {fileID: 1201406221} + - component: {fileID: 1201406220} + - component: {fileID: 1201406219} + - component: {fileID: 1201406218} + - component: {fileID: 1201406217} + - component: {fileID: 1201406223} + - component: {fileID: 1201406222} + - component: {fileID: 1201406225} + - component: {fileID: 1201406224} + m_Layer: 10 + m_Name: Obi Rope + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1201406216 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0.7071068, w: 0.7071068} + m_LocalPosition: {x: -0.28, y: 1.678, z: 0.192} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90.00001} +--- !u!114 &1201406217 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 5} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &1201406218 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!114 &1201406219 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000490000004a0000004b0000004c0000004d0000004e0000004f000000500000005100000052000000530000005400000055000000560000005700000058000000590000005a0000005b0000005c0000005d0000005e0000005f000000600000006100000062000000630000006400000065000000660000006700000068000000690000006a0000006b0000006c0000006d0000006e0000006f000000700000007100000072000000730000007400000075000000760000007700000078000000790000007a0000007b000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 2.1155076 + elements: + - particle1: 0 + particle2: 1 + restLength: 0.08187712 + constraintForce: 0 + tearResistance: 1 + - particle1: 1 + particle2: 2 + restLength: 0.08188899 + constraintForce: 0 + tearResistance: 1 + - particle1: 2 + particle2: 3 + restLength: 0.09349412 + constraintForce: 0 + tearResistance: 1 + - particle1: 3 + particle2: 4 + restLength: 0.09341026 + constraintForce: 0 + tearResistance: 1 + - particle1: 4 + particle2: 5 + restLength: 0.0931865 + constraintForce: 0 + tearResistance: 1 + - particle1: 5 + particle2: 6 + restLength: 0.09309505 + constraintForce: 0 + tearResistance: 1 + - particle1: 6 + particle2: 7 + restLength: 0.09291664 + constraintForce: 0 + tearResistance: 1 + - particle1: 7 + particle2: 8 + restLength: 0.09338906 + constraintForce: 0 + tearResistance: 1 + - particle1: 8 + particle2: 9 + restLength: 0.09332729 + constraintForce: 0 + tearResistance: 1 + - particle1: 9 + particle2: 10 + restLength: 0.09420088 + constraintForce: 0 + tearResistance: 1 + - particle1: 10 + particle2: 11 + restLength: 0.09566547 + constraintForce: 0 + tearResistance: 1 + - particle1: 11 + particle2: 12 + restLength: 0.094373725 + constraintForce: 0 + tearResistance: 1 + - particle1: 12 + particle2: 13 + restLength: 0.09488609 + constraintForce: 0 + tearResistance: 1 + - particle1: 13 + particle2: 14 + restLength: 0.094772704 + constraintForce: 0 + tearResistance: 1 + - particle1: 14 + particle2: 15 + restLength: 0.094846986 + constraintForce: 0 + tearResistance: 1 + - particle1: 15 + particle2: 16 + restLength: 0.0949681 + constraintForce: 0 + tearResistance: 1 + - particle1: 16 + particle2: 17 + restLength: 0.09506482 + constraintForce: 0 + tearResistance: 1 + - particle1: 17 + particle2: 18 + restLength: 0.09513883 + constraintForce: 0 + tearResistance: 1 + - particle1: 18 + particle2: 19 + restLength: 0.09518286 + constraintForce: 0 + tearResistance: 1 + - particle1: 19 + particle2: 20 + restLength: 0.09518514 + constraintForce: 0 + tearResistance: 1 + - particle1: 20 + particle2: 21 + restLength: 0.09484102 + constraintForce: 0 + tearResistance: 1 + - particle1: 21 + particle2: 22 + restLength: 0.07990884 + constraintForce: 0 + tearResistance: 1 + - particle1: 22 + particle2: 23 + restLength: 0.079887465 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: aa522e16fa3d944afa90688caef811d1, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!23 &1201406220 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1201406221 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + m_Mesh: {fileID: 412479596} +--- !u!114 &1201406222 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1201406219} + m_Target: {fileID: 916249664} + m_ParticleGroup: {fileID: 4437340670510581073, guid: aa522e16fa3d944afa90688caef811d1, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1201406223 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1201406219} + m_Target: {fileID: 2019980195} + m_ParticleGroup: {fileID: 7605297887885229143, guid: aa522e16fa3d944afa90688caef811d1, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1201406224 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1201406219} + m_Target: {fileID: 916249664} + m_ParticleGroup: {fileID: -4396955149452082975, guid: aa522e16fa3d944afa90688caef811d1, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1201406225 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1201406219} + m_Target: {fileID: 2019980195} + m_ParticleGroup: {fileID: 1364724456080004343, guid: aa522e16fa3d944afa90688caef811d1, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!1 &1238800304 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1238800305} + m_Layer: 0 + m_Name: JointSystem1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1238800305 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1238800304} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.43123704, y: 3.1134648, z: 0.86946297} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2019980195} + - {fileID: 491995559} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1295941522 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1295941532} + - component: {fileID: 1295941527} + - component: {fileID: 1295941526} + - component: {fileID: 1295941525} + - component: {fileID: 1295941524} + - component: {fileID: 1295941523} + - component: {fileID: 1295941529} + - component: {fileID: 1295941528} + - component: {fileID: 1295941530} + - component: {fileID: 1295941531} + m_Layer: 11 + m_Name: Obi Rope (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1295941523 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295941522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 4} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &1295941524 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295941522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!114 &1295941525 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295941522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 7c0000007d0000007e0000007f000000800000008100000082000000830000008400000085000000860000008700000088000000890000008a0000008b0000008c0000008d0000008e0000008f000000900000009100000092000000930000009400000095000000960000009700000098000000990000009a0000009b0000009c0000009d0000009e0000009f000000a0000000a1000000a2000000a3000000a4000000a5000000a6000000a7000000a8000000a9000000aa000000ab000000ac000000ad000000ae000000af000000b0000000b1000000b2000000b3000000b4000000b5000000b6000000b7000000b8000000b9000000ba000000bb000000bc000000bd000000be000000bf000000c0000000c1000000c2000000c3000000c4000000c5000000c6000000c7000000c8000000c9000000ca000000cb000000cc000000cd000000ce000000cf000000d0000000d1000000d2000000d3000000d4000000d5000000d6000000d7000000d8000000d9000000da000000db000000dc000000dd000000de000000df000000e0000000e1000000e2000000e3000000e4000000e5000000e6000000e7000000e8000000e9000000ea000000eb000000ec000000ed000000ee000000ef000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 1.2510417 + elements: + - particle1: 124 + particle2: 125 + restLength: 0.05090946 + constraintForce: 0 + tearResistance: 1 + - particle1: 125 + particle2: 126 + restLength: 0.050947905 + constraintForce: 0 + tearResistance: 1 + - particle1: 126 + particle2: 127 + restLength: 0.093152404 + constraintForce: 0 + tearResistance: 1 + - particle1: 127 + particle2: 128 + restLength: 0.093685806 + constraintForce: 0 + tearResistance: 1 + - particle1: 128 + particle2: 129 + restLength: 0.09356886 + constraintForce: 0 + tearResistance: 1 + - particle1: 129 + particle2: 130 + restLength: 0.09352276 + constraintForce: 0 + tearResistance: 1 + - particle1: 130 + particle2: 131 + restLength: 0.09360525 + constraintForce: 0 + tearResistance: 1 + - particle1: 131 + particle2: 132 + restLength: 0.09355682 + constraintForce: 0 + tearResistance: 1 + - particle1: 132 + particle2: 133 + restLength: 0.093715504 + constraintForce: 0 + tearResistance: 1 + - particle1: 133 + particle2: 134 + restLength: 0.09365523 + constraintForce: 0 + tearResistance: 1 + - particle1: 134 + particle2: 135 + restLength: 0.093458354 + constraintForce: 0 + tearResistance: 1 + - particle1: 135 + particle2: 136 + restLength: 0.09305526 + constraintForce: 0 + tearResistance: 1 + - particle1: 136 + particle2: 137 + restLength: 0.08492255 + constraintForce: 0 + tearResistance: 1 + - particle1: 137 + particle2: 138 + restLength: 0.059066564 + constraintForce: 0 + tearResistance: 1 + - particle1: 138 + particle2: 139 + restLength: 0.07021886 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: 26f4e1ad2bfa7442fa1380d8f5ea809b, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!23 &1295941526 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295941522} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1295941527 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295941522} + m_Mesh: {fileID: 650523563} +--- !u!114 &1295941528 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295941522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1295941525} + m_Target: {fileID: 1966636104} + m_ParticleGroup: {fileID: 6085013363271969740, guid: 26f4e1ad2bfa7442fa1380d8f5ea809b, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1295941529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295941522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1295941525} + m_Target: {fileID: 916249664} + m_ParticleGroup: {fileID: 2668437529162069470, guid: 26f4e1ad2bfa7442fa1380d8f5ea809b, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1295941530 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295941522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1295941525} + m_Target: {fileID: 1966636104} + m_ParticleGroup: {fileID: 8493842404228815792, guid: 26f4e1ad2bfa7442fa1380d8f5ea809b, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1295941531 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295941522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1295941525} + m_Target: {fileID: 916249664} + m_ParticleGroup: {fileID: -981642940510787340, guid: 26f4e1ad2bfa7442fa1380d8f5ea809b, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!4 &1295941532 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295941522} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0.7071068, w: 0.7071068} + m_LocalPosition: {x: 1.762, y: 2.082, z: 0.163} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90.00001} +--- !u!1 &1323421013 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1323421014} + - component: {fileID: 1323421015} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1323421014 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323421013} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2032392336} + - {fileID: 1964394701} + m_Father: {fileID: 1556965141} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 105.79999, y: 32.600006} + m_SizeDelta: {x: 160, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1323421015 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323421013} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2032392337} + toggleTransition: 1 + graphic: {fileID: 1013469398} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2102841798} + m_TargetAssemblyTypeName: + m_MethodName: Slowmo + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_IsOn: 0 +--- !u!1 &1556965137 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1556965141} + - component: {fileID: 1556965140} + - component: {fileID: 1556965139} + - component: {fileID: 1556965138} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1556965138 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1556965137} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1556965139 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1556965137} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1556965140 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1556965137} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_UseReflectionProbes: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1556965141 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1556965137} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1323421014} + - {fileID: 296577042} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1690581335 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1690581338} + - component: {fileID: 1690581337} + - component: {fileID: 1690581336} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1690581336 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1690581335} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1690581337 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1690581335} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1690581338 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1690581335} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1712865439 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1712865441} + - component: {fileID: 1712865440} + m_Layer: 0 + m_Name: BurstCollisionWorld + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1712865440 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1712865439} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1a161c4294214a4fbcb7e9e94800494, type: 3} + m_Name: + m_EditorClassIdentifier: + cellSpans: + m_AlignBytes: 16 +--- !u!4 &1712865441 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1712865439} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1964394700 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1964394701} + - component: {fileID: 1964394703} + - component: {fileID: 1964394702} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1964394701 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1964394700} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1323421014} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1964394702 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1964394700} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Slow motion +--- !u!222 &1964394703 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1964394700} + m_CullTransparentMesh: 0 +--- !u!1 &1966636100 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1966636104} + - component: {fileID: 1966636103} + - component: {fileID: 1966636102} + - component: {fileID: 1966636101} + - component: {fileID: 1966636105} + - component: {fileID: 1966636107} + - component: {fileID: 1966636106} + m_Layer: 11 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1966636101 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1966636100} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!135 &1966636102 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1966636100} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1966636103 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1966636100} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1966636104 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1966636100} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.757, y: 1.674, z: 0.163} + m_LocalScale: {x: 0.29338, y: 0.29338, z: 0.29338} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &1966636105 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1966636100} + serializedVersion: 5 + m_Mass: 0.2 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1966636106 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1966636100} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &1966636107 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1966636100} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65534 + m_SourceCollider: {fileID: 1966636102} + m_DistanceField: {fileID: 0} +--- !u!1 &2019980191 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2019980195} + - component: {fileID: 2019980194} + - component: {fileID: 2019980192} + - component: {fileID: 2019980197} + - component: {fileID: 2019980193} + - component: {fileID: 2019980196} + - component: {fileID: 2019980199} + - component: {fileID: 2019980198} + m_Layer: 10 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &2019980192 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2019980191} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &2019980193 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2019980191} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2019980194 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2019980191} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2019980195 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2019980191} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: 0.7071068, w: 0.7071068} + m_LocalPosition: {x: -0.32876295, y: -0.34346485, z: -0.67946297} + m_LocalScale: {x: 0.20000012, y: 1.2000005, z: 0.2} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1238800305} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} +--- !u!153 &2019980196 +ConfigurableJoint: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2019980191} + serializedVersion: 4 + m_ConnectedBody: {fileID: 491995556} + m_ConnectedArticulationBody: {fileID: 0} + m_Anchor: {x: 0, y: 0.5000001, z: 0} + m_Axis: {x: 1, y: 0, z: 0} + m_AutoConfigureConnectedAnchor: 1 + m_ConnectedAnchor: {x: 0.34088674, y: -0.59736216, z: 0} + m_SecondaryAxis: {x: 0, y: 1, z: 0} + m_XMotion: 0 + m_YMotion: 0 + m_ZMotion: 0 + m_AngularXMotion: 2 + m_AngularYMotion: 0 + m_AngularZMotion: 0 + m_LinearLimitSpring: + spring: 0 + damper: 0 + m_LinearLimit: + limit: 0 + bounciness: 0 + contactDistance: 0 + m_AngularXLimitSpring: + spring: 0 + damper: 0 + m_LowAngularXLimit: + limit: 0 + bounciness: 0 + contactDistance: 0 + m_HighAngularXLimit: + limit: 0 + bounciness: 0 + contactDistance: 0 + m_AngularYZLimitSpring: + spring: 0 + damper: 0 + m_AngularYLimit: + limit: 0 + bounciness: 0 + contactDistance: 0 + m_AngularZLimit: + limit: 0 + bounciness: 0 + contactDistance: 0 + m_TargetPosition: {x: 0, y: 0, z: 0} + m_TargetVelocity: {x: 0, y: 0, z: 0} + m_XDrive: + serializedVersion: 4 + positionSpring: 0 + positionDamper: 0 + maximumForce: 3.4028233e+38 + useAcceleration: 0 + m_YDrive: + serializedVersion: 4 + positionSpring: 0 + positionDamper: 0 + maximumForce: 3.4028233e+38 + useAcceleration: 0 + m_ZDrive: + serializedVersion: 4 + positionSpring: 0 + positionDamper: 0 + maximumForce: 3.4028233e+38 + useAcceleration: 0 + m_TargetRotation: {x: 0, y: 0, z: 0, w: 1} + m_TargetAngularVelocity: {x: 0, y: 0, z: 0} + m_RotationDriveMode: 0 + m_AngularXDrive: + serializedVersion: 4 + positionSpring: 0 + positionDamper: 0 + maximumForce: 3.4028233e+38 + useAcceleration: 0 + m_AngularYZDrive: + serializedVersion: 4 + positionSpring: 0 + positionDamper: 0 + maximumForce: 3.4028233e+38 + useAcceleration: 0 + m_SlerpDrive: + serializedVersion: 4 + positionSpring: 0 + positionDamper: 0 + maximumForce: 3.4028233e+38 + useAcceleration: 0 + m_ProjectionMode: 0 + m_ProjectionDistance: 0.1 + m_ProjectionAngle: 180 + m_ConfiguredInWorldSpace: 0 + m_SwapBodies: 0 + m_BreakForce: Infinity + m_BreakTorque: Infinity + m_EnableCollision: 0 + m_EnablePreprocessing: 1 + m_MassScale: 1 + m_ConnectedMassScale: 1 +--- !u!54 &2019980197 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2019980191} + serializedVersion: 5 + m_Mass: 1 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &2019980198 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2019980191} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &2019980199 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2019980191} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 2019980193} + m_DistanceField: {fileID: 0} +--- !u!1 &2032392335 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2032392336} + - component: {fileID: 2032392338} + - component: {fileID: 2032392337} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2032392336 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2032392335} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1013469397} + m_Father: {fileID: 1323421014} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2032392337 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2032392335} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2032392338 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2032392335} + m_CullTransparentMesh: 0 +--- !u!1 &2102841794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2102841797} + - component: {fileID: 2102841796} + - component: {fileID: 2102841798} + - component: {fileID: 2102841795} + m_Layer: 0 + m_Name: Obi Solver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2102841795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d9704d540ac448439a425526f6b2986, type: 3} + m_Name: + m_EditorClassIdentifier: + solvers: + - {fileID: 2102841796} + substeps: 4 +--- !u!114 &2102841796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d174fab52f0c4b8399f25d5c3ea524c, type: 3} + m_Name: + m_EditorClassIdentifier: + simulateWhenInvisible: 1 + m_Backend: 1 + parameters: + mode: 0 + interpolation: 1 + gravity: {x: 0, y: -9.81, z: 0} + damping: 0.3 + maxAnisotropy: 3 + sleepThreshold: 0.001 + collisionMargin: 0.02 + maxDepenetration: 10 + continuousCollisionDetection: 1 + shockPropagation: 0 + surfaceCollisionIterations: 8 + surfaceCollisionTolerance: 0.005 + gravity: {x: 0, y: -9.81, z: 0} + gravitySpace: 1 + worldLinearInertiaScale: 0 + worldAngularInertiaScale: 0 + distanceConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 1 + bendingConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 1 + particleCollisionConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 1 + particleFrictionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + collisionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + frictionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + skinConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + volumeConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + shapeMatchingConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 0 + tetherConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + pinConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + stitchConstraintParameters: + evaluationOrder: 1 + iterations: 5 + SORFactor: 0.5 + enabled: 0 + densityConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + stretchShearConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + bendTwistConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + chainConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 +--- !u!4 &2102841797 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1201406216} + - {fileID: 1295941532} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2102841798 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5ec309595a8ca48b3a4deae53d6b023d, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1002464896} + - {fileID: 421764872} + - {fileID: 1175446146} + - {fileID: 2102841797} + - {fileID: 1238800305} + - {fileID: 916249664} + - {fileID: 1966636104} + - {fileID: 1556965141} + - {fileID: 1690581338} + - {fileID: 1712865441} diff --git a/Assets/Obi/Samples/RopeAndRod/RopeAndJoints.unity.meta b/Assets/Obi/Samples/RopeAndRod/RopeAndJoints.unity.meta new file mode 100644 index 000000000..1481d6698 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeAndJoints.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c93058d886f2945439a9c39e808506c2 +labels: +- ObiRope +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/RopeAndJointsSettings.lighting b/Assets/Obi/Samples/RopeAndRod/RopeAndJointsSettings.lighting new file mode 100644 index 000000000..fe5050a99 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeAndJointsSettings.lighting @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RopeAndJointsSettings + serializedVersion: 10 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_LightmapPackingMode: 1 + m_LightmapPackingMethod: 0 + m_XAtlasPackingAttempts: 16384 + m_XAtlasBruteForce: 0 + m_XAtlasBlockAlign: 0 + m_XAtlasRepackUnderutilizedLightmaps: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/RopeAndJointsSettings.lighting.meta b/Assets/Obi/Samples/RopeAndRod/RopeAndJointsSettings.lighting.meta new file mode 100644 index 000000000..daa02adbe --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeAndJointsSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 808d599795c1c714ba75acc1e9aafc72 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/RopeCutting.unity b/Assets/Obi/Samples/RopeAndRod/RopeCutting.unity new file mode 100644 index 000000000..ac114473d --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeCutting.unity @@ -0,0 +1,2735 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: c84e6fbe72f9c924a92573b4f662f310, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &21365382 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 21365383} + - component: {fileID: 21365391} + - component: {fileID: 21365390} + - component: {fileID: 21365389} + - component: {fileID: 21365388} + - component: {fileID: 21365387} + - component: {fileID: 21365386} + - component: {fileID: 21365385} + - component: {fileID: 21365384} + - component: {fileID: 21365392} + m_Layer: 10 + m_Name: Obi Rope (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &21365383 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21365382} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0.86010015, z: -0, w: 0.5101253} + m_LocalPosition: {x: 0.152, y: 3.996, z: -0.234} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: -118.656006, z: 0} +--- !u!114 &21365384 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21365382} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88cb6f64c607f46b3b0d7a30a99ed18b, type: 3} + m_Name: + m_EditorClassIdentifier: + cam: {fileID: 1002464895} +--- !u!114 &21365385 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21365382} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 21365389} + m_Target: {fileID: 21365383} + m_ParticleGroup: {fileID: -8864857226987616246, guid: f92460ac39eb444ad8f2bfb5714bb425, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &21365386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21365382} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 21365389} + m_Target: {fileID: 21365383} + m_ParticleGroup: {fileID: -2639811391673711616, guid: d82adbfa2e0744621823a657cc1d4d9a, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &21365387 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21365382} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 16} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &21365388 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21365382} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0.05 + smoothing: 1 + twist: 0 +--- !u!114 &21365389 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21365382} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000490000004a0000004b0000004c0000004d0000004e0000004f000000500000005100000052000000530000005400000055000000560000005700000058000000590000005a0000005b0000005c0000005d0000005e0000005f000000600000006100000062000000630000006400000065000000660000006700000068000000690000006a0000006b0000006c0000006d0000006e0000006f000000700000007100000072000000730000007400000075000000760000007700000078000000790000007a0000007b0000007c0000007d0000007e0000007f000000800000008100000082000000830000008400000085000000860000008700000088000000890000008a0000008b0000008c0000008d0000008e0000008f000000900000009100000092000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 1 + m_SelfCollisions: 1 + restLength_: 5.3759427 + elements: + - particle1: 0 + particle2: 1 + restLength: 0.11737857 + constraintForce: 0 + tearResistance: 1 + - particle1: 1 + particle2: 2 + restLength: 0.11757569 + constraintForce: 0 + tearResistance: 1 + - particle1: 2 + particle2: 3 + restLength: 0.117257625 + constraintForce: 0 + tearResistance: 1 + - particle1: 3 + particle2: 4 + restLength: 0.117347114 + constraintForce: 0 + tearResistance: 1 + - particle1: 4 + particle2: 5 + restLength: 0.11749813 + constraintForce: 0 + tearResistance: 1 + - particle1: 5 + particle2: 6 + restLength: 0.117627345 + constraintForce: 0 + tearResistance: 1 + - particle1: 6 + particle2: 7 + restLength: 0.1176776 + constraintForce: 0 + tearResistance: 1 + - particle1: 7 + particle2: 8 + restLength: 0.11761664 + constraintForce: 0 + tearResistance: 1 + - particle1: 8 + particle2: 9 + restLength: 0.117508255 + constraintForce: 0 + tearResistance: 1 + - particle1: 9 + particle2: 10 + restLength: 0.11763225 + constraintForce: 0 + tearResistance: 1 + - particle1: 10 + particle2: 11 + restLength: 0.11766701 + constraintForce: 0 + tearResistance: 1 + - particle1: 11 + particle2: 12 + restLength: 0.117603354 + constraintForce: 0 + tearResistance: 1 + - particle1: 12 + particle2: 13 + restLength: 0.11748713 + constraintForce: 0 + tearResistance: 1 + - particle1: 13 + particle2: 14 + restLength: 0.11737358 + constraintForce: 0 + tearResistance: 1 + - particle1: 14 + particle2: 15 + restLength: 0.11731443 + constraintForce: 0 + tearResistance: 1 + - particle1: 15 + particle2: 16 + restLength: 0.117334664 + constraintForce: 0 + tearResistance: 1 + - particle1: 16 + particle2: 17 + restLength: 0.117409684 + constraintForce: 0 + tearResistance: 1 + - particle1: 17 + particle2: 18 + restLength: 0.117427535 + constraintForce: 0 + tearResistance: 1 + - particle1: 18 + particle2: 19 + restLength: 0.1173339 + constraintForce: 0 + tearResistance: 1 + - particle1: 19 + particle2: 20 + restLength: 0.11715327 + constraintForce: 0 + tearResistance: 1 + - particle1: 20 + particle2: 21 + restLength: 0.11707407 + constraintForce: 0 + tearResistance: 1 + - particle1: 21 + particle2: 22 + restLength: 0.11728205 + constraintForce: 0 + tearResistance: 1 + - particle1: 22 + particle2: 23 + restLength: 0.11794879 + constraintForce: 0 + tearResistance: 1 + - particle1: 23 + particle2: 24 + restLength: 0.11673033 + constraintForce: 0 + tearResistance: 1 + - particle1: 24 + particle2: 25 + restLength: 0.116027325 + constraintForce: 0 + tearResistance: 1 + - particle1: 25 + particle2: 26 + restLength: 0.115863316 + constraintForce: 0 + tearResistance: 1 + - particle1: 26 + particle2: 27 + restLength: 0.11598866 + constraintForce: 0 + tearResistance: 1 + - particle1: 27 + particle2: 28 + restLength: 0.11614065 + constraintForce: 0 + tearResistance: 1 + - particle1: 28 + particle2: 29 + restLength: 0.11616688 + constraintForce: 0 + tearResistance: 1 + - particle1: 29 + particle2: 30 + restLength: 0.11612464 + constraintForce: 0 + tearResistance: 1 + - particle1: 30 + particle2: 31 + restLength: 0.116126075 + constraintForce: 0 + tearResistance: 1 + - particle1: 31 + particle2: 32 + restLength: 0.1162187 + constraintForce: 0 + tearResistance: 1 + - particle1: 32 + particle2: 33 + restLength: 0.116368376 + constraintForce: 0 + tearResistance: 1 + - particle1: 33 + particle2: 34 + restLength: 0.11650247 + constraintForce: 0 + tearResistance: 1 + - particle1: 34 + particle2: 35 + restLength: 0.11654539 + constraintForce: 0 + tearResistance: 1 + - particle1: 35 + particle2: 36 + restLength: 0.11637627 + constraintForce: 0 + tearResistance: 1 + - particle1: 36 + particle2: 37 + restLength: 0.116367616 + constraintForce: 0 + tearResistance: 1 + - particle1: 37 + particle2: 38 + restLength: 0.116505764 + constraintForce: 0 + tearResistance: 1 + - particle1: 38 + particle2: 39 + restLength: 0.11647182 + constraintForce: 0 + tearResistance: 1 + - particle1: 39 + particle2: 40 + restLength: 0.11628203 + constraintForce: 0 + tearResistance: 1 + - particle1: 40 + particle2: 41 + restLength: 0.11606255 + constraintForce: 0 + tearResistance: 1 + - particle1: 41 + particle2: 42 + restLength: 0.11669507 + constraintForce: 0 + tearResistance: 1 + - particle1: 42 + particle2: 43 + restLength: 0.116644375 + constraintForce: 0 + tearResistance: 1 + - particle1: 43 + particle2: 44 + restLength: 0.11652727 + constraintForce: 0 + tearResistance: 1 + - particle1: 44 + particle2: 45 + restLength: 0.116267465 + constraintForce: 0 + tearResistance: 1 + - particle1: 45 + particle2: 46 + restLength: 0.115411185 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: f92460ac39eb444ad8f2bfb5714bb425, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0.02 + _maxBending: 0.025 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!23 &21365390 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21365382} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &21365391 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21365382} + m_Mesh: {fileID: 827334315} +--- !u!114 &21365392 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21365382} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 011ecd7e601cf4613b5b59bfd9d70895, type: 3} + m_Name: + m_EditorClassIdentifier: + category: 0 +--- !u!1001 &421764872 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a0a5f9e13fa7c47f78547e54896609da, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459882} + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459883} + m_SourcePrefab: {fileID: 100100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!1 &506459881 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + m_PrefabInstance: {fileID: 421764872} + m_PrefabAsset: {fileID: 0} +--- !u!64 &506459882 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 4300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!114 &506459883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 11400000, guid: d368f2c47473d4bfb8dd9f08073cb403, type: 2} + filter: -65535 + m_SourceCollider: {fileID: 506459882} + m_DistanceField: {fileID: 11400000, guid: 5eb5ff1af3a3f4a14977448198c232ae, type: 2} +--- !u!1 &648289270 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 648289271} + - component: {fileID: 648289279} + - component: {fileID: 648289278} + - component: {fileID: 648289277} + - component: {fileID: 648289276} + - component: {fileID: 648289275} + - component: {fileID: 648289274} + - component: {fileID: 648289273} + - component: {fileID: 648289272} + - component: {fileID: 648289280} + m_Layer: 10 + m_Name: Obi Rope (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &648289271 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648289270} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 0.9226075, z: -0, w: 0.38574016} + m_LocalPosition: {x: -0.516, y: 3.215, z: -0.009} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 134.621, z: 0} +--- !u!114 &648289272 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648289270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88cb6f64c607f46b3b0d7a30a99ed18b, type: 3} + m_Name: + m_EditorClassIdentifier: + cam: {fileID: 1002464895} +--- !u!114 &648289273 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648289270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 648289277} + m_Target: {fileID: 648289271} + m_ParticleGroup: {fileID: -8864857226987616246, guid: f92460ac39eb444ad8f2bfb5714bb425, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &648289274 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648289270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 648289277} + m_Target: {fileID: 648289271} + m_ParticleGroup: {fileID: -2639811391673711616, guid: d82adbfa2e0744621823a657cc1d4d9a, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &648289275 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648289270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 16} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &648289276 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648289270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0.05 + smoothing: 1 + twist: 0 +--- !u!114 &648289277 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648289270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 930000009400000095000000960000009700000098000000990000009a0000009b0000009c0000009d0000009e0000009f000000a0000000a1000000a2000000a3000000a4000000a5000000a6000000a7000000a8000000a9000000aa000000ab000000ac000000ad000000ae000000af000000b0000000b1000000b2000000b3000000b4000000b5000000b6000000b7000000b8000000b9000000ba000000bb000000bc000000bd000000be000000bf000000c0000000c1000000c2000000c3000000c4000000c5000000c6000000c7000000c8000000c9000000ca000000cb000000cc000000cd000000ce000000cf000000d0000000d1000000d2000000d3000000d4000000d5000000d6000000d7000000d8000000d9000000da000000db000000dc000000dd000000de000000df000000e0000000e1000000e2000000e3000000e4000000e5000000e6000000e7000000e8000000e9000000ea000000eb000000ec000000ed000000ee000000ef000000f0000000f1000000f2000000f3000000f4000000f5000000f6000000f7000000f8000000f9000000fa000000fb000000fc000000fd000000fe000000ff000000000100000101000002010000030100000401000005010000060100000701000008010000090100000a0100000b0100000c0100000d0100000e0100000f010000100100001101000012010000130100001401000015010000160100001701000018010000190100001a0100001b0100001c0100001d0100001e0100001f010000200100002101000022010000230100002401000025010000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 1 + m_SelfCollisions: 1 + restLength_: 5.3759427 + elements: + - particle1: 147 + particle2: 148 + restLength: 0.11737857 + constraintForce: 0 + tearResistance: 1 + - particle1: 148 + particle2: 149 + restLength: 0.11757569 + constraintForce: 0 + tearResistance: 1 + - particle1: 149 + particle2: 150 + restLength: 0.117257625 + constraintForce: 0 + tearResistance: 1 + - particle1: 150 + particle2: 151 + restLength: 0.117347114 + constraintForce: 0 + tearResistance: 1 + - particle1: 151 + particle2: 152 + restLength: 0.11749813 + constraintForce: 0 + tearResistance: 1 + - particle1: 152 + particle2: 153 + restLength: 0.117627345 + constraintForce: 0 + tearResistance: 1 + - particle1: 153 + particle2: 154 + restLength: 0.1176776 + constraintForce: 0 + tearResistance: 1 + - particle1: 154 + particle2: 155 + restLength: 0.11761664 + constraintForce: 0 + tearResistance: 1 + - particle1: 155 + particle2: 156 + restLength: 0.117508255 + constraintForce: 0 + tearResistance: 1 + - particle1: 156 + particle2: 157 + restLength: 0.11763225 + constraintForce: 0 + tearResistance: 1 + - particle1: 157 + particle2: 158 + restLength: 0.11766701 + constraintForce: 0 + tearResistance: 1 + - particle1: 158 + particle2: 159 + restLength: 0.117603354 + constraintForce: 0 + tearResistance: 1 + - particle1: 159 + particle2: 160 + restLength: 0.11748713 + constraintForce: 0 + tearResistance: 1 + - particle1: 160 + particle2: 161 + restLength: 0.11737358 + constraintForce: 0 + tearResistance: 1 + - particle1: 161 + particle2: 162 + restLength: 0.11731443 + constraintForce: 0 + tearResistance: 1 + - particle1: 162 + particle2: 163 + restLength: 0.117334664 + constraintForce: 0 + tearResistance: 1 + - particle1: 163 + particle2: 164 + restLength: 0.117409684 + constraintForce: 0 + tearResistance: 1 + - particle1: 164 + particle2: 165 + restLength: 0.117427535 + constraintForce: 0 + tearResistance: 1 + - particle1: 165 + particle2: 166 + restLength: 0.1173339 + constraintForce: 0 + tearResistance: 1 + - particle1: 166 + particle2: 167 + restLength: 0.11715327 + constraintForce: 0 + tearResistance: 1 + - particle1: 167 + particle2: 168 + restLength: 0.11707407 + constraintForce: 0 + tearResistance: 1 + - particle1: 168 + particle2: 169 + restLength: 0.11728205 + constraintForce: 0 + tearResistance: 1 + - particle1: 169 + particle2: 170 + restLength: 0.11794879 + constraintForce: 0 + tearResistance: 1 + - particle1: 170 + particle2: 171 + restLength: 0.11673033 + constraintForce: 0 + tearResistance: 1 + - particle1: 171 + particle2: 172 + restLength: 0.116027325 + constraintForce: 0 + tearResistance: 1 + - particle1: 172 + particle2: 173 + restLength: 0.115863316 + constraintForce: 0 + tearResistance: 1 + - particle1: 173 + particle2: 174 + restLength: 0.11598866 + constraintForce: 0 + tearResistance: 1 + - particle1: 174 + particle2: 175 + restLength: 0.11614065 + constraintForce: 0 + tearResistance: 1 + - particle1: 175 + particle2: 176 + restLength: 0.11616688 + constraintForce: 0 + tearResistance: 1 + - particle1: 176 + particle2: 177 + restLength: 0.11612464 + constraintForce: 0 + tearResistance: 1 + - particle1: 177 + particle2: 178 + restLength: 0.116126075 + constraintForce: 0 + tearResistance: 1 + - particle1: 178 + particle2: 179 + restLength: 0.1162187 + constraintForce: 0 + tearResistance: 1 + - particle1: 179 + particle2: 180 + restLength: 0.116368376 + constraintForce: 0 + tearResistance: 1 + - particle1: 180 + particle2: 181 + restLength: 0.11650247 + constraintForce: 0 + tearResistance: 1 + - particle1: 181 + particle2: 182 + restLength: 0.11654539 + constraintForce: 0 + tearResistance: 1 + - particle1: 182 + particle2: 183 + restLength: 0.11637627 + constraintForce: 0 + tearResistance: 1 + - particle1: 183 + particle2: 184 + restLength: 0.116367616 + constraintForce: 0 + tearResistance: 1 + - particle1: 184 + particle2: 185 + restLength: 0.116505764 + constraintForce: 0 + tearResistance: 1 + - particle1: 185 + particle2: 186 + restLength: 0.11647182 + constraintForce: 0 + tearResistance: 1 + - particle1: 186 + particle2: 187 + restLength: 0.11628203 + constraintForce: 0 + tearResistance: 1 + - particle1: 187 + particle2: 188 + restLength: 0.11606255 + constraintForce: 0 + tearResistance: 1 + - particle1: 188 + particle2: 189 + restLength: 0.11669507 + constraintForce: 0 + tearResistance: 1 + - particle1: 189 + particle2: 190 + restLength: 0.116644375 + constraintForce: 0 + tearResistance: 1 + - particle1: 190 + particle2: 191 + restLength: 0.11652727 + constraintForce: 0 + tearResistance: 1 + - particle1: 191 + particle2: 192 + restLength: 0.116267465 + constraintForce: 0 + tearResistance: 1 + - particle1: 192 + particle2: 193 + restLength: 0.115411185 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: f92460ac39eb444ad8f2bfb5714bb425, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0.02 + _maxBending: 0.025 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!23 &648289278 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648289270} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &648289279 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648289270} + m_Mesh: {fileID: 1106207886} +--- !u!114 &648289280 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648289270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 011ecd7e601cf4613b5b59bfd9d70895, type: 3} + m_Name: + m_EditorClassIdentifier: + category: 0 +--- !u!43 &827334315 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &926308008 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 926308010} + - component: {fileID: 926308009} + m_Layer: 0 + m_Name: BurstCollisionWorld + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &926308009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 926308008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1a161c4294214a4fbcb7e9e94800494, type: 3} + m_Name: + m_EditorClassIdentifier: + cellSpans: + m_AlignBytes: 16 +--- !u!4 &926308010 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 926308008} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1002464891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002464896} + - component: {fileID: 1002464895} + - component: {fileID: 1002464893} + - component: {fileID: 1002464892} + - component: {fileID: 1002464897} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1002464892 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!124 &1002464893 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!20 &1002464895 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 75 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1002464896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + serializedVersion: 2 + m_LocalRotation: {x: 0.15760262, y: 0, z: 0, w: 0.98750263} + m_LocalPosition: {x: 0, y: 3.95, z: -4.42} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1002464897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62e83a599724f45a4aa337d74764e572, type: 3} + m_Name: + m_EditorClassIdentifier: + skin: {fileID: 11400000, guid: b90d3c214c99743b0865fc0e0d1f1a15, type: 2} + threadColor: {r: 0, g: 1, b: 1, a: 1} + taskColor: {r: 0, g: 1, b: 0, a: 1} + parallelTaskColor: {r: 1, g: 0.8, b: 0.2, a: 1} + renderTaskColor: {r: 0.2, g: 0.7, b: 1, a: 1} + defaultTaskColor: {r: 1, g: 0.5, b: 0.2, a: 1} + showPercentages: 0 + profileThrottle: 30 +--- !u!43 &1106207886 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &1175446144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1175446146} + - component: {fileID: 1175446145} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1175446145 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.03 + m_NormalBias: 0.01 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1175446146 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + serializedVersion: 2 + m_LocalRotation: {x: 0.41595167, y: -0.26247028, z: 0.26683384, w: 0.82879025} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 56.052002, y: -22.431002, z: 23.642} +--- !u!43 &1194255955 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &1346965641 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1346965650} + - component: {fileID: 1346965645} + - component: {fileID: 1346965644} + - component: {fileID: 1346965642} + - component: {fileID: 1346965647} + - component: {fileID: 1346965646} + - component: {fileID: 1346965643} + - component: {fileID: 1346965648} + - component: {fileID: 1346965649} + - component: {fileID: 1346965651} + m_Layer: 10 + m_Name: Obi Rope + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1346965642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 260100002701000028010000290100002a0100002b0100002c0100002d0100002e0100002f010000300100003101000032010000330100003401000035010000360100003701000038010000390100003a0100003b0100003c0100003d0100003e0100003f010000400100004101000042010000430100004401000045010000460100004701000048010000490100004a0100004b0100004c0100004d0100004e0100004f010000500100005101000052010000530100005401000055010000560100005701000058010000590100005a0100005b0100005c0100005d0100005e0100005f010000600100006101000062010000630100006401000065010000660100006701000068010000690100006a0100006b0100006c0100006d0100006e0100006f010000700100007101000072010000730100007401000075010000760100007701000078010000790100007a0100007b0100007c0100007d0100007e0100007f010000800100008101000082010000830100008401000085010000860100008701000088010000890100008a0100008b0100008c0100008d0100008e0100008f010000900100009101000092010000930100009401000095010000960100009701000098010000990100009a0100009b0100009c0100009d0100009e0100009f010000a0010000a1010000a2010000a3010000a4010000a5010000a6010000a7010000a8010000a9010000aa010000ab010000ac010000ad010000ae010000af010000b0010000b1010000b2010000b3010000b4010000b5010000b6010000b7010000b8010000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 1 + m_SelfCollisions: 1 + restLength_: 5.3759427 + elements: + - particle1: 294 + particle2: 295 + restLength: 0.11737857 + constraintForce: 0 + tearResistance: 1 + - particle1: 295 + particle2: 296 + restLength: 0.11757569 + constraintForce: 0 + tearResistance: 1 + - particle1: 296 + particle2: 297 + restLength: 0.117257625 + constraintForce: 0 + tearResistance: 1 + - particle1: 297 + particle2: 298 + restLength: 0.117347114 + constraintForce: 0 + tearResistance: 1 + - particle1: 298 + particle2: 299 + restLength: 0.11749813 + constraintForce: 0 + tearResistance: 1 + - particle1: 299 + particle2: 300 + restLength: 0.117627345 + constraintForce: 0 + tearResistance: 1 + - particle1: 300 + particle2: 301 + restLength: 0.1176776 + constraintForce: 0 + tearResistance: 1 + - particle1: 301 + particle2: 302 + restLength: 0.11761664 + constraintForce: 0 + tearResistance: 1 + - particle1: 302 + particle2: 303 + restLength: 0.117508255 + constraintForce: 0 + tearResistance: 1 + - particle1: 303 + particle2: 304 + restLength: 0.11763225 + constraintForce: 0 + tearResistance: 1 + - particle1: 304 + particle2: 305 + restLength: 0.11766701 + constraintForce: 0 + tearResistance: 1 + - particle1: 305 + particle2: 306 + restLength: 0.117603354 + constraintForce: 0 + tearResistance: 1 + - particle1: 306 + particle2: 307 + restLength: 0.11748713 + constraintForce: 0 + tearResistance: 1 + - particle1: 307 + particle2: 308 + restLength: 0.11737358 + constraintForce: 0 + tearResistance: 1 + - particle1: 308 + particle2: 309 + restLength: 0.11731443 + constraintForce: 0 + tearResistance: 1 + - particle1: 309 + particle2: 310 + restLength: 0.117334664 + constraintForce: 0 + tearResistance: 1 + - particle1: 310 + particle2: 311 + restLength: 0.117409684 + constraintForce: 0 + tearResistance: 1 + - particle1: 311 + particle2: 312 + restLength: 0.117427535 + constraintForce: 0 + tearResistance: 1 + - particle1: 312 + particle2: 313 + restLength: 0.1173339 + constraintForce: 0 + tearResistance: 1 + - particle1: 313 + particle2: 314 + restLength: 0.11715327 + constraintForce: 0 + tearResistance: 1 + - particle1: 314 + particle2: 315 + restLength: 0.11707407 + constraintForce: 0 + tearResistance: 1 + - particle1: 315 + particle2: 316 + restLength: 0.11728205 + constraintForce: 0 + tearResistance: 1 + - particle1: 316 + particle2: 317 + restLength: 0.11794879 + constraintForce: 0 + tearResistance: 1 + - particle1: 317 + particle2: 318 + restLength: 0.11673033 + constraintForce: 0 + tearResistance: 1 + - particle1: 318 + particle2: 319 + restLength: 0.116027325 + constraintForce: 0 + tearResistance: 1 + - particle1: 319 + particle2: 320 + restLength: 0.115863316 + constraintForce: 0 + tearResistance: 1 + - particle1: 320 + particle2: 321 + restLength: 0.11598866 + constraintForce: 0 + tearResistance: 1 + - particle1: 321 + particle2: 322 + restLength: 0.11614065 + constraintForce: 0 + tearResistance: 1 + - particle1: 322 + particle2: 323 + restLength: 0.11616688 + constraintForce: 0 + tearResistance: 1 + - particle1: 323 + particle2: 324 + restLength: 0.11612464 + constraintForce: 0 + tearResistance: 1 + - particle1: 324 + particle2: 325 + restLength: 0.116126075 + constraintForce: 0 + tearResistance: 1 + - particle1: 325 + particle2: 326 + restLength: 0.1162187 + constraintForce: 0 + tearResistance: 1 + - particle1: 326 + particle2: 327 + restLength: 0.116368376 + constraintForce: 0 + tearResistance: 1 + - particle1: 327 + particle2: 328 + restLength: 0.11650247 + constraintForce: 0 + tearResistance: 1 + - particle1: 328 + particle2: 329 + restLength: 0.11654539 + constraintForce: 0 + tearResistance: 1 + - particle1: 329 + particle2: 330 + restLength: 0.11637627 + constraintForce: 0 + tearResistance: 1 + - particle1: 330 + particle2: 331 + restLength: 0.116367616 + constraintForce: 0 + tearResistance: 1 + - particle1: 331 + particle2: 332 + restLength: 0.116505764 + constraintForce: 0 + tearResistance: 1 + - particle1: 332 + particle2: 333 + restLength: 0.11647182 + constraintForce: 0 + tearResistance: 1 + - particle1: 333 + particle2: 334 + restLength: 0.11628203 + constraintForce: 0 + tearResistance: 1 + - particle1: 334 + particle2: 335 + restLength: 0.11606255 + constraintForce: 0 + tearResistance: 1 + - particle1: 335 + particle2: 336 + restLength: 0.11669507 + constraintForce: 0 + tearResistance: 1 + - particle1: 336 + particle2: 337 + restLength: 0.116644375 + constraintForce: 0 + tearResistance: 1 + - particle1: 337 + particle2: 338 + restLength: 0.11652727 + constraintForce: 0 + tearResistance: 1 + - particle1: 338 + particle2: 339 + restLength: 0.116267465 + constraintForce: 0 + tearResistance: 1 + - particle1: 339 + particle2: 340 + restLength: 0.115411185 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: f92460ac39eb444ad8f2bfb5714bb425, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0.02 + _maxBending: 0.025 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &1346965643 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965642} + m_Target: {fileID: 1346965650} + m_ParticleGroup: {fileID: -2639811391673711616, guid: d82adbfa2e0744621823a657cc1d4d9a, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!23 &1346965644 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1346965645 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Mesh: {fileID: 1194255955} +--- !u!114 &1346965646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 16} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &1346965647 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0.05 + smoothing: 1 + twist: 0 +--- !u!114 &1346965648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965642} + m_Target: {fileID: 1346965650} + m_ParticleGroup: {fileID: -8864857226987616246, guid: f92460ac39eb444ad8f2bfb5714bb425, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1346965649 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88cb6f64c607f46b3b0d7a30a99ed18b, type: 3} + m_Name: + m_EditorClassIdentifier: + cam: {fileID: 1002464895} +--- !u!4 &1346965650 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 3.63, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1346965651 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 011ecd7e601cf4613b5b59bfd9d70895, type: 3} + m_Name: + m_EditorClassIdentifier: + category: 0 +--- !u!1 &1896057539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1896057543} + - component: {fileID: 1896057542} + - component: {fileID: 1896057541} + - component: {fileID: 1896057540} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1896057540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1896057539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1896057541 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1896057539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1896057542 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1896057539} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_UseReflectionProbes: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1896057543 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1896057539} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2009578511} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &2009578510 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2009578511} + - component: {fileID: 2009578513} + - component: {fileID: 2009578512} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2009578511 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2009578510} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1896057543} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 103, y: 26} + m_SizeDelta: {x: 160, y: 23.1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2009578512 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2009578510} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 20 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Click and drag to cut the ropes. +--- !u!222 &2009578513 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2009578510} + m_CullTransparentMesh: 0 +--- !u!1 &2102841794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2102841797} + - component: {fileID: 2102841796} + - component: {fileID: 2102841795} + m_Layer: 0 + m_Name: Obi Solver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2102841795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d9704d540ac448439a425526f6b2986, type: 3} + m_Name: + m_EditorClassIdentifier: + solvers: + - {fileID: 2102841796} + substeps: 3 +--- !u!114 &2102841796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d174fab52f0c4b8399f25d5c3ea524c, type: 3} + m_Name: + m_EditorClassIdentifier: + simulateWhenInvisible: 1 + m_Backend: 1 + parameters: + mode: 0 + interpolation: 0 + gravity: {x: 0, y: -9.81, z: 0} + damping: 0.2 + maxAnisotropy: 3 + sleepThreshold: 0.0001 + collisionMargin: 0.025 + maxDepenetration: 10 + continuousCollisionDetection: 1 + shockPropagation: 0 + surfaceCollisionIterations: 8 + surfaceCollisionTolerance: 0.01 + gravity: {x: 0, y: -9.81, z: 0} + gravitySpace: 1 + worldLinearInertiaScale: 0 + worldAngularInertiaScale: 0 + distanceConstraintParameters: + evaluationOrder: 0 + iterations: 2 + SORFactor: 1 + enabled: 1 + bendingConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + particleCollisionConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 1 + particleFrictionConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 1 + collisionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + frictionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + skinConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + volumeConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + shapeMatchingConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + tetherConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + pinConstraintParameters: + evaluationOrder: 1 + iterations: 5 + SORFactor: 1 + enabled: 0 + stitchConstraintParameters: + evaluationOrder: 0 + iterations: 5 + SORFactor: 1 + enabled: 0 + densityConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + stretchShearConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + bendTwistConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + chainConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 +--- !u!4 &2102841797 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1346965650} + - {fileID: 648289271} + - {fileID: 21365383} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1002464896} + - {fileID: 421764872} + - {fileID: 1175446146} + - {fileID: 2102841797} + - {fileID: 926308010} + - {fileID: 1896057543} diff --git a/Assets/Obi/Samples/RopeAndRod/RopeCutting.unity.meta b/Assets/Obi/Samples/RopeAndRod/RopeCutting.unity.meta new file mode 100644 index 000000000..506365ecf --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeCutting.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 14b5ad4d00c9f4b118c479057ad1a580 +labels: +- ObiRope +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/RopeCuttingSettings.lighting b/Assets/Obi/Samples/RopeAndRod/RopeCuttingSettings.lighting new file mode 100644 index 000000000..a85662d38 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeCuttingSettings.lighting @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RopeCuttingSettings + serializedVersion: 10 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_LightmapPackingMode: 1 + m_LightmapPackingMethod: 0 + m_XAtlasPackingAttempts: 16384 + m_XAtlasBruteForce: 0 + m_XAtlasBlockAlign: 0 + m_XAtlasRepackUnderutilizedLightmaps: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/RopeCuttingSettings.lighting.meta b/Assets/Obi/Samples/RopeAndRod/RopeCuttingSettings.lighting.meta new file mode 100644 index 000000000..3eb1e8175 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeCuttingSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c84e6fbe72f9c924a92573b4f662f310 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/RopeGrapplingHook.unity b/Assets/Obi/Samples/RopeAndRod/RopeGrapplingHook.unity new file mode 100644 index 000000000..a17815072 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeGrapplingHook.unity @@ -0,0 +1,1554 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: fa9f52281c51b3f48befaac31787c4bd, type: 2} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &694935029 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 694935034} + - component: {fileID: 694935033} + - component: {fileID: 694935032} + - component: {fileID: 694935031} + - component: {fileID: 694935030} + m_Layer: 0 + m_Name: Cube (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &694935030 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 694935029} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0.05 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 694935032} + m_DistanceField: {fileID: 0} +--- !u!23 &694935031 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 694935029} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &694935032 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 694935029} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &694935033 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 694935029} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &694935034 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 694935029} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.92, y: 11.57, z: 0} + m_LocalScale: {x: 1.2072676, y: 1.1407216, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &942810411 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 942810416} + - component: {fileID: 942810415} + - component: {fileID: 942810413} + - component: {fileID: 942810412} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &942810412 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 942810411} + m_Enabled: 1 +--- !u!124 &942810413 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 942810411} + m_Enabled: 1 +--- !u!20 &942810415 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 942810411} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 71.6 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &942810416 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 942810411} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 4.8, z: -13.26} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1006563103 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1006563107} + - component: {fileID: 1006563106} + - component: {fileID: 1006563105} + - component: {fileID: 1006563104} + - component: {fileID: 1006563108} + m_Layer: 0 + m_Name: Cube (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1006563104 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1006563103} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1006563105 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1006563103} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1006563106 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1006563103} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1006563107 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1006563103} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.07, z: 0} + m_LocalScale: {x: 19.468725, y: 1.1407216, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1006563108 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1006563103} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 1006563105} + m_DistanceField: {fileID: 0} +--- !u!1 &1201433689 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1201433690} + - component: {fileID: 1201433691} + m_Layer: 0 + m_Name: Hook + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1201433690 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201433689} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1247776992} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1201433691 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201433689} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b77478c97cefb4dec9cc85236f7c5fca, type: 3} + m_Name: + m_EditorClassIdentifier: + solver: {fileID: 2108375382} + character: {fileID: 1247776995} + material: {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + hookResolution: 0.5 + hookExtendRetractSpeed: 4 + hookShootSpeed: 30 + particlePoolSize: 100 +--- !u!1 &1247776987 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1247776992} + - component: {fileID: 1247776991} + - component: {fileID: 1247776989} + - component: {fileID: 1247776988} + - component: {fileID: 1247776995} + - component: {fileID: 1247776994} + - component: {fileID: 1247776990} + - component: {fileID: 1247776993} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!54 &1247776988 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1247776987} + serializedVersion: 5 + m_Mass: 2 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 120 + m_CollisionDetection: 0 +--- !u!23 &1247776989 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1247776987} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!136 &1247776990 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1247776987} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1247776991 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1247776987} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1247776992 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1247776987} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -6.82, y: 6.18, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1201433690} + m_Father: {fileID: 2108375383} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1247776993 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1247776987} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82b0f164ac14247fd8a566109fbbe771, type: 3} + m_Name: + m_EditorClassIdentifier: + acceleration: 20 + maxSpeed: 10 + jumpPower: 4 +--- !u!114 &1247776994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1247776987} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &1247776995 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1247776987} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -131071 + m_SourceCollider: {fileID: 1247776990} + m_DistanceField: {fileID: 0} +--- !u!1 &1465091929 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1465091930} + - component: {fileID: 1465091932} + - component: {fileID: 1465091931} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1465091930 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1465091929} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1997975594} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 291, y: 42.5} + m_SizeDelta: {x: 542, y: 66} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1465091931 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1465091929} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.184, g: 0.184, b: 0.184, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 5 + m_MaxSize: 200 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Use A,D to move the character. + + Left mouse button to launch the hook. + Click again to release it. + + When the hook is attached, change its length + using W,S.' +--- !u!222 &1465091932 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1465091929} + m_CullTransparentMesh: 0 +--- !u!1 &1641461104 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1641461108} + - component: {fileID: 1641461107} + - component: {fileID: 1641461106} + - component: {fileID: 1641461105} + - component: {fileID: 1641461109} + m_Layer: 0 + m_Name: Cube (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1641461105 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1641461104} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1641461106 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1641461104} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1641461107 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1641461104} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1641461108 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1641461104} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.5, y: 7.46, z: 0} + m_LocalScale: {x: 1.2072676, y: 1.1407216, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1641461109 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1641461104} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0.05 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 1641461106} + m_DistanceField: {fileID: 0} +--- !u!1 &1694332649 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1694332650} + - component: {fileID: 1694332654} + - component: {fileID: 1694332653} + - component: {fileID: 1694332652} + - component: {fileID: 1694332651} + m_Layer: 5 + m_Name: FPSDisplay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1694332650 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694332649} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1997975594} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 99, y: -31} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1694332651 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694332649} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &1694332652 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694332649} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f14f49b61044e49ebb2f29511f2b3f41, type: 3} + m_Name: + m_EditorClassIdentifier: + updateInterval: 0.5 + showMedian: 0 + medianLearnrate: 0.05 +--- !u!114 &1694332653 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694332649} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1694332654 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694332649} + m_CullTransparentMesh: 0 +--- !u!1 &1735419977 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1735419981} + - component: {fileID: 1735419980} + - component: {fileID: 1735419979} + - component: {fileID: 1735419978} + - component: {fileID: 1735419982} + m_Layer: 0 + m_Name: Cube (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1735419978 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1735419977} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1735419979 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1735419977} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1735419980 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1735419977} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1735419981 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1735419977} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3.5, y: 7.46, z: 0} + m_LocalScale: {x: 3.9395108, y: 1.1407216, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1735419982 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1735419977} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0.05 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 1735419979} + m_DistanceField: {fileID: 0} +--- !u!1 &1954069164 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1954069166} + - component: {fileID: 1954069165} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1954069165 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1954069164} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1954069166 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1954069164} + serializedVersion: 2 + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1997975590 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1997975594} + - component: {fileID: 1997975593} + - component: {fileID: 1997975592} + - component: {fileID: 1997975591} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1997975591 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1997975590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1997975592 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1997975590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1997975593 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1997975590} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_UseReflectionProbes: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1997975594 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1997975590} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1465091930} + - {fileID: 1694332650} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &2108375380 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2108375383} + - component: {fileID: 2108375382} + - component: {fileID: 2108375381} + m_Layer: 0 + m_Name: Obi Solver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2108375381 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2108375380} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d9704d540ac448439a425526f6b2986, type: 3} + m_Name: + m_EditorClassIdentifier: + solvers: + - {fileID: 2108375382} + substeps: 8 +--- !u!114 &2108375382 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2108375380} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d174fab52f0c4b8399f25d5c3ea524c, type: 3} + m_Name: + m_EditorClassIdentifier: + simulateWhenInvisible: 1 + m_Backend: 1 + parameters: + mode: 0 + interpolation: 0 + gravity: {x: 0, y: -9.81, z: 0} + damping: 0 + maxAnisotropy: 3 + sleepThreshold: 0.0001 + collisionMargin: 0.02 + maxDepenetration: 10 + continuousCollisionDetection: 1 + shockPropagation: 0 + surfaceCollisionIterations: 8 + surfaceCollisionTolerance: 0.005 + gravity: {x: 0, y: -9.81, z: 0} + gravitySpace: 1 + worldLinearInertiaScale: 0 + worldAngularInertiaScale: 0 + distanceConstraintParameters: + evaluationOrder: 0 + iterations: 2 + SORFactor: 1 + enabled: 1 + bendingConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + particleCollisionConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + particleFrictionConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + collisionConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 1 + frictionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + skinConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + volumeConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + shapeMatchingConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + tetherConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + pinConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + stitchConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + densityConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + stretchShearConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + bendTwistConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + chainConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 +--- !u!4 &2108375383 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2108375380} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1247776992} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 942810416} + - {fileID: 1954069166} + - {fileID: 1735419981} + - {fileID: 1006563107} + - {fileID: 1641461108} + - {fileID: 2108375383} + - {fileID: 694935034} + - {fileID: 1997975594} diff --git a/Assets/Obi/Samples/RopeAndRod/RopeGrapplingHook.unity.meta b/Assets/Obi/Samples/RopeAndRod/RopeGrapplingHook.unity.meta new file mode 100644 index 000000000..c2a52198a --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeGrapplingHook.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f403f5793cdb042dc8552ea3329b7bfa +labels: +- ObiRope +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/RopeGrapplingHookSettings.lighting b/Assets/Obi/Samples/RopeAndRod/RopeGrapplingHookSettings.lighting new file mode 100644 index 000000000..466ea222c --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeGrapplingHookSettings.lighting @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RopeGrapplingHookSettings + serializedVersion: 10 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_LightmapPackingMode: 1 + m_LightmapPackingMethod: 0 + m_XAtlasPackingAttempts: 16384 + m_XAtlasBruteForce: 0 + m_XAtlasBlockAlign: 0 + m_XAtlasRepackUnderutilizedLightmaps: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/RopeGrapplingHookSettings.lighting.meta b/Assets/Obi/Samples/RopeAndRod/RopeGrapplingHookSettings.lighting.meta new file mode 100644 index 000000000..f9cb70e63 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeGrapplingHookSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fa9f52281c51b3f48befaac31787c4bd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/RopeNet.unity b/Assets/Obi/Samples/RopeAndRod/RopeNet.unity new file mode 100644 index 000000000..984346d1d --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeNet.unity @@ -0,0 +1,477 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: 101ef2ef375e7854ebb35cc857675c8c, type: 2} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &65402943 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalScale.x + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalScale.y + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalScale.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.x + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.y + value: -5 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a0a5f9e13fa7c47f78547e54896609da, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 65402946} + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 65402945} + m_SourcePrefab: {fileID: 100100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!1 &65402944 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + m_PrefabInstance: {fileID: 65402943} + m_PrefabAsset: {fileID: 0} +--- !u!114 &65402945 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 65402944} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 65402946} + m_DistanceField: {fileID: 11400000, guid: 5eb5ff1af3a3f4a14977448198c232ae, type: 2} +--- !u!64 &65402946 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 65402944} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 4300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!1 &335576535 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 335576538} + - component: {fileID: 335576537} + - component: {fileID: 335576536} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &335576536 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 335576535} + m_Enabled: 1 +--- !u!20 &335576537 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 335576535} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &335576538 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 335576535} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 2, z: -15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1750272832 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1750272834} + - component: {fileID: 1750272833} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1750272833 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1750272832} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1750272834 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1750272832} + serializedVersion: 2 + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &2144190319 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2144190321} + - component: {fileID: 2144190320} + m_Layer: 0 + m_Name: NetGenerator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2144190320 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2144190319} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 83e341aa1a9a14825ab84ad04cd5f44c, type: 3} + m_Name: + m_EditorClassIdentifier: + material: {fileID: 2100000, guid: 4cc7d840058664f0f9a679178b33b5e4, type: 2} + resolution: {x: 4, y: 4} + size: {x: 2, y: 2} + nodeSize: 0.2 +--- !u!4 &2144190321 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2144190319} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 335576538} + - {fileID: 1750272834} + - {fileID: 2144190321} + - {fileID: 65402943} diff --git a/Assets/Obi/Samples/RopeAndRod/RopeNet.unity.meta b/Assets/Obi/Samples/RopeAndRod/RopeNet.unity.meta new file mode 100644 index 000000000..b889597a0 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeNet.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 68709b54f964a4ab8bc457f533eeeb91 +labels: +- ObiRope +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/RopeNetSettings.lighting b/Assets/Obi/Samples/RopeAndRod/RopeNetSettings.lighting new file mode 100644 index 000000000..c2d2ab301 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeNetSettings.lighting @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RopeNetSettings + serializedVersion: 10 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_LightmapPackingMode: 1 + m_LightmapPackingMethod: 0 + m_XAtlasPackingAttempts: 16384 + m_XAtlasBruteForce: 0 + m_XAtlasBlockAlign: 0 + m_XAtlasRepackUnderutilizedLightmaps: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 1 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/RopeNetSettings.lighting.meta b/Assets/Obi/Samples/RopeAndRod/RopeNetSettings.lighting.meta new file mode 100644 index 000000000..888c15ba3 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeNetSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 101ef2ef375e7854ebb35cc857675c8c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/RopeShowcase.unity b/Assets/Obi/Samples/RopeAndRod/RopeShowcase.unity new file mode 100644 index 000000000..daaab2a84 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeShowcase.unity @@ -0,0 +1,4000 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: b34239a2c17961e4eb6d3aaa44b2d672, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &11813904 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 11813905} + - component: {fileID: 11813908} + - component: {fileID: 11813907} + - component: {fileID: 11813906} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &11813905 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11813904} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.21133643, y: 0.21133643, z: 2.4164045} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1415489122} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &11813906 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11813904} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &11813907 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11813904} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &11813908 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11813904} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &206877714 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 206877718} + - component: {fileID: 206877717} + - component: {fileID: 206877716} + - component: {fileID: 206877715} + - component: {fileID: 206877719} + - component: {fileID: 206877720} + m_Layer: 0 + m_Name: Cube (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &206877715 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 206877714} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &206877716 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 206877714} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &206877717 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 206877714} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &206877718 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 206877714} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: 0.38268343, w: 0.92387956} + m_LocalPosition: {x: 1.97, y: 0.8, z: -0.142} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1376993203} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 45} +--- !u!114 &206877719 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 206877714} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b63f5717a039e488ab8ccfb80eda50e6, type: 3} + m_Name: + m_EditorClassIdentifier: + highlightColor: {r: 1, g: 0, b: 0, a: 1} +--- !u!114 &206877720 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 206877714} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0.05 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 206877716} + m_DistanceField: {fileID: 0} +--- !u!43 &228993792 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &256028320 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 256028324} + - component: {fileID: 256028323} + - component: {fileID: 256028322} + - component: {fileID: 256028321} + - component: {fileID: 256028325} + - component: {fileID: 256028326} + m_Layer: 0 + m_Name: Cube (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &256028321 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 256028320} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &256028322 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 256028320} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &256028323 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 256028320} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &256028324 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 256028320} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.98, y: 0.79, z: -0.142} + m_LocalScale: {x: 0.7, y: 0.7, z: 0.7} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1376993203} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &256028325 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 256028320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b63f5717a039e488ab8ccfb80eda50e6, type: 3} + m_Name: + m_EditorClassIdentifier: + highlightColor: {r: 0.07586217, g: 1, b: 0, a: 1} +--- !u!114 &256028326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 256028320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0.05 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 256028322} + m_DistanceField: {fileID: 0} +--- !u!1 &283112602 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 283112603} + - component: {fileID: 283112608} + - component: {fileID: 283112607} + - component: {fileID: 283112605} + - component: {fileID: 283112604} + - component: {fileID: 283112606} + - component: {fileID: 283112610} + - component: {fileID: 283112609} + m_Layer: 10 + m_Name: Obi Rope + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &283112603 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283112602} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2.06, y: 0, z: -0.82} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1415489122} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &283112604 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283112602} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 283112606} + m_Target: {fileID: 1872762459} + m_ParticleGroup: {fileID: -8864857226987616246, guid: 9d8ad1e0aac8f48deb9f3cda92974152, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &283112605 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283112602} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 283112606} + m_Target: {fileID: 11813905} + m_ParticleGroup: {fileID: -2639811391673711616, guid: 9d8ad1e0aac8f48deb9f3cda92974152, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &283112606 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283112602} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000490000004a0000004b0000004c0000004d0000004e0000004f000000500000005100000052000000530000005400000055000000560000005700000058000000590000005a0000005b0000005c0000005d0000005e0000005f000000600000006100000062000000630000006400000065000000660000006700000068000000690000006a0000006b0000006c0000006d0000006e0000006f00000070000000710000007200000073000000740000007500000076000000770000007800000079000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 4.014817 + elements: + - particle1: 0 + particle2: 1 + restLength: 0.19104075 + constraintForce: 0 + tearResistance: 1 + - particle1: 1 + particle2: 2 + restLength: 0.18882072 + constraintForce: 0 + tearResistance: 1 + - particle1: 2 + particle2: 3 + restLength: 0.19130969 + constraintForce: 0 + tearResistance: 1 + - particle1: 3 + particle2: 4 + restLength: 0.19190359 + constraintForce: 0 + tearResistance: 1 + - particle1: 4 + particle2: 5 + restLength: 0.19226003 + constraintForce: 0 + tearResistance: 1 + - particle1: 5 + particle2: 6 + restLength: 0.19104254 + constraintForce: 0 + tearResistance: 1 + - particle1: 6 + particle2: 7 + restLength: 0.19071305 + constraintForce: 0 + tearResistance: 1 + - particle1: 7 + particle2: 8 + restLength: 0.19154373 + constraintForce: 0 + tearResistance: 1 + - particle1: 8 + particle2: 9 + restLength: 0.19181116 + constraintForce: 0 + tearResistance: 1 + - particle1: 9 + particle2: 10 + restLength: 0.19124432 + constraintForce: 0 + tearResistance: 1 + - particle1: 10 + particle2: 11 + restLength: 0.19148356 + constraintForce: 0 + tearResistance: 1 + - particle1: 11 + particle2: 12 + restLength: 0.1915547 + constraintForce: 0 + tearResistance: 1 + - particle1: 12 + particle2: 13 + restLength: 0.19083694 + constraintForce: 0 + tearResistance: 1 + - particle1: 13 + particle2: 14 + restLength: 0.1917516 + constraintForce: 0 + tearResistance: 1 + - particle1: 14 + particle2: 15 + restLength: 0.19204319 + constraintForce: 0 + tearResistance: 1 + - particle1: 15 + particle2: 16 + restLength: 0.19159764 + constraintForce: 0 + tearResistance: 1 + - particle1: 16 + particle2: 17 + restLength: 0.19113648 + constraintForce: 0 + tearResistance: 1 + - particle1: 17 + particle2: 18 + restLength: 0.19116187 + constraintForce: 0 + tearResistance: 1 + - particle1: 18 + particle2: 19 + restLength: 0.19208884 + constraintForce: 0 + tearResistance: 1 + - particle1: 19 + particle2: 20 + restLength: 0.19226182 + constraintForce: 0 + tearResistance: 1 + - particle1: 20 + particle2: 21 + restLength: 0.1872108 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: 9d8ad1e0aac8f48deb9f3cda92974152, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0.04 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!23 &283112607 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283112602} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &283112608 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283112602} + m_Mesh: {fileID: 470645544} +--- !u!114 &283112609 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283112602} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 6} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &283112610 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283112602} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!1001 &421764872 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a0a5f9e13fa7c47f78547e54896609da, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459882} + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459883} + m_SourcePrefab: {fileID: 100100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!1 &458966907 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 458966911} + - component: {fileID: 458966910} + - component: {fileID: 458966909} + - component: {fileID: 458966908} + - component: {fileID: 458966912} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &458966908 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 458966907} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &458966909 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 458966907} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &458966910 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 458966907} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &458966911 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 458966907} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.676, y: 2.471, z: -0.13173246} + m_LocalScale: {x: 0.26776046, y: 0.26776043, z: 0.75408345} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1201406216} + m_Father: {fileID: 1376993203} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!95 &458966912 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 458966907} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 6081905a3b44e41268651052f0230595, type: 2} + m_CullingMode: 0 + m_UpdateMode: 1 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 1 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!43 &470645544 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &506459881 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + m_PrefabInstance: {fileID: 421764872} + m_PrefabAsset: {fileID: 0} +--- !u!64 &506459882 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 4300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!114 &506459883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 506459882} + m_DistanceField: {fileID: 0} +--- !u!43 &513051649 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &515194302 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 515194303} + - component: {fileID: 515194304} + m_Layer: 0 + m_Name: Bending + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &515194303 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 515194302} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -4.998, y: 2.323, z: 2.77} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1346965650} + - {fileID: 1742644164} + - {fileID: 913365225} + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!95 &515194304 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 515194302} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 3944bed00b7b34420a9a4cfad30c9ce0, type: 2} + m_CullingMode: 0 + m_UpdateMode: 1 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 1 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!1 &592657015 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 592657017} + - component: {fileID: 592657016} + m_Layer: 0 + m_Name: BurstCollisionWorld + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &592657016 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 592657015} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1a161c4294214a4fbcb7e9e94800494, type: 3} + m_Name: + m_EditorClassIdentifier: + cellSpans: + m_AlignBytes: 16 +--- !u!4 &592657017 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 592657015} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &656652120 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 656652124} + - component: {fileID: 656652123} + - component: {fileID: 656652122} + - component: {fileID: 656652121} + - component: {fileID: 656652125} + - component: {fileID: 656652126} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &656652121 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656652120} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!135 &656652122 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656652120} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &656652123 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656652120} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &656652124 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656652120} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.45, y: 0.77, z: -0.142} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1376993203} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &656652125 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656652120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b63f5717a039e488ab8ccfb80eda50e6, type: 3} + m_Name: + m_EditorClassIdentifier: + highlightColor: {r: 0, g: 0.5862069, b: 1, a: 1} +--- !u!114 &656652126 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656652120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 656652122} + m_DistanceField: {fileID: 0} +--- !u!1 &913365224 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 913365225} + - component: {fileID: 913365230} + - component: {fileID: 913365229} + - component: {fileID: 913365226} + - component: {fileID: 913365231} + - component: {fileID: 913365228} + - component: {fileID: 913365227} + - component: {fileID: 913365232} + m_Layer: 10 + m_Name: Obi Rope Flaccid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &913365225 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 913365224} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.02, y: 0, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 515194303} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &913365226 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 913365224} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 7a0000007b0000007c0000007d0000007e0000007f000000800000008100000082000000830000008400000085000000860000008700000088000000890000008a0000008b0000008c0000008d0000008e0000008f000000900000009100000092000000930000009400000095000000960000009700000098000000990000009a0000009b0000009c0000009d0000009e0000009f000000a0000000a1000000a2000000a3000000a4000000a5000000a6000000a7000000a8000000a9000000aa000000ab000000ac000000ad000000ae000000af000000b0000000b1000000b2000000b3000000b4000000b5000000b6000000b7000000b8000000b9000000ba000000bb000000bc000000bd000000be000000bf000000c0000000c1000000c2000000c3000000c4000000c5000000c6000000c7000000c8000000c9000000ca000000cb000000cc000000cd000000ce000000cf000000d0000000d1000000d2000000d3000000d4000000d5000000d6000000d7000000d8000000d9000000da000000db000000dc000000dd000000de000000df000000e0000000e1000000e2000000e3000000e4000000e5000000e6000000e7000000e8000000e9000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 2 + elements: + - particle1: 122 + particle2: 123 + restLength: 0.18133646 + constraintForce: 0 + tearResistance: 1 + - particle1: 123 + particle2: 124 + restLength: 0.18116945 + constraintForce: 0 + tearResistance: 1 + - particle1: 124 + particle2: 125 + restLength: 0.18210343 + constraintForce: 0 + tearResistance: 1 + - particle1: 125 + particle2: 126 + restLength: 0.18220028 + constraintForce: 0 + tearResistance: 1 + - particle1: 126 + particle2: 127 + restLength: 0.18192291 + constraintForce: 0 + tearResistance: 1 + - particle1: 127 + particle2: 128 + restLength: 0.18203682 + constraintForce: 0 + tearResistance: 1 + - particle1: 128 + particle2: 129 + restLength: 0.18204802 + constraintForce: 0 + tearResistance: 1 + - particle1: 129 + particle2: 130 + restLength: 0.18179289 + constraintForce: 0 + tearResistance: 1 + - particle1: 130 + particle2: 131 + restLength: 0.18189213 + constraintForce: 0 + tearResistance: 1 + - particle1: 131 + particle2: 132 + restLength: 0.18271154 + constraintForce: 0 + tearResistance: 1 + - particle1: 132 + particle2: 133 + restLength: 0.18078607 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: d82adbfa2e0744621823a657cc1d4d9a, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0.04 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &913365227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 913365224} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 913365226} + m_Target: {fileID: 913365225} + m_ParticleGroup: {fileID: -2639811391673711616, guid: d82adbfa2e0744621823a657cc1d4d9a, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &913365228 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 913365224} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 6} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!23 &913365229 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 913365224} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &913365230 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 913365224} + m_Mesh: {fileID: 228993792} +--- !u!114 &913365231 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 913365224} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!114 &913365232 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 913365224} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 913365226} + m_Target: {fileID: 913365225} + m_ParticleGroup: {fileID: 8225853497016287227, guid: d82adbfa2e0744621823a657cc1d4d9a, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!1 &948693937 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 948693938} + - component: {fileID: 948693942} + - component: {fileID: 948693941} + - component: {fileID: 948693940} + - component: {fileID: 948693939} + m_Layer: 5 + m_Name: FPSDisplay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &948693938 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 948693937} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1067532270} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 99, y: -31} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &948693939 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 948693937} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &948693940 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 948693937} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f14f49b61044e49ebb2f29511f2b3f41, type: 3} + m_Name: + m_EditorClassIdentifier: + updateInterval: 0.5 + showMedian: 0 + medianLearnrate: 0.05 +--- !u!114 &948693941 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 948693937} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &948693942 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 948693937} + m_CullTransparentMesh: 0 +--- !u!1 &1002464891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002464896} + - component: {fileID: 1002464895} + - component: {fileID: 1002464893} + - component: {fileID: 1002464892} + - component: {fileID: 1002464897} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1002464892 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!124 &1002464893 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!20 &1002464895 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 75 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1002464896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + serializedVersion: 2 + m_LocalRotation: {x: 0.15760262, y: 0, z: 0, w: 0.98750263} + m_LocalPosition: {x: 0, y: 3.95, z: -4.42} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1002464897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62e83a599724f45a4aa337d74764e572, type: 3} + m_Name: + m_EditorClassIdentifier: + skin: {fileID: 11400000, guid: b90d3c214c99743b0865fc0e0d1f1a15, type: 2} + threadColor: {r: 0, g: 1, b: 1, a: 1} + taskColor: {r: 0, g: 1, b: 0, a: 1} + parallelTaskColor: {r: 1, g: 0.8, b: 0.2, a: 1} + renderTaskColor: {r: 0.2, g: 0.7, b: 1, a: 1} + defaultTaskColor: {r: 1, g: 0.5, b: 0.2, a: 1} + showPercentages: 0 + profileThrottle: 30 +--- !u!1 &1067532266 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1067532270} + - component: {fileID: 1067532269} + - component: {fileID: 1067532268} + - component: {fileID: 1067532267} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1067532267 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1067532266} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1067532268 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1067532266} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1067532269 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1067532266} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_UseReflectionProbes: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1067532270 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1067532266} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 948693938} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1175446144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1175446146} + - component: {fileID: 1175446145} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1175446145 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.03 + m_NormalBias: 0.01 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1175446146 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + serializedVersion: 2 + m_LocalRotation: {x: 0.41595167, y: -0.26247028, z: 0.26683384, w: 0.82879025} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 56.052002, y: -22.431002, z: 23.642} +--- !u!1 &1201406215 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1201406216} + - component: {fileID: 1201406220} + - component: {fileID: 1201406221} + - component: {fileID: 1201406217} + - component: {fileID: 1201406222} + - component: {fileID: 1201406219} + - component: {fileID: 1201406218} + m_Layer: 10 + m_Name: Obi Rope + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1201406216 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071068} + m_LocalPosition: {x: 0, y: -4.23, z: 0} + m_LocalScale: {x: 3.7346814, y: 3.7346818, z: 1.3261132} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 458966911} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90.00001} +--- !u!114 &1201406217 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: ea000000eb000000ec000000ed000000ee000000ef000000f0000000f1000000f2000000f3000000f4000000f5000000f6000000f7000000f8000000f9000000fa000000fb000000fc000000fd000000fe000000ff000000000100000101000002010000030100000401000005010000060100000701000008010000090100000a0100000b0100000c0100000d0100000e0100000f010000100100001101000012010000130100001401000015010000160100001701000018010000190100001a0100001b0100001c0100001d0100001e0100001f010000200100002101000022010000230100002401000025010000260100002701000028010000290100002a0100002b0100002c0100002d0100002e0100002f010000300100003101000032010000330100003401000035010000360100003701000038010000390100003a0100003b0100003c0100003d0100003e0100003f010000400100004101000042010000430100004401000045010000460100004701000048010000490100004a0100004b0100004c0100004d0100004e0100004f01000050010000510100005201000053010000540100005501000056010000570100005801000059010000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 2 + elements: + - particle1: 234 + particle2: 235 + restLength: 0.18133646 + constraintForce: 0 + tearResistance: 1 + - particle1: 235 + particle2: 236 + restLength: 0.18116945 + constraintForce: 0 + tearResistance: 1 + - particle1: 236 + particle2: 237 + restLength: 0.18210343 + constraintForce: 0 + tearResistance: 1 + - particle1: 237 + particle2: 238 + restLength: 0.18220028 + constraintForce: 0 + tearResistance: 1 + - particle1: 238 + particle2: 239 + restLength: 0.18192291 + constraintForce: 0 + tearResistance: 1 + - particle1: 239 + particle2: 240 + restLength: 0.18203682 + constraintForce: 0 + tearResistance: 1 + - particle1: 240 + particle2: 241 + restLength: 0.18204802 + constraintForce: 0 + tearResistance: 1 + - particle1: 241 + particle2: 242 + restLength: 0.18179289 + constraintForce: 0 + tearResistance: 1 + - particle1: 242 + particle2: 243 + restLength: 0.18189213 + constraintForce: 0 + tearResistance: 1 + - particle1: 243 + particle2: 244 + restLength: 0.18271154 + constraintForce: 0 + tearResistance: 1 + - particle1: 244 + particle2: 245 + restLength: 0.18078607 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: d82adbfa2e0744621823a657cc1d4d9a, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0.01 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &1201406218 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1201406217} + m_Target: {fileID: 1201406216} + m_ParticleGroup: {fileID: -2639811391673711616, guid: d82adbfa2e0744621823a657cc1d4d9a, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1201406219 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 6} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 1 +--- !u!23 &1201406220 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1201406221 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + m_Mesh: {fileID: 513051649} +--- !u!114 &1201406222 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201406215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!1 &1346965641 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1346965650} + - component: {fileID: 1346965645} + - component: {fileID: 1346965644} + - component: {fileID: 1346965642} + - component: {fileID: 1346965647} + - component: {fileID: 1346965646} + - component: {fileID: 1346965643} + - component: {fileID: 1346965648} + m_Layer: 10 + m_Name: Obi Rope Rigid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1346965642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 5a0100005b0100005c0100005d0100005e0100005f010000600100006101000062010000630100006401000065010000660100006701000068010000690100006a0100006b0100006c0100006d0100006e0100006f010000700100007101000072010000730100007401000075010000760100007701000078010000790100007a0100007b0100007c0100007d0100007e0100007f010000800100008101000082010000830100008401000085010000860100008701000088010000890100008a0100008b0100008c0100008d0100008e0100008f010000900100009101000092010000930100009401000095010000960100009701000098010000990100009a0100009b0100009c0100009d0100009e0100009f010000a0010000a1010000a2010000a3010000a4010000a5010000a6010000a7010000a8010000a9010000aa010000ab010000ac010000ad010000ae010000af010000b0010000b1010000b2010000b3010000b4010000b5010000b6010000b7010000b8010000b9010000ba010000bb010000bc010000bd010000be010000bf010000c0010000c1010000c2010000c3010000c4010000c5010000c6010000c7010000c8010000c9010000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 2 + elements: + - particle1: 346 + particle2: 347 + restLength: 0.18133646 + constraintForce: 0 + tearResistance: 1 + - particle1: 347 + particle2: 348 + restLength: 0.18116945 + constraintForce: 0 + tearResistance: 1 + - particle1: 348 + particle2: 349 + restLength: 0.18210343 + constraintForce: 0 + tearResistance: 1 + - particle1: 349 + particle2: 350 + restLength: 0.18220028 + constraintForce: 0 + tearResistance: 1 + - particle1: 350 + particle2: 351 + restLength: 0.18192291 + constraintForce: 0 + tearResistance: 1 + - particle1: 351 + particle2: 352 + restLength: 0.18203682 + constraintForce: 0 + tearResistance: 1 + - particle1: 352 + particle2: 353 + restLength: 0.18204802 + constraintForce: 0 + tearResistance: 1 + - particle1: 353 + particle2: 354 + restLength: 0.18179289 + constraintForce: 0 + tearResistance: 1 + - particle1: 354 + particle2: 355 + restLength: 0.18189213 + constraintForce: 0 + tearResistance: 1 + - particle1: 355 + particle2: 356 + restLength: 0.18271154 + constraintForce: 0 + tearResistance: 1 + - particle1: 356 + particle2: 357 + restLength: 0.18078607 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: d82adbfa2e0744621823a657cc1d4d9a, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &1346965643 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965642} + m_Target: {fileID: 1346965650} + m_ParticleGroup: {fileID: -2639811391673711616, guid: d82adbfa2e0744621823a657cc1d4d9a, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!23 &1346965644 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1346965645 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Mesh: {fileID: 1773633060} +--- !u!114 &1346965646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 6} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &1346965647 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!114 &1346965648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1346965642} + m_Target: {fileID: 1346965650} + m_ParticleGroup: {fileID: 8225853497016287227, guid: d82adbfa2e0744621823a657cc1d4d9a, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!4 &1346965650 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.02, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 515194303} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1376993202 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1376993203} + m_Layer: 0 + m_Name: Circuit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1376993203 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1376993202} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 256028324} + - {fileID: 656652124} + - {fileID: 206877718} + - {fileID: 458966911} + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1415489121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1415489122} + m_Layer: 0 + m_Name: Hanger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1415489122 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1415489121} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.19, y: 3.291, z: 3.79} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 11813905} + - {fileID: 1872762459} + - {fileID: 283112603} + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!43 &1483473153 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &1742644163 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1742644164} + - component: {fileID: 1742644169} + - component: {fileID: 1742644168} + - component: {fileID: 1742644165} + - component: {fileID: 1742644170} + - component: {fileID: 1742644167} + - component: {fileID: 1742644166} + - component: {fileID: 1742644171} + m_Layer: 10 + m_Name: Obi Rope Flexible + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1742644164 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742644163} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.02, y: 0, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 515194303} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1742644165 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742644163} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: ca010000cb010000cc010000cd010000ce010000cf010000d0010000d1010000d2010000d3010000d4010000d5010000d6010000d7010000d8010000d9010000da010000db010000dc010000dd010000de010000df010000e0010000e1010000e2010000e3010000e4010000e5010000e6010000e7010000e8010000e9010000ea010000eb010000ec010000ed010000ee010000ef010000f0010000f1010000f2010000f3010000f4010000f5010000f6010000f7010000f8010000f9010000fa010000fb010000fc010000fd010000fe010000ff010000000200000102000002020000030200000402000005020000060200000702000008020000090200000a0200000b0200000c0200000d0200000e0200000f020000100200001102000012020000130200001402000015020000160200001702000018020000190200001a0200001b0200001c0200001d0200001e0200001f020000200200002102000022020000230200002402000025020000260200002702000028020000290200002a0200002b0200002c0200002d0200002e0200002f02000030020000310200003202000033020000340200003502000036020000370200003802000039020000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 2 + elements: + - particle1: 458 + particle2: 459 + restLength: 0.18133646 + constraintForce: 0 + tearResistance: 1 + - particle1: 459 + particle2: 460 + restLength: 0.18116945 + constraintForce: 0 + tearResistance: 1 + - particle1: 460 + particle2: 461 + restLength: 0.18210343 + constraintForce: 0 + tearResistance: 1 + - particle1: 461 + particle2: 462 + restLength: 0.18220028 + constraintForce: 0 + tearResistance: 1 + - particle1: 462 + particle2: 463 + restLength: 0.18192291 + constraintForce: 0 + tearResistance: 1 + - particle1: 463 + particle2: 464 + restLength: 0.18203682 + constraintForce: 0 + tearResistance: 1 + - particle1: 464 + particle2: 465 + restLength: 0.18204802 + constraintForce: 0 + tearResistance: 1 + - particle1: 465 + particle2: 466 + restLength: 0.18179289 + constraintForce: 0 + tearResistance: 1 + - particle1: 466 + particle2: 467 + restLength: 0.18189213 + constraintForce: 0 + tearResistance: 1 + - particle1: 467 + particle2: 468 + restLength: 0.18271154 + constraintForce: 0 + tearResistance: 1 + - particle1: 468 + particle2: 469 + restLength: 0.18078607 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: d82adbfa2e0744621823a657cc1d4d9a, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0 + _maxBending: 0.01 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &1742644166 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742644163} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1742644165} + m_Target: {fileID: 1742644164} + m_ParticleGroup: {fileID: -2639811391673711616, guid: d82adbfa2e0744621823a657cc1d4d9a, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1742644167 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742644163} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 6} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!23 &1742644168 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742644163} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44ab0cc40b59345718856f6e1c1225f3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1742644169 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742644163} + m_Mesh: {fileID: 1483473153} +--- !u!114 &1742644170 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742644163} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 0 + twist: 0 +--- !u!114 &1742644171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742644163} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1742644165} + m_Target: {fileID: 1742644164} + m_ParticleGroup: {fileID: 8225853497016287227, guid: d82adbfa2e0744621823a657cc1d4d9a, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!43 &1773633060 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &1872762458 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1872762459} + - component: {fileID: 1872762462} + - component: {fileID: 1872762461} + - component: {fileID: 1872762460} + - component: {fileID: 1872762463} + m_Layer: 0 + m_Name: Cube (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1872762459 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872762458} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4.22, y: 0, z: 0} + m_LocalScale: {x: 0.21134, y: 0.21134, z: 2.4164} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1415489122} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1872762460 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872762458} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1872762461 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872762458} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1872762462 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872762458} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!95 &1872762463 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872762458} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: a4b784adeafc54c718a457f939eec638, type: 2} + m_CullingMode: 0 + m_UpdateMode: 1 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 1 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!1 &2102841794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2102841797} + - component: {fileID: 2102841796} + - component: {fileID: 2102841798} + - component: {fileID: 2102841795} + m_Layer: 0 + m_Name: Obi Solver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2102841795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d9704d540ac448439a425526f6b2986, type: 3} + m_Name: + m_EditorClassIdentifier: + solvers: + - {fileID: 2102841796} + substeps: 3 +--- !u!114 &2102841796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d174fab52f0c4b8399f25d5c3ea524c, type: 3} + m_Name: + m_EditorClassIdentifier: + simulateWhenInvisible: 1 + m_Backend: 1 + parameters: + mode: 0 + interpolation: 0 + gravity: {x: 0, y: -9.81, z: 0} + damping: 0 + maxAnisotropy: 3 + sleepThreshold: 0.001 + collisionMargin: 0.02 + maxDepenetration: 10 + continuousCollisionDetection: 1 + shockPropagation: 0 + surfaceCollisionIterations: 8 + surfaceCollisionTolerance: 0.005 + gravity: {x: 0, y: -9.81, z: 0} + gravitySpace: 1 + worldLinearInertiaScale: 0 + worldAngularInertiaScale: 0 + distanceConstraintParameters: + evaluationOrder: 0 + iterations: 2 + SORFactor: 1 + enabled: 1 + bendingConstraintParameters: + evaluationOrder: 0 + iterations: 4 + SORFactor: 1 + enabled: 1 + particleCollisionConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 1 + particleFrictionConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 1 + collisionConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 1 + frictionConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 1 + skinConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + volumeConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + shapeMatchingConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + tetherConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + pinConstraintParameters: + evaluationOrder: 1 + iterations: 5 + SORFactor: 1 + enabled: 1 + stitchConstraintParameters: + evaluationOrder: 0 + iterations: 5 + SORFactor: 1 + enabled: 1 + densityConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + stretchShearConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + bendTwistConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + chainConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 +--- !u!4 &2102841797 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1376993203} + - {fileID: 515194303} + - {fileID: 1415489122} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2102841798 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ef31b6ca9a4124cb893de1adabbfab18, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1002464896} + - {fileID: 421764872} + - {fileID: 1175446146} + - {fileID: 2102841797} + - {fileID: 1067532270} + - {fileID: 592657017} diff --git a/Assets/Obi/Samples/RopeAndRod/RopeShowcase.unity.meta b/Assets/Obi/Samples/RopeAndRod/RopeShowcase.unity.meta new file mode 100644 index 000000000..a34c46810 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeShowcase.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 89e5ccc1fe8f948e195777194be0d7ee +labels: +- ObiRope +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/RopeShowcaseSettings.lighting b/Assets/Obi/Samples/RopeAndRod/RopeShowcaseSettings.lighting new file mode 100644 index 000000000..6f04f4107 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeShowcaseSettings.lighting @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RopeShowcaseSettings + serializedVersion: 10 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_LightmapPackingMode: 1 + m_LightmapPackingMethod: 0 + m_XAtlasPackingAttempts: 16384 + m_XAtlasBruteForce: 0 + m_XAtlasBlockAlign: 0 + m_XAtlasRepackUnderutilizedLightmaps: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/RopeShowcaseSettings.lighting.meta b/Assets/Obi/Samples/RopeAndRod/RopeShowcaseSettings.lighting.meta new file mode 100644 index 000000000..a34ef22c1 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/RopeShowcaseSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b34239a2c17961e4eb6d3aaa44b2d672 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources.meta new file mode 100644 index 000000000..b076486f4 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eac720611ce5c4119b1d9db820e46445 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations.meta new file mode 100644 index 000000000..d3211a3fe --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bce64c6a145eb4fe6baa4b578340c7f6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/BenderAnimation.anim b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/BenderAnimation.anim new file mode 100644 index 000000000..c2dc5e1fb --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/BenderAnimation.anim @@ -0,0 +1,213 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BenderAnimation + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: -4.998, y: 2.323, z: 2.77} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 3 + value: {x: -4.998, y: 3.22, z: 2.77} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 3.2666667 + value: {x: -4.998, y: 2.323, z: 2.77} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 3.2666667 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -4.998 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: -4.998 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.2666667 + value: -4.998 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 2.323 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: 3.22 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.2666667 + value: 2.323 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 2.77 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: 2.77 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.2666667 + value: 2.77 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + flags: 16 + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 1 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/BenderAnimation.anim.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/BenderAnimation.anim.meta new file mode 100644 index 000000000..c717d2f37 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/BenderAnimation.anim.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8aef55aace3b1432fa898df59e010a72 +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Bending.controller b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Bending.controller new file mode 100644 index 000000000..6d1a73b6f --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Bending.controller @@ -0,0 +1,73 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Bending + serializedVersion: 6 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 1107706386461285292} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} + m_EvaluateTransitionsOnStart: 0 +--- !u!1102 &1102167745598837238 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BenderAnimation + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 8aef55aace3b1432fa898df59e010a72, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &1107706386461285292 +AnimatorStateMachine: + serializedVersion: 7 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 1102167745598837238} + m_Position: {x: 264, y: 120, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 1102167745598837238} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Bending.controller.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Bending.controller.meta new file mode 100644 index 000000000..17ba600ed --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Bending.controller.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3944bed00b7b34420a9a4cfad30c9ce0 +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Obi Rod.controller b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Obi Rod.controller new file mode 100644 index 000000000..2ae48d95d --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Obi Rod.controller @@ -0,0 +1,73 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Obi Rod + serializedVersion: 6 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 1107378561553032024} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} + m_EvaluateTransitionsOnStart: 0 +--- !u!1102 &1102093698268689078 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SpringBase + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: f9f087beac1af4afbb7df6053cc98576, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &1107378561553032024 +AnimatorStateMachine: + serializedVersion: 7 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 1102093698268689078} + m_Position: {x: 200, y: 0, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 1102093698268689078} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Obi Rod.controller.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Obi Rod.controller.meta new file mode 100644 index 000000000..34a24fd06 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Obi Rod.controller.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0f15fe98c8c39495c86f63837900a88d +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/PlectonemeTwister.anim b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/PlectonemeTwister.anim new file mode 100644 index 000000000..8ef894cc7 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/PlectonemeTwister.anim @@ -0,0 +1,841 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: PlectonemeTwister + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 0, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 1 + value: {x: 90, y: 0, z: 0} + inSlope: {x: 90, y: 0, z: 0} + outSlope: {x: 90, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 2 + value: {x: 180, y: 0, z: 0} + inSlope: {x: 90, y: 0, z: 0} + outSlope: {x: 90, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 3 + value: {x: 270, y: 0, z: 0} + inSlope: {x: 89.25619, y: 0, z: 0} + outSlope: {x: 89.25619, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 4.016667 + value: {x: 360, y: 0, z: 0} + inSlope: {x: 90, y: 0, z: 0} + outSlope: {x: 90, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 5 + value: {x: 450, y: 0, z: 0} + inSlope: {x: 90.75631, y: 0, z: 0} + outSlope: {x: 90.75631, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 6 + value: {x: 540, y: 0, z: 0} + inSlope: {x: 90, y: 0, z: 0} + outSlope: {x: 90, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 7 + value: {x: 630, y: 0, z: 0} + inSlope: {x: 89.25621, y: 0, z: 0} + outSlope: {x: 89.25621, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 8.016666 + value: {x: 720, y: 0, z: 0} + inSlope: {x: 90, y: 0, z: 0} + outSlope: {x: 90, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 9 + value: {x: 810, y: 0, z: 0} + inSlope: {x: 90, y: 0, z: 0} + outSlope: {x: 90, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 10.016666 + value: {x: 900, y: 0, z: 0} + inSlope: {x: 90, y: 0, z: 0} + outSlope: {x: 90, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 11 + value: {x: 990, y: 0, z: 0} + inSlope: {x: 90.756294, y: 0, z: 0} + outSlope: {x: 90.756294, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 12 + value: {x: 1080, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 13.983334 + value: {x: 0, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 1.021031, y: 2.82, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 9 + value: {x: -0.5, y: 2.82, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 12 + value: {x: -0.5, y: 2.82, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 13.983334 + value: {x: 1.021031, y: 2.82, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 4 + script: {fileID: 0} + typeID: 4 + customType: 4 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 13.983334 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1.021031 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 9 + value: -0.5 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 12 + value: -0.5 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 13.983334 + value: 1.021031 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 2.82 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 9 + value: 2.82 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 12 + value: 2.82 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 13.983334 + value: 2.82 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 9 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 12 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 13.983334 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 90 + inSlope: 90 + outSlope: 90 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 180 + inSlope: 90 + outSlope: 90 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: 270 + inSlope: 89.25619 + outSlope: 89.25619 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4.016667 + value: 360 + inSlope: 90 + outSlope: 90 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 5 + value: 450 + inSlope: 90.75631 + outSlope: 90.75631 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6 + value: 540 + inSlope: 90 + outSlope: 90 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 7 + value: 630 + inSlope: 89.25621 + outSlope: 89.25621 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 8.016666 + value: 720 + inSlope: 90 + outSlope: 90 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 9 + value: 810 + inSlope: 90 + outSlope: 90 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 10.016666 + value: 900 + inSlope: 90 + outSlope: 90 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 11 + value: 990 + inSlope: 90.756294 + outSlope: 90.756294 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 12 + value: 1080 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 13.983334 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.x + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4.016667 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 5 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 7 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 8.016666 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 9 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 10.016666 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 11 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 12 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 13.983334 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.y + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4.016667 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 5 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 7 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 8.016666 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 9 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 10.016666 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 11 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 12 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 13.983334 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.z + path: + classID: 4 + script: {fileID: 0} + flags: 16 + m_EulerEditorCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.x + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.y + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.z + path: + classID: 4 + script: {fileID: 0} + flags: 16 + m_HasGenericRootTransform: 1 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/PlectonemeTwister.anim.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/PlectonemeTwister.anim.meta new file mode 100644 index 000000000..2b0781fdd --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/PlectonemeTwister.anim.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 28df4ce4afe8f4cf4ba9651b14239a6d +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/PlectonemeTwisterController.controller b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/PlectonemeTwisterController.controller new file mode 100644 index 000000000..6280e113c --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/PlectonemeTwisterController.controller @@ -0,0 +1,73 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: PlectonemeTwisterController + serializedVersion: 6 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 1107954534683742082} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} + m_EvaluateTransitionsOnStart: 0 +--- !u!1102 &1102130930562412034 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: PlectonemeTwister + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 28df4ce4afe8f4cf4ba9651b14239a6d, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &1107954534683742082 +AnimatorStateMachine: + serializedVersion: 7 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 1102130930562412034} + m_Position: {x: 288, y: 108, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 1102130930562412034} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/PlectonemeTwisterController.controller.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/PlectonemeTwisterController.controller.meta new file mode 100644 index 000000000..f8124fbe9 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/PlectonemeTwisterController.controller.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 97c29ef2dfc89427385f43924109cfa8 +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Rocker.controller b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Rocker.controller new file mode 100644 index 000000000..3daecd271 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Rocker.controller @@ -0,0 +1,73 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Rocker + serializedVersion: 6 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 1107706386461285292} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} + m_EvaluateTransitionsOnStart: 0 +--- !u!1102 &1102167745598837238 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Rocker + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: fe0d06ab59d084ca78e40c50472ccc36, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &1107706386461285292 +AnimatorStateMachine: + serializedVersion: 7 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 1102167745598837238} + m_Position: {x: 264, y: 120, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 1102167745598837238} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Rocker.controller.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Rocker.controller.meta new file mode 100644 index 000000000..7d330dd2d --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/Rocker.controller.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: d48cf3556d5844543a51259340bc1344 +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RockerAnimation.anim b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RockerAnimation.anim new file mode 100644 index 000000000..99f6231bc --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RockerAnimation.anim @@ -0,0 +1,285 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RockerAnimation + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 2.971, y: 2.887, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 3 + value: {x: 2.971, y: 2.887, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 4.3333335 + value: {x: 2.971, y: 1.57, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 4.8333335 + value: {x: 2.971, y: 1.57, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 5 + value: {x: 2.971, y: 2.887, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 2.971 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: 2.971 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4.3333335 + value: 2.971 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4.8333335 + value: 2.971 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 5 + value: 2.971 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 2.887 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: 2.887 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4.3333335 + value: 1.57 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4.8333335 + value: 1.57 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 5 + value: 2.887 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4.3333335 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4.8333335 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 5 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + flags: 16 + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 1 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RockerAnimation.anim.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RockerAnimation.anim.meta new file mode 100644 index 000000000..fa1290731 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RockerAnimation.anim.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: fe0d06ab59d084ca78e40c50472ccc36 +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeCircuit.controller b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeCircuit.controller new file mode 100644 index 000000000..ef6dd87e4 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeCircuit.controller @@ -0,0 +1,73 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RopeCircuit + serializedVersion: 6 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 1107706386461285292} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} + m_EvaluateTransitionsOnStart: 0 +--- !u!1102 &1102167745598837238 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RopeCircuitAnimation + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 272538c21c0494561b2e79be089c07ad, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &1107706386461285292 +AnimatorStateMachine: + serializedVersion: 7 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 1102167745598837238} + m_Position: {x: 264, y: 120, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 1102167745598837238} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeCircuit.controller.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeCircuit.controller.meta new file mode 100644 index 000000000..d5fd77de5 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeCircuit.controller.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 6081905a3b44e41268651052f0230595 +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeCircuitAnimation.anim b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeCircuitAnimation.anim new file mode 100644 index 000000000..fe1b1ff36 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeCircuitAnimation.anim @@ -0,0 +1,213 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RopeCircuitAnimation + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: -1.676, y: 2.471, z: -0.119} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 4 + value: {x: 2.762, y: 2.471, z: -0.119} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 8.016666 + value: {x: -1.676, y: 2.471, z: -0.119} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 8.016666 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1.676 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4 + value: 2.762 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 8.016666 + value: -1.676 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 2.471 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4 + value: 2.471 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 8.016666 + value: 2.471 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.119 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4 + value: -0.119 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 8.016666 + value: -0.119 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + flags: 16 + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 1 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeCircuitAnimation.anim.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeCircuitAnimation.anim.meta new file mode 100644 index 000000000..634e7ba9c --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeCircuitAnimation.anim.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 272538c21c0494561b2e79be089c07ad +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeHangerAnimation.anim b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeHangerAnimation.anim new file mode 100644 index 000000000..606937859 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeHangerAnimation.anim @@ -0,0 +1,213 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RopeHangerAnimation + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 4.22, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.8333333 + value: {x: 2.692, y: 0.001, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 1.1666666 + value: {x: 4.22, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1.1666666 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 4.22 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.8333333 + value: 2.692 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.1666666 + value: 4.22 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.8333333 + value: 0.001 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.1666666 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.8333333 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.1666666 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + flags: 16 + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 1 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeHangerAnimation.anim.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeHangerAnimation.anim.meta new file mode 100644 index 000000000..bdaaebcde --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeHangerAnimation.anim.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 5b3152b7fb78f42f7a1e424cfb3c8a54 +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeStretcher.anim b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeStretcher.anim new file mode 100644 index 000000000..e6fb4e46f --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeStretcher.anim @@ -0,0 +1,213 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RopeStretcher + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 4.22, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 1 + value: {x: 2.15, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 1.5 + value: {x: 4.22, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1.5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 4.22 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 2.15 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.5 + value: 4.22 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.5 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.5 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + flags: 16 + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 1 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeStretcher.anim.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeStretcher.anim.meta new file mode 100644 index 000000000..8d939d3d4 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeStretcher.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3969502aaa6a94767ba6d47311617675 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeStretcher.controller b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeStretcher.controller new file mode 100644 index 000000000..b1a5ec8d7 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeStretcher.controller @@ -0,0 +1,73 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RopeStretcher + serializedVersion: 6 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 1107706386461285292} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} + m_EvaluateTransitionsOnStart: 0 +--- !u!1102 &1102794673975152784 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RopeStretcher + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 3969502aaa6a94767ba6d47311617675, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &1107706386461285292 +AnimatorStateMachine: + serializedVersion: 7 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 1102794673975152784} + m_Position: {x: 300, y: 180, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 1102794673975152784} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeStretcher.controller.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeStretcher.controller.meta new file mode 100644 index 000000000..782ad153d --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/RopeStretcher.controller.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: a4b784adeafc54c718a457f939eec638 +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/SpringBase.anim b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/SpringBase.anim new file mode 100644 index 000000000..efb4819fc --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/SpringBase.anim @@ -0,0 +1,481 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SpringBase + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 0, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 2 + value: {x: 0, y: 0, z: 90} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 3 + value: {x: 0, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 0, y: 2.405, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 1 + value: {x: -2, y: 2.405, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 2 + value: {x: 1.4489626, y: 5.32062, z: 0} + inSlope: {x: 1.1020746, y: 0, z: 0} + outSlope: {x: 1.1020746, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 3 + value: {x: 2, y: 2.405, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 4 + value: {x: 0, y: 2.405, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 4 + script: {fileID: 0} + typeID: 4 + customType: 4 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 4 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: -2 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 1.4489626 + inSlope: 1.1020746 + outSlope: 1.1020746 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: 2 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 2.405 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 2.405 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 5.32062 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: 2.405 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4 + value: 2.405 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.x + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.y + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 90 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.z + path: + classID: 4 + script: {fileID: 0} + flags: 16 + m_EulerEditorCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.x + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.y + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.z + path: + classID: 4 + script: {fileID: 0} + flags: 16 + m_HasGenericRootTransform: 1 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/SpringBase.anim.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/SpringBase.anim.meta new file mode 100644 index 000000000..2b72a5eaf --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/SpringBase.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64e85f20a274344c0aa6d69f24adb2da +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/SpringBase.controller b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/SpringBase.controller new file mode 100644 index 000000000..36aeec596 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/SpringBase.controller @@ -0,0 +1,73 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SpringBase + serializedVersion: 6 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 1107706386461285292} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} + m_EvaluateTransitionsOnStart: 0 +--- !u!1102 &1102167745598837238 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SpringBase + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 64e85f20a274344c0aa6d69f24adb2da, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &1107706386461285292 +AnimatorStateMachine: + serializedVersion: 7 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 1102167745598837238} + m_Position: {x: 264, y: 120, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 1102167745598837238} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/SpringBase.controller.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/SpringBase.controller.meta new file mode 100644 index 000000000..36e5dca93 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Animations/SpringBase.controller.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f1d1c5155bab2402a9c25e0867b791ef +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints.meta new file mode 100644 index 000000000..e5470b0e3 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 37c631910c18f4ddea83b72d2e0a026a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Chain.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Chain.asset new file mode 100644 index 000000000..39bd8fb65 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Chain.asset @@ -0,0 +1,1831 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4517029930201779066 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: box + m_EditorClassIdentifier: + particleIndices: 17000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-257853511496805216 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: mid point + m_EditorClassIdentifier: + particleIndices: 0c000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-53998285165153434 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: ball + m_EditorClassIdentifier: + particleIndices: 00000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f7e67b5626124d0db9886e6cd2aacff, type: 3} + m_Name: Chain + m_EditorClassIdentifier: + m_Empty: 0 + m_ActiveParticleCount: 24 + m_InitialActiveParticleCount: 24 + _bounds: + m_Center: {x: -0.2282108, y: -0.20074356, z: -0.8564998} + m_Extent: {x: 1.2282108, y: 0.20074356, z: 0.8564998} + positions: + - {x: -1.4564216, y: -0.4014871, z: -1.6942042} + - {x: -1.2559584, y: -0.39924335, z: -1.6993358} + - {x: -1.0554394, y: -0.39508724, z: -1.704736} + - {x: -0.8241106, y: -0.38775176, z: -1.7103187} + - {x: -0.5924694, y: -0.3778487, z: -1.7129996} + - {x: -0.36051655, y: -0.36575028, z: -1.710554} + - {x: -0.12928915, y: -0.35137326, z: -1.69995} + - {x: 0.10057359, y: -0.33399644, z: -1.6753461} + - {x: 0.3251447, y: -0.31121653, z: -1.620016} + - {x: 0.46308318, y: -0.276663, z: -1.4629185} + - {x: 0.33540976, y: -0.25471836, z: -1.2770586} + - {x: 0.15128818, y: -0.2444846, z: -1.138357} + - {x: -0.049123213, y: -0.23823377, z: -1.0163414} + - {x: -0.2350844, y: -0.23193765, z: -0.90015733} + - {x: -0.40610352, y: -0.22026612, z: -0.7586036} + - {x: -0.5164732, y: -0.19748245, z: -0.57703835} + - {x: -0.45254478, y: -0.16008563, z: -0.3823164} + - {x: -0.27519998, y: -0.12711483, z: -0.26090837} + - {x: -0.072900996, y: -0.09951655, z: -0.18104196} + - {x: 0.1368935, y: -0.07519557, z: -0.12284149} + - {x: 0.35048765, y: -0.053085208, z: -0.078155346} + - {x: 0.56658244, y: -0.03275004, z: -0.043271925} + - {x: 0.784192, y: -0.014249971, z: -0.0166134} + - {x: 1, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + restPositions: + - {x: -1.4564216, y: -0.4014871, z: -1.6942042, w: 1} + - {x: -1.2559584, y: -0.39924335, z: -1.6993358, w: 1} + - {x: -1.0554394, y: -0.39508724, z: -1.704736, w: 1} + - {x: -0.8241106, y: -0.38775176, z: -1.7103187, w: 1} + - {x: -0.5924694, y: -0.3778487, z: -1.7129996, w: 1} + - {x: -0.36051655, y: -0.36575028, z: -1.710554, w: 1} + - {x: -0.12928915, y: -0.35137326, z: -1.69995, w: 1} + - {x: 0.10057359, y: -0.33399644, z: -1.6753461, w: 1} + - {x: 0.3251447, y: -0.31121653, z: -1.620016, w: 1} + - {x: 0.46308318, y: -0.276663, z: -1.4629185, w: 1} + - {x: 0.33540976, y: -0.25471836, z: -1.2770586, w: 1} + - {x: 0.15128818, y: -0.2444846, z: -1.138357, w: 1} + - {x: -0.049123213, y: -0.23823377, z: -1.0163414, w: 1} + - {x: -0.2350844, y: -0.23193765, z: -0.90015733, w: 1} + - {x: -0.40610352, y: -0.22026612, z: -0.7586036, w: 1} + - {x: -0.5164732, y: -0.19748245, z: -0.57703835, w: 1} + - {x: -0.45254478, y: -0.16008563, z: -0.3823164, w: 1} + - {x: -0.27519998, y: -0.12711483, z: -0.26090837, w: 1} + - {x: -0.072900996, y: -0.09951655, z: -0.18104196, w: 1} + - {x: 0.1368935, y: -0.07519557, z: -0.12284149, w: 1} + - {x: 0.35048765, y: -0.053085208, z: -0.078155346, w: 1} + - {x: 0.56658244, y: -0.03275004, z: -0.043271925, w: 1} + - {x: 0.784192, y: -0.014249971, z: -0.0166134, w: 1} + - {x: 1, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + orientations: [] + restOrientations: [] + velocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + angularVelocities: [] + invMasses: + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + invRotationalMasses: [] + filters: 000000000100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + principalRadii: + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.10000002, y: 0.10000002, z: 0.10000002} + - {x: 0.10000002, y: 0.10000002, z: 0.10000002} + - {x: 0.10000002, y: 0.10000002, z: 0.10000002} + - {x: 0.100000024, y: 0.100000024, z: 0.100000024} + - {x: 0.100000024, y: 0.100000024, z: 0.100000024} + - {x: 0.100000024, y: 0.100000024, z: 0.100000024} + - {x: 0.100000024, y: 0.100000024, z: 0.100000024} + - {x: 0.100000024, y: 0.100000024, z: 0.100000024} + - {x: 0.100000024, y: 0.100000024, z: 0.100000024} + - {x: 0.100000024, y: 0.100000024, z: 0.100000024} + - {x: 0.10000002, y: 0.10000002, z: 0.10000002} + - {x: 0.10000002, y: 0.10000002, z: 0.10000002} + - {x: 0.10000002, y: 0.10000002, z: 0.10000002} + - {x: 0.10000002, y: 0.10000002, z: 0.10000002} + - {x: 0.10000002, y: 0.10000002, z: 0.10000002} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + colors: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + points: + edges: 000000000100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000a0000000a0000000b0000000b0000000c0000000c0000000d0000000d0000000e0000000e0000000f0000000f000000100000001000000011000000110000001200000012000000130000001300000014000000140000001500000015000000160000001600000017000000 + triangles: + distanceConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d000000 + m_ConstraintCount: 62 + m_ActiveConstraintCount: 12 + m_InitialActiveConstraintCount: 12 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.20054139 + - 0.23151232 + - 0.23228103 + - 0.23182793 + - 0.21189757 + - 0.23074576 + - 0.2193626 + - 0.21369718 + - 0.21743543 + - 0.21907198 + - 0.21983477 + - 0.21691507 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c000000 + m_ConstraintCount: 61 + m_ActiveConstraintCount: 11 + m_InitialActiveConstraintCount: 11 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f0000001000000011000000120000001300000014000000150000001600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.20063484 + - 0.23186833 + - 0.23191649 + - 0.23240596 + - 0.22655237 + - 0.23471601 + - 0.22230886 + - 0.20833145 + - 0.21923774 + - 0.21933578 + - 0.22001559 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + bendConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000 + m_ConstraintCount: 41 + m_ActiveConstraintCount: 8 + m_InitialActiveConstraintCount: 8 + particleIndices: + serializedContents: 000000000200000001000000030000000500000004000000060000000800000007000000090000000b0000000a0000000c0000000e0000000d0000000f0000001100000010000000120000001400000013000000150000001700000016000000180000001a000000190000001b0000001d0000001c0000001e000000200000001f0000002100000023000000220000002400000026000000250000002700000029000000280000002a0000002c0000002b0000002d0000002f0000002e000000300000003200000031000000330000003500000034000000360000003800000037000000390000003b0000003a0000003c0000003e0000003d0000003f0000004100000040000000420000004400000043000000450000004700000046000000480000004a000000490000004b0000004d0000004c0000004e000000500000004f0000005100000053000000520000005400000056000000550000005700000059000000580000005a0000005c0000005b0000005d0000005f0000005e000000600000006200000061000000630000006500000064000000660000006800000067000000690000006b0000006a0000006c0000006e0000006d0000006f0000007100000070000000720000007400000073000000750000007700000076000000780000007a00000079000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.00064396654 + - 0.0018618644 + - 0.010547898 + - 0.024827044 + - 0.009976552 + - 0.045040447 + - 0.0047370973 + - 0.0036850064 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000 + m_ConstraintCount: 41 + m_ActiveConstraintCount: 7 + m_InitialActiveConstraintCount: 7 + particleIndices: + serializedContents: 0100000003000000020000000400000006000000050000000700000009000000080000000a0000000c0000000b0000000d0000000f0000000e000000100000001200000011000000130000001500000014000000160000001800000017000000190000001b0000001a0000001c0000001e0000001d0000001f0000002100000020000000220000002400000023000000250000002700000026000000280000002a000000290000002b0000002d0000002c0000002e000000300000002f0000003100000033000000320000003400000036000000350000003700000039000000380000003a0000003c0000003b0000003d0000003f0000003e000000400000004200000041000000430000004500000044000000460000004800000047000000490000004b0000004a0000004c0000004e0000004d0000004f0000005100000050000000520000005400000053000000550000005700000056000000580000005a000000590000005b0000005d0000005c0000005e000000600000005f0000006100000063000000620000006400000066000000650000006700000069000000680000006a0000006c0000006b0000006d0000006f0000006e000000700000007200000071000000730000007500000074000000760000007800000077000000790000007b0000007a000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.010324595 + - 0.002833821 + - 0.04472188 + - 0.007885566 + - 0.024501137 + - 0.016252456 + - 0.00342375 + - 0.40533498 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000250000002600000027000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000250000002600000027000000 + m_ConstraintCount: 40 + m_ActiveConstraintCount: 7 + m_InitialActiveConstraintCount: 7 + particleIndices: + serializedContents: 020000000400000003000000050000000700000006000000080000000a000000090000000b0000000d0000000c0000000e000000100000000f0000001100000013000000120000001400000016000000150000001700000019000000180000001a0000001c0000001b0000001d0000001f0000001e000000200000002200000021000000230000002500000024000000260000002800000027000000290000002b0000002a0000002c0000002e0000002d0000002f0000003100000030000000320000003400000033000000350000003700000036000000380000003a000000390000003b0000003d0000003c0000003e000000400000003f0000004100000043000000420000004400000046000000450000004700000049000000480000004a0000004c0000004b0000004d0000004f0000004e000000500000005200000051000000530000005500000054000000560000005800000057000000590000005b0000005a0000005c0000005e0000005d0000005f0000006100000060000000620000006400000063000000650000006700000066000000680000006a000000690000006b0000006d0000006c0000006e000000700000006f000000710000007300000072000000740000007600000075000000770000007900000078000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.0012957505 + - 0.004794234 + - 0.089154 + - 0.0051941937 + - 0.058467906 + - 0.007719646 + - 0.0028540627 + - 0.33333334 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + skinConstraintsData: + batches: [] + tetherConstraintsData: + batches: [] + stretchShearConstraintsData: + batches: [] + bendTwistConstraintsData: + batches: [] + shapeMatchingConstraintsData: + batches: [] + aerodynamicConstraintsData: + batches: [] + chainConstraintsData: + batches: [] + volumeConstraintsData: + batches: [] + groups: + - {fileID: -53998285165153434} + - {fileID: 7546284794258584817} + - {fileID: -257853511496805216} + - {fileID: -4517029930201779066} + path: + m_Names: + - ball + - ball 2 + - mid point + - box + m_Points: + data: + - tangentMode: 0 + inTangent: {x: -0.24993628, y: -0, z: 0.005638841} + position: {x: -1.4564216, y: -0.4014871, z: -1.6942042} + outTangent: {x: 0.069640994, y: 0, z: -0.0015711784} + - tangentMode: 0 + inTangent: {x: -0.1652112, y: -0.00408864, z: 0.004468441} + position: {x: -1.0554394, y: -0.39508724, z: -1.704736} + outTangent: {x: 0.7965044, y: 0.019711858, z: -0.021542927} + - tangentMode: 0 + inTangent: {x: 1.3105737, y: -0.03177786, z: -0.7446065} + position: {x: -0.049123213, y: -0.23823377, z: -1.0163414} + outTangent: {x: -1.4556304, y: 0.03529509, z: 0.8270209} + - tangentMode: 0 + inTangent: {x: -0.14064473, y: 0, z: 0} + position: {x: 1, y: 0, z: 0} + outTangent: {x: 0.25, y: -0, z: -0} + m_Normals: + data: + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1.0000001, z: 0} + - {x: 0, y: 1, z: 0} + m_Colors: + data: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1, g: 1, b: 1, a: 1} + m_Thickness: + data: + - 1 + - 1 + - 1.0000002 + - 1 + m_Masses: + data: + - 0.1 + - 0.1 + - 0.10000001 + - 0.1 + m_RotationalMasses: + data: + - 1 + - 1 + - 1.0000001 + - 1 + m_Filters: + data: 000000000100ffff0100ffff0100ffff + m_Closed: 0 + m_ArcLengthTable: + - 0 + - 0.010597409 + - 0.022445109 + - 0.03548003 + - 0.049639076 + - 0.06485915 + - 0.08107715 + - 0.09822995 + - 0.11625445 + - 0.13508752 + - 0.15466605 + - 0.17492694 + - 0.19580704 + - 0.21724324 + - 0.23917243 + - 0.26153147 + - 0.2842573 + - 0.30728674 + - 0.33055672 + - 0.3540041 + - 0.3775658 + - 0.4011787 + - 0.51959425 + - 0.64557546 + - 0.77681607 + - 0.9110185 + - 1.0458997 + - 1.1791987 + - 1.3086872 + - 1.432188 + - 1.5476058 + - 1.6529827 + - 1.7466094 + - 1.8272604 + - 1.8947363 + - 1.9511089 + - 2.0027907 + - 2.0606318 + - 2.1352768 + - 2.2340822 + - 2.3619528 + - 2.5225785 + - 2.7190704 + - 2.9344335 + - 3.1057208 + - 3.2391896 + - 3.3428776 + - 3.42762 + - 3.506474 + - 3.5906832 + - 3.6862862 + - 3.7948225 + - 3.9152896 + - 4.045405 + - 4.1822286 + - 4.322462 + - 4.4625993 + - 4.5990067 + - 4.7279696 + - 4.845718 + - 4.948445 + - 5.0323176 + - 5.0934873 + - 5.128111 + m_TotalSplineLenght: 5.128111 + OnPathChanged: + m_PersistentCalls: + m_Calls: [] + OnControlPointAdded: + m_PersistentCalls: + m_Calls: [] + OnControlPointRemoved: + m_PersistentCalls: + m_Calls: [] + OnControlPointRenamed: + m_PersistentCalls: + m_Calls: [] + thickness: 0.1 + resolution: 0.43 + m_InterParticleDistance: 0.22296134 + totalParticles: 124 + m_RestLength: 27.388588 + restLengths: + - 0.20054139 + - 0.20063484 + - 0.23151232 + - 0.23186833 + - 0.23228103 + - 0.23191649 + - 0.23182793 + - 0.23240596 + - 0.21189757 + - 0.22655237 + - 0.23074576 + - 0.23471601 + - 0.2193626 + - 0.22230886 + - 0.21369718 + - 0.20833145 + - 0.21743543 + - 0.21923774 + - 0.21907198 + - 0.21933578 + - 0.21983477 + - 0.22001559 + - 0.21691507 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0.22296134 + - 0 + pooledParticles: 100 +--- !u!114 &7546284794258584817 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: ball 2 + m_EditorClassIdentifier: + particleIndices: 02000000 + m_Blueprint: {fileID: 11400000} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Chain.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Chain.asset.meta new file mode 100644 index 000000000..2e20b922b --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Chain.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9b7a30b754796421d9e0b869d8eb345b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Crane.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Crane.asset new file mode 100644 index 000000000..e88abc2c3 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Crane.asset @@ -0,0 +1,2339 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4315519228067560828 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: fixed + m_EditorClassIdentifier: + particleIndices: 0c000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f7e67b5626124d0db9886e6cd2aacff, type: 3} + m_Name: Crane + m_EditorClassIdentifier: + m_Empty: 0 + m_ActiveParticleCount: 51 + m_InitialActiveParticleCount: 51 + _bounds: + m_Center: {x: 0.9783744, y: -1.6007091, z: 0} + m_Extent: {x: 1.2935042, y: 1.8179287, z: 0} + positions: + - {x: -0.31512982, y: -3.4186378, z: 0} + - {x: -0.3056823, y: -3.268208, z: 0} + - {x: -0.29735997, y: -3.1172025, z: 0} + - {x: -0.294137, y: -2.9663126, z: 0} + - {x: -0.29642835, y: -2.815257, z: 0} + - {x: -0.30447915, y: -2.6642547, z: 0} + - {x: -0.31146774, y: -2.51792, z: 0} + - {x: -0.3127913, y: -2.3713863, z: 0} + - {x: -0.31057096, y: -2.224849, z: 0} + - {x: -0.30657423, y: -2.0783458, z: 0} + - {x: -0.3023701, y: -1.9318516, z: 0} + - {x: -0.2994541, y: -1.7853336, z: 0} + - {x: -0.2993567, y: -1.6387947, z: 0} + - {x: -0.30232438, y: -1.4934478, z: 0} + - {x: -0.30660304, y: -1.3481348, z: 0} + - {x: -0.31069574, y: -1.2028192, z: 0} + - {x: -0.31298584, y: -1.0574687, z: 0} + - {x: -0.31170303, y: -0.91211385, z: 0} + - {x: -0.30489832, y: -0.7669254, z: 0} + - {x: -0.29045326, y: -0.62231326, z: 0} + - {x: -0.27953932, y: -0.46936983, z: 0} + - {x: -0.2792294, y: -0.31600073, z: 0} + - {x: -0.27395794, y: -0.16279453, z: 0} + - {x: -0.24022967, y: -0.013745427, z: 0} + - {x: -0.10891642, y: 0.07976549, z: 0} + - {x: 0.04868553, y: 0.12708266, z: 0} + - {x: 0.21119903, y: 0.15914668, z: 0} + - {x: 0.37497035, y: 0.18214363, z: 0} + - {x: 0.54003805, y: 0.19865747, z: 0} + - {x: 0.7054689, y: 0.20974034, z: 0} + - {x: 0.8707676, y: 0.21588846, z: 0} + - {x: 1.03637, y: 0.21721959, z: 0} + - {x: 1.2020143, y: 0.2134598, z: 0} + - {x: 1.3673098, y: 0.2039462, z: 0} + - {x: 1.5314698, y: 0.18745771, z: 0} + - {x: 1.695718, y: 0.16125031, z: 0} + - {x: 1.8551009, y: 0.12051222, z: 0} + - {x: 2.0035534, y: 0.04992962, z: 0} + - {x: 2.1177197, y: -0.068810605, z: 0} + - {x: 2.1932914, y: -0.21575461, z: 0} + - {x: 2.2384713, y: -0.37482882, z: 0} + - {x: 2.262533, y: -0.5387369, z: 0} + - {x: 2.2718787, y: -0.7041704, z: 0} + - {x: 2.2708015, y: -0.86981475, z: 0} + - {x: 2.2623122, y: -1.0353558, z: 0} + - {x: 2.248836, y: -1.2006693, z: 0} + - {x: 2.2330368, y: -1.3651848, z: 0} + - {x: 2.2265346, y: -1.5091771, z: 0} + - {x: 2.2229314, y: -1.653681, z: 0} + - {x: 2.2201805, y: -1.7982486, z: 0} + - {x: 2.2181082, y: -1.9423363, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + restPositions: + - {x: -0.31512982, y: -3.4186378, z: 0, w: 1} + - {x: -0.3056823, y: -3.268208, z: 0, w: 1} + - {x: -0.29735997, y: -3.1172025, z: 0, w: 1} + - {x: -0.294137, y: -2.9663126, z: 0, w: 1} + - {x: -0.29642835, y: -2.815257, z: 0, w: 1} + - {x: -0.30447915, y: -2.6642547, z: 0, w: 1} + - {x: -0.31146774, y: -2.51792, z: 0, w: 1} + - {x: -0.3127913, y: -2.3713863, z: 0, w: 1} + - {x: -0.31057096, y: -2.224849, z: 0, w: 1} + - {x: -0.30657423, y: -2.0783458, z: 0, w: 1} + - {x: -0.3023701, y: -1.9318516, z: 0, w: 1} + - {x: -0.2994541, y: -1.7853336, z: 0, w: 1} + - {x: -0.2993567, y: -1.6387947, z: 0, w: 1} + - {x: -0.30232438, y: -1.4934478, z: 0, w: 1} + - {x: -0.30660304, y: -1.3481348, z: 0, w: 1} + - {x: -0.31069574, y: -1.2028192, z: 0, w: 1} + - {x: -0.31298584, y: -1.0574687, z: 0, w: 1} + - {x: -0.31170303, y: -0.91211385, z: 0, w: 1} + - {x: -0.30489832, y: -0.7669254, z: 0, w: 1} + - {x: -0.29045326, y: -0.62231326, z: 0, w: 1} + - {x: -0.27953932, y: -0.46936983, z: 0, w: 1} + - {x: -0.2792294, y: -0.31600073, z: 0, w: 1} + - {x: -0.27395794, y: -0.16279453, z: 0, w: 1} + - {x: -0.24022967, y: -0.013745427, z: 0, w: 1} + - {x: -0.10891642, y: 0.07976549, z: 0, w: 1} + - {x: 0.04868553, y: 0.12708266, z: 0, w: 1} + - {x: 0.21119903, y: 0.15914668, z: 0, w: 1} + - {x: 0.37497035, y: 0.18214363, z: 0, w: 1} + - {x: 0.54003805, y: 0.19865747, z: 0, w: 1} + - {x: 0.7054689, y: 0.20974034, z: 0, w: 1} + - {x: 0.8707676, y: 0.21588846, z: 0, w: 1} + - {x: 1.03637, y: 0.21721959, z: 0, w: 1} + - {x: 1.2020143, y: 0.2134598, z: 0, w: 1} + - {x: 1.3673098, y: 0.2039462, z: 0, w: 1} + - {x: 1.5314698, y: 0.18745771, z: 0, w: 1} + - {x: 1.695718, y: 0.16125031, z: 0, w: 1} + - {x: 1.8551009, y: 0.12051222, z: 0, w: 1} + - {x: 2.0035534, y: 0.04992962, z: 0, w: 1} + - {x: 2.1177197, y: -0.068810605, z: 0, w: 1} + - {x: 2.1932914, y: -0.21575461, z: 0, w: 1} + - {x: 2.2384713, y: -0.37482882, z: 0, w: 1} + - {x: 2.262533, y: -0.5387369, z: 0, w: 1} + - {x: 2.2718787, y: -0.7041704, z: 0, w: 1} + - {x: 2.2708015, y: -0.86981475, z: 0, w: 1} + - {x: 2.2623122, y: -1.0353558, z: 0, w: 1} + - {x: 2.248836, y: -1.2006693, z: 0, w: 1} + - {x: 2.2330368, y: -1.3651848, z: 0, w: 1} + - {x: 2.2265346, y: -1.5091771, z: 0, w: 1} + - {x: 2.2229314, y: -1.653681, z: 0, w: 1} + - {x: 2.2201805, y: -1.7982486, z: 0, w: 1} + - {x: 2.2181082, y: -1.9423363, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + orientations: [] + restOrientations: [] + velocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + angularVelocities: [] + invMasses: + - 10 + - 10.000001 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + invRotationalMasses: [] + filters: 0100ffff0100ffff010000000100000001000000010000000100000001000000010000000100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff010000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + principalRadii: + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.049999997, y: 0.049999997, z: 0.049999997} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + colors: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + points: + edges: 000000000100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000a0000000a0000000b0000000b0000000c0000000c0000000d0000000d0000000e0000000e0000000f0000000f00000010000000100000001100000011000000120000001200000013000000130000001400000014000000150000001500000016000000160000001700000017000000180000001800000019000000190000001a0000001a0000001b0000001b0000001c0000001c0000001d0000001d0000001e0000001e0000001f0000001f00000020000000200000002100000021000000220000002200000023000000230000002400000024000000250000002500000026000000260000002700000027000000280000002800000029000000290000002a0000002a0000002b0000002b0000002c0000002c0000002d0000002d0000002e0000002e0000002f0000002f0000003000000030000000310000003100000032000000 + triangles: + distanceConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000490000004a000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000490000004a000000 + m_ConstraintCount: 75 + m_ActiveConstraintCount: 25 + m_InitialActiveConstraintCount: 25 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.1507261 + - 0.1509243 + - 0.15121686 + - 0.1465397 + - 0.14655772 + - 0.146547 + - 0.14537717 + - 0.14537315 + - 0.14536047 + - 0.14533179 + - 0.15336941 + - 0.15281764 + - 0.16455178 + - 0.16537806 + - 0.16580167 + - 0.1656078 + - 0.16556904 + - 0.16632591 + - 0.16437778 + - 0.16523813 + - 0.16566478 + - 0.16564785 + - 0.16586185 + - 0.14413904 + - 0.14459378 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000490000004a000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000490000004a000000 + m_ConstraintCount: 75 + m_ActiveConstraintCount: 25 + m_InitialActiveConstraintCount: 25 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000310000003200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.15123467 + - 0.15107295 + - 0.14650144 + - 0.14655413 + - 0.14655447 + - 0.146539 + - 0.145376 + - 0.14536862 + - 0.14534782 + - 0.15333234 + - 0.15329686 + - 0.16120628 + - 0.16564642 + - 0.16589169 + - 0.16541299 + - 0.16568695 + - 0.164986 + - 0.16450676 + - 0.1647215 + - 0.16536571 + - 0.1656973 + - 0.1657586 + - 0.1652724 + - 0.14454886 + - 0.14410257 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + bendConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f0000003000000031000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f0000003000000031000000 + m_ConstraintCount: 50 + m_ActiveConstraintCount: 17 + m_InitialActiveConstraintCount: 17 + particleIndices: + serializedContents: 000000000200000001000000030000000500000004000000060000000800000007000000090000000b0000000a0000000c0000000e0000000d0000000f0000001100000010000000120000001400000013000000150000001700000016000000180000001a000000190000001b0000001d0000001c0000001e000000200000001f0000002100000023000000220000002400000026000000250000002700000029000000280000002a0000002c0000002b0000002d0000002f0000002e000000300000003200000031000000330000003500000034000000360000003800000037000000390000003b0000003a0000003c0000003e0000003d0000003f0000004100000040000000420000004400000043000000450000004700000046000000480000004a000000490000004b0000004d0000004c0000004e000000500000004f0000005100000053000000520000005400000056000000550000005700000059000000580000005a0000005c0000005b0000005d0000005f0000005e000000600000006200000061000000630000006500000064000000660000006800000067000000690000006b0000006a0000006c0000006e0000006d0000006f0000007100000070000000720000007400000073000000750000007700000076000000780000007a000000790000007b0000007d0000007c0000007e000000800000007f0000008100000083000000820000008400000086000000850000008700000089000000880000008a0000008c0000008b0000008d0000008f0000008e000000900000009200000091000000930000009500000094000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.00042131654 + - 0.0019198892 + - 0.001181275 + - 0.00042943415 + - 0.00043716797 + - 0.001190991 + - 0.0030162414 + - 0.009586283 + - 0.0053414763 + - 0.0018143662 + - 0.0016970462 + - 0.0032397506 + - 0.019705387 + - 0.007221373 + - 0.002470971 + - 0.0075102416 + - 0.00027710374 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f0000003000000031000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f0000003000000031000000 + m_ConstraintCount: 50 + m_ActiveConstraintCount: 16 + m_InitialActiveConstraintCount: 16 + particleIndices: + serializedContents: 0100000003000000020000000400000006000000050000000700000009000000080000000a0000000c0000000b0000000d0000000f0000000e000000100000001200000011000000130000001500000014000000160000001800000017000000190000001b0000001a0000001c0000001e0000001d0000001f0000002100000020000000220000002400000023000000250000002700000026000000280000002a000000290000002b0000002d0000002c0000002e000000300000002f0000003100000033000000320000003400000036000000350000003700000039000000380000003a0000003c0000003b0000003d0000003f0000003e000000400000004200000041000000430000004500000044000000460000004800000047000000490000004b0000004a0000004c0000004e0000004d0000004f0000005100000050000000520000005400000053000000550000005700000056000000580000005a000000590000005b0000005d0000005c0000005e000000600000005f0000006100000063000000620000006400000066000000650000006700000069000000680000006a0000006c0000006b0000006d0000006f0000006e000000700000007200000071000000730000007500000074000000760000007800000077000000790000007b0000007a0000007c0000007e0000007d0000007f0000008100000080000000820000008400000083000000850000008700000086000000880000008a000000890000008b0000008d0000008c0000008e000000900000008f000000910000009300000092000000940000009600000095000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.0017002142 + - 0.0015957004 + - 0.00059224834 + - 0.0009395445 + - 0.000061992956 + - 0.0018414557 + - 0.0035375215 + - 0.037427437 + - 0.0030513157 + - 0.001645499 + - 0.001921447 + - 0.0051078834 + - 0.015933849 + - 0.004931509 + - 0.0016639825 + - 0.0009812318 + - 1.0145596 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000 + m_ConstraintCount: 49 + m_ActiveConstraintCount: 16 + m_InitialActiveConstraintCount: 16 + particleIndices: + serializedContents: 020000000400000003000000050000000700000006000000080000000a000000090000000b0000000d0000000c0000000e000000100000000f0000001100000013000000120000001400000016000000150000001700000019000000180000001a0000001c0000001b0000001d0000001f0000001e000000200000002200000021000000230000002500000024000000260000002800000027000000290000002b0000002a0000002c0000002e0000002d0000002f0000003100000030000000320000003400000033000000350000003700000036000000380000003a000000390000003b0000003d0000003c0000003e000000400000003f0000004100000043000000420000004400000046000000450000004700000049000000480000004a0000004c0000004b0000004d0000004f0000004e000000500000005200000051000000530000005500000054000000560000005800000057000000590000005b0000005a0000005c0000005e0000005d0000005f0000006100000060000000620000006400000063000000650000006700000066000000680000006a000000690000006b0000006d0000006c0000006e000000700000006f0000007100000073000000720000007400000076000000750000007700000079000000780000007a0000007c0000007b0000007d0000007f0000007e000000800000008200000081000000830000008500000084000000860000008800000087000000890000008b0000008a0000008c0000008e0000008d0000008f0000009100000090000000920000009400000093000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.0018389499 + - 0.001889506 + - 0.00006921082 + - 0.0010962501 + - 0.000600988 + - 0.0025540222 + - 0.0016547412 + - 0.017716777 + - 0.0022038233 + - 0.0016088501 + - 0.0023555602 + - 0.010594352 + - 0.010907751 + - 0.0034749473 + - 0.0008187811 + - 0.00028498602 + - 0.9827781 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + skinConstraintsData: + batches: [] + tetherConstraintsData: + batches: [] + stretchShearConstraintsData: + batches: [] + bendTwistConstraintsData: + batches: [] + shapeMatchingConstraintsData: + batches: [] + aerodynamicConstraintsData: + batches: [] + chainConstraintsData: + batches: [] + volumeConstraintsData: + batches: [] + groups: + - {fileID: 1429558885246807610} + - {fileID: 3784795246232506483} + - {fileID: -4315519228067560828} + - {fileID: 8966044903772103319} + - {fileID: 1448059488115486757} + - {fileID: 221160992778322150} + - {fileID: 7137255722519385285} + - {fileID: 7435677298537737283} + path: + m_Names: + - fixed + - control point + - fixed + - fixed + - fixed + - control point + - control point + - endpoint + m_Points: + data: + - tangentMode: 0 + inTangent: {x: 0.013374074, y: -0.24964216, z: -0} + position: {x: -0.31512982, y: -3.4186378, z: 0} + outTangent: {x: -0.0029436946, y: 0.054947376, z: 0} + - tangentMode: 0 + inTangent: {x: 0.029481154, y: -0.40428692, z: -0} + position: {x: -0.30447915, y: -2.6642547, z: 0} + outTangent: {x: -0.023183525, y: 0.31792498, z: 0} + - tangentMode: 0 + inTangent: {x: 0.0043648183, y: -0.34541774, z: 0} + position: {x: -0.2993567, y: -1.6387947, z: 0} + outTangent: {x: -0.004487418, y: 0.35511988, z: 0} + - tangentMode: 0 + inTangent: {x: -0.042096525, y: -0.31926423, z: 0} + position: {x: -0.29045326, y: -0.62231326, z: 0} + outTangent: {x: 0.03052252, y: 0.23148584, z: 0} + - tangentMode: 0 + inTangent: {x: -0.06755149, y: -0.16796803, z: 0} + position: {x: -0.24022967, y: -0.013745427, z: 0} + outTangent: {x: 0.09870601, y: 0.2454343, z: -0} + - tangentMode: 0 + inTangent: {x: -0.37514892, y: 0.274398, z: -0} + position: {x: 2.0035534, y: 0.04992962, z: 0} + outTangent: {x: 0.35668874, y: -0.26089552, z: 0} + - tangentMode: 0 + inTangent: {x: 0.04056835, y: 0.42199183, z: 0} + position: {x: 2.2330368, y: -1.3651848, z: 0} + outTangent: {x: -0.00857234, y: -0.08916843, z: 0} + - tangentMode: 0 + inTangent: {x: -0.00015902519, y: 0.008308649, z: 0} + position: {x: 2.2181082, y: -1.9423363, z: 0} + outTangent: {x: 0.0047840523, y: -0.24995418, z: -0} + m_Normals: + data: + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + m_Colors: + data: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + m_Thickness: + data: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + m_Masses: + data: + - 0.1 + - 0.1 + - 0.1 + - 0.1 + - 0.1 + - 0.1 + - 0.1 + - 0.1 + m_RotationalMasses: + data: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + m_Filters: + data: 0100ffff010000000100ffff0100ffff0100ffff0100ffff0100ffff01000000 + m_Closed: 0 + m_ArcLengthTable: + - 0 + - 0.009472036 + - 0.022132482 + - 0.03790929 + - 0.056718282 + - 0.078470945 + - 0.10307723 + - 0.13044672 + - 0.16048929 + - 0.19311549 + - 0.22823672 + - 0.26576552 + - 0.30561554 + - 0.34770188 + - 0.39194104 + - 0.43825117 + - 0.4865521 + - 0.53676546 + - 0.588815 + - 0.6426263 + - 0.6981274 + - 0.75524855 + - 0.80105555 + - 0.847384 + - 0.89420784 + - 0.94149816 + - 0.9892235 + - 1.03735 + - 1.0858425 + - 1.1346636 + - 1.183775 + - 1.2331372 + - 1.2827103 + - 1.3324533 + - 1.3823252 + - 1.4322847 + - 1.4822909 + - 1.5323029 + - 1.5822803 + - 1.6321836 + - 1.6819742 + - 1.7316145 + - 1.7810686 + - 1.8317167 + - 1.8821862 + - 1.9324706 + - 1.9825627 + - 2.0324547 + - 2.0821385 + - 2.1316059 + - 2.1808486 + - 2.229859 + - 2.2786303 + - 2.3271558 + - 2.3754306 + - 2.4234507 + - 2.4712138 + - 2.5187197 + - 2.5659702 + - 2.6129696 + - 2.6597252 + - 2.706247 + - 2.7525487 + - 2.7986474 + - 2.8317878 + - 2.8645167 + - 2.896855 + - 2.9288154 + - 2.960403 + - 2.9916165 + - 3.0224502 + - 3.0528944 + - 3.082937 + - 3.1125655 + - 3.1417682 + - 3.1705356 + - 3.1988626 + - 3.2267504 + - 3.2542086 + - 3.2812576 + - 3.3079312 + - 3.3342783 + - 3.3603663 + - 3.3862824 + - 3.4121354 + - 3.454768 + - 3.510719 + - 3.5818093 + - 3.6676068 + - 3.7668674 + - 3.8780124 + - 3.9993064 + - 4.128933 + - 4.265031 + - 4.405716 + - 4.5490923 + - 4.693261 + - 4.836329 + - 4.976415 + - 5.1116633 + - 5.2402554 + - 5.3604364 + - 5.4705553 + - 5.5691433 + - 5.6550694 + - 5.727879 + - 5.7906556 + - 5.853395 + - 5.916935 + - 5.981878 + - 6.048604 + - 6.117303 + - 6.188004 + - 6.2606106 + - 6.334925 + - 6.410672 + - 6.4875164 + - 6.5650744 + - 6.642926 + - 6.7206225 + - 6.797691 + - 6.873641 + - 6.947968 + - 7.020156 + - 7.0896807 + - 7.156012 + - 7.2186165 + - 7.2339664 + - 7.2540574 + - 7.278337 + - 7.3062496 + - 7.337238 + - 7.3707447 + - 7.406212 + - 7.4430814 + - 7.4807954 + - 7.5187955 + - 7.556524 + - 7.593422 + - 7.6289315 + - 7.662494 + - 7.6935515 + - 7.721545 + - 7.745917 + - 7.7661085 + - 7.7815614 + - 7.791717 + - 7.7960176 + m_TotalSplineLenght: 7.7960176 + OnPathChanged: + m_PersistentCalls: + m_Calls: [] + OnControlPointAdded: + m_PersistentCalls: + m_Calls: [] + OnControlPointRemoved: + m_PersistentCalls: + m_Calls: [] + OnControlPointRenamed: + m_PersistentCalls: + m_Calls: [] + thickness: 0.05 + resolution: 0.3 + m_InterParticleDistance: 0.15592036 + totalParticles: 151 + m_RestLength: 23.380884 + restLengths: + - 0.1507261 + - 0.15123467 + - 0.1509243 + - 0.15107295 + - 0.15121686 + - 0.14650144 + - 0.1465397 + - 0.14655413 + - 0.14655772 + - 0.14655447 + - 0.146547 + - 0.146539 + - 0.14537717 + - 0.145376 + - 0.14537315 + - 0.14536862 + - 0.14536047 + - 0.14534782 + - 0.14533179 + - 0.15333234 + - 0.15336941 + - 0.15329686 + - 0.15281764 + - 0.16120628 + - 0.16455178 + - 0.16564642 + - 0.16537806 + - 0.16589169 + - 0.16580167 + - 0.16541299 + - 0.1656078 + - 0.16568695 + - 0.16556904 + - 0.164986 + - 0.16632591 + - 0.16450676 + - 0.16437778 + - 0.1647215 + - 0.16523813 + - 0.16536571 + - 0.16566478 + - 0.1656973 + - 0.16564785 + - 0.1657586 + - 0.16586185 + - 0.1652724 + - 0.14413904 + - 0.14454886 + - 0.14459378 + - 0.14410257 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0.15592036 + - 0 + pooledParticles: 100 +--- !u!114 &221160992778322150 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point + m_EditorClassIdentifier: + particleIndices: 25000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &1429558885246807610 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: fixed + m_EditorClassIdentifier: + particleIndices: 00000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &1448059488115486757 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: fixed + m_EditorClassIdentifier: + particleIndices: 17000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &3784795246232506483 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point + m_EditorClassIdentifier: + particleIndices: 05000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &7137255722519385285 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point + m_EditorClassIdentifier: + particleIndices: 2e000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &7435677298537737283 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: endpoint + m_EditorClassIdentifier: + particleIndices: 32000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &8966044903772103319 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: fixed + m_EditorClassIdentifier: + particleIndices: 13000000 + m_Blueprint: {fileID: 11400000} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Crane.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Crane.asset.meta new file mode 100644 index 000000000..97570c909 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Crane.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d3d21d979f26f472ca2945f4e727239c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/CuttableRope.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/CuttableRope.asset new file mode 100644 index 000000000..144451914 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/CuttableRope.asset @@ -0,0 +1,2061 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-8864857226987616246 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: end + m_EditorClassIdentifier: + particleIndices: 2e000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-2639811391673711616 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: start + m_EditorClassIdentifier: + particleIndices: 00000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f7e67b5626124d0db9886e6cd2aacff, type: 3} + m_Name: CuttableRope + m_EditorClassIdentifier: + m_Empty: 0 + m_ActiveParticleCount: 47 + m_InitialActiveParticleCount: 47 + _bounds: + m_Center: {x: 0, y: -1.1273527, z: 0} + m_Extent: {x: 1, y: 1.1273527, z: 0} + positions: + - {x: -1, y: 0, z: 0} + - {x: -0.97762287, y: -0.11522584, z: 0} + - {x: -0.95936936, y: -0.23137596, z: 0} + - {x: -0.9437566, y: -0.34758952, z: 0} + - {x: -0.92964494, y: -0.46408504, z: 0} + - {x: -0.9162184, y: -0.5808135, z: 0} + - {x: -0.9028167, y: -0.69767493, z: 0} + - {x: -0.8888646, y: -0.8145225, z: 0} + - {x: -0.87382543, y: -0.9311737, z: 0} + - {x: -0.85715926, y: -1.047494, z: 0} + - {x: -0.83825207, y: -1.1635969, z: 0} + - {x: -0.81646955, y: -1.2792301, z: 0} + - {x: -0.7910905, y: -1.3940624, z: 0} + - {x: -0.76125896, y: -1.5076991, z: 0} + - {x: -0.72593284, y: -1.6196305, z: 0} + - {x: -0.6838275, y: -1.7291285, z: 0} + - {x: -0.63338226, y: -1.8350657, z: 0} + - {x: -0.57281363, y: -1.9356464, z: 0} + - {x: -0.50040925, y: -2.0280955, z: 0} + - {x: -0.4151265, y: -2.1086814, z: 0} + - {x: -0.31745207, y: -2.17337, z: 0} + - {x: -0.20975508, y: -2.2192795, z: 0} + - {x: -0.09552427, y: -2.2458577, z: 0} + - {x: 0.022092208, y: -2.2547054, z: 0} + - {x: 0.13853739, y: -2.2465513, z: 0} + - {x: 0.25116643, y: -2.2186759, z: 0} + - {x: 0.35621136, y: -2.1697896, z: 0} + - {x: 0.44994435, y: -2.1014705, z: 0} + - {x: 0.5304258, y: -2.0177364, z: 0} + - {x: 0.5979065, y: -1.923179, z: 0} + - {x: 0.65397346, y: -1.8214862, z: 0} + - {x: 0.7005688, y: -1.7151183, z: 0} + - {x: 0.7394668, y: -1.6056024, z: 0} + - {x: 0.772125, y: -1.4939107, z: 0} + - {x: 0.79970485, y: -1.3807198, z: 0} + - {x: 0.82313854, y: -1.2665546, z: 0} + - {x: 0.8431833, y: -1.1519176, z: 0} + - {x: 0.8605447, y: -1.0368524, z: 0} + - {x: 0.87582904, y: -0.9213535, z: 0} + - {x: 0.8895526, y: -0.80569303, z: 0} + - {x: 0.9022278, y: -0.6901039, z: 0} + - {x: 0.91440463, y: -0.5746819, z: 0} + - {x: 0.9267968, y: -0.45864666, z: 0} + - {x: 0.9401173, y: -0.34276536, z: 0} + - {x: 0.95544344, y: -0.22725037, z: 0} + - {x: 0.9744411, y: -0.112545475, z: 0} + - {x: 1, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + restPositions: + - {x: -1, y: 0, z: 0, w: 1} + - {x: -0.97762287, y: -0.11522584, z: 0, w: 1} + - {x: -0.95936936, y: -0.23137596, z: 0, w: 1} + - {x: -0.9437566, y: -0.34758952, z: 0, w: 1} + - {x: -0.92964494, y: -0.46408504, z: 0, w: 1} + - {x: -0.9162184, y: -0.5808135, z: 0, w: 1} + - {x: -0.9028167, y: -0.69767493, z: 0, w: 1} + - {x: -0.8888646, y: -0.8145225, z: 0, w: 1} + - {x: -0.87382543, y: -0.9311737, z: 0, w: 1} + - {x: -0.85715926, y: -1.047494, z: 0, w: 1} + - {x: -0.83825207, y: -1.1635969, z: 0, w: 1} + - {x: -0.81646955, y: -1.2792301, z: 0, w: 1} + - {x: -0.7910905, y: -1.3940624, z: 0, w: 1} + - {x: -0.76125896, y: -1.5076991, z: 0, w: 1} + - {x: -0.72593284, y: -1.6196305, z: 0, w: 1} + - {x: -0.6838275, y: -1.7291285, z: 0, w: 1} + - {x: -0.63338226, y: -1.8350657, z: 0, w: 1} + - {x: -0.57281363, y: -1.9356464, z: 0, w: 1} + - {x: -0.50040925, y: -2.0280955, z: 0, w: 1} + - {x: -0.4151265, y: -2.1086814, z: 0, w: 1} + - {x: -0.31745207, y: -2.17337, z: 0, w: 1} + - {x: -0.20975508, y: -2.2192795, z: 0, w: 1} + - {x: -0.09552427, y: -2.2458577, z: 0, w: 1} + - {x: 0.022092208, y: -2.2547054, z: 0, w: 1} + - {x: 0.13853739, y: -2.2465513, z: 0, w: 1} + - {x: 0.25116643, y: -2.2186759, z: 0, w: 1} + - {x: 0.35621136, y: -2.1697896, z: 0, w: 1} + - {x: 0.44994435, y: -2.1014705, z: 0, w: 1} + - {x: 0.5304258, y: -2.0177364, z: 0, w: 1} + - {x: 0.5979065, y: -1.923179, z: 0, w: 1} + - {x: 0.65397346, y: -1.8214862, z: 0, w: 1} + - {x: 0.7005688, y: -1.7151183, z: 0, w: 1} + - {x: 0.7394668, y: -1.6056024, z: 0, w: 1} + - {x: 0.772125, y: -1.4939107, z: 0, w: 1} + - {x: 0.79970485, y: -1.3807198, z: 0, w: 1} + - {x: 0.82313854, y: -1.2665546, z: 0, w: 1} + - {x: 0.8431833, y: -1.1519176, z: 0, w: 1} + - {x: 0.8605447, y: -1.0368524, z: 0, w: 1} + - {x: 0.87582904, y: -0.9213535, z: 0, w: 1} + - {x: 0.8895526, y: -0.80569303, z: 0, w: 1} + - {x: 0.9022278, y: -0.6901039, z: 0, w: 1} + - {x: 0.91440463, y: -0.5746819, z: 0, w: 1} + - {x: 0.9267968, y: -0.45864666, z: 0, w: 1} + - {x: 0.9401173, y: -0.34276536, z: 0, w: 1} + - {x: 0.95544344, y: -0.22725037, z: 0, w: 1} + - {x: 0.9744411, y: -0.112545475, z: 0, w: 1} + - {x: 1, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + orientations: [] + restOrientations: [] + velocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + angularVelocities: [] + invMasses: + - 10 + - 10 + - 10 + - 9.999999 + - 10.000001 + - 10 + - 10.000001 + - 9.999999 + - 10 + - 10 + - 10 + - 10 + - 10 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + invRotationalMasses: [] + filters: 0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + principalRadii: + - {x: 0.029999997, y: 0.029999997, z: 0.029999997} + - {x: 0.029992776, y: 0.029992776, z: 0.029992776} + - {x: 0.029973807, y: 0.029973807, z: 0.029973807} + - {x: 0.029946083, y: 0.029946083, z: 0.029946083} + - {x: 0.029911412, y: 0.029911412, z: 0.029911412} + - {x: 0.029871061, y: 0.029871061, z: 0.029871061} + - {x: 0.029825961, y: 0.029825961, z: 0.029825961} + - {x: 0.029776854, y: 0.029776854, z: 0.029776854} + - {x: 0.029724332, y: 0.029724332, z: 0.029724332} + - {x: 0.029668894, y: 0.029668894, z: 0.029668894} + - {x: 0.029610826, y: 0.029610826, z: 0.029610826} + - {x: 0.029550528, y: 0.029550528, z: 0.029550528} + - {x: 0.029488418, y: 0.029488418, z: 0.029488418} + - {x: 0.029424926, y: 0.029424926, z: 0.029424926} + - {x: 0.029360538, y: 0.029360538, z: 0.029360538} + - {x: 0.029295865, y: 0.029295865, z: 0.029295865} + - {x: 0.029231772, y: 0.029231772, z: 0.029231772} + - {x: 0.029169565, y: 0.029169565, z: 0.029169565} + - {x: 0.02911124, y: 0.02911124, z: 0.02911124} + - {x: 0.029059494, y: 0.029059494, z: 0.029059494} + - {x: 0.029017346, y: 0.029017346, z: 0.029017346} + - {x: 0.028987132, y: 0.028987132, z: 0.028987132} + - {x: 0.028969646, y: 0.028969646, z: 0.028969646} + - {x: 0.028964136, y: 0.028964136, z: 0.028964136} + - {x: 0.0289697, y: 0.0289697, z: 0.0289697} + - {x: 0.028987357, y: 0.028987357, z: 0.028987357} + - {x: 0.029017627, y: 0.029017627, z: 0.029017627} + - {x: 0.029059224, y: 0.029059224, z: 0.029059224} + - {x: 0.029109413, y: 0.029109413, z: 0.029109413} + - {x: 0.029165206, y: 0.029165206, z: 0.029165206} + - {x: 0.029224247, y: 0.029224247, z: 0.029224247} + - {x: 0.029284962, y: 0.029284962, z: 0.029284962} + - {x: 0.029346356, y: 0.029346356, z: 0.029346356} + - {x: 0.02940776, y: 0.02940776, z: 0.02940776} + - {x: 0.029468678, y: 0.029468678, z: 0.029468678} + - {x: 0.029528687, y: 0.029528687, z: 0.029528687} + - {x: 0.029587371, y: 0.029587371, z: 0.029587371} + - {x: 0.029644525, y: 0.029644525, z: 0.029644525} + - {x: 0.02969992, y: 0.02969992, z: 0.02969992} + - {x: 0.029753137, y: 0.029753137, z: 0.029753137} + - {x: 0.029803708, y: 0.029803708, z: 0.029803708} + - {x: 0.02985112, y: 0.02985112, z: 0.02985112} + - {x: 0.029894998, y: 0.029894998, z: 0.029894998} + - {x: 0.029934045, y: 0.029934045, z: 0.029934045} + - {x: 0.02996669, y: 0.02996669, z: 0.02996669} + - {x: 0.029990312, y: 0.029990312, z: 0.029990312} + - {x: 0.029999997, y: 0.029999997, z: 0.029999997} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + colors: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + points: + edges: 000000000100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000a0000000a0000000b0000000b0000000c0000000c0000000d0000000d0000000e0000000e0000000f0000000f00000010000000100000001100000011000000120000001200000013000000130000001400000014000000150000001500000016000000160000001700000017000000180000001800000019000000190000001a0000001a0000001b0000001b0000001c0000001c0000001d0000001d0000001e0000001e0000001f0000001f00000020000000200000002100000021000000220000002200000023000000230000002400000024000000250000002500000026000000260000002700000027000000280000002800000029000000290000002a0000002a0000002b0000002b0000002c0000002c0000002d0000002d0000002e000000 + triangles: + distanceConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000 + m_ConstraintCount: 73 + m_ActiveConstraintCount: 23 + m_InitialActiveConstraintCount: 23 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.11737857 + - 0.117257625 + - 0.11749813 + - 0.1176776 + - 0.117508255 + - 0.11766701 + - 0.11748713 + - 0.11731443 + - 0.117409684 + - 0.1173339 + - 0.11707407 + - 0.11794879 + - 0.116027325 + - 0.11598866 + - 0.11616688 + - 0.116126075 + - 0.116368376 + - 0.11654539 + - 0.116367616 + - 0.11647182 + - 0.11606255 + - 0.116644375 + - 0.116267465 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000 + m_ConstraintCount: 73 + m_ActiveConstraintCount: 23 + m_InitialActiveConstraintCount: 23 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.11757569 + - 0.117347114 + - 0.117627345 + - 0.11761664 + - 0.11763225 + - 0.117603354 + - 0.11737358 + - 0.117334664 + - 0.117427535 + - 0.11715327 + - 0.11728205 + - 0.11673033 + - 0.115863316 + - 0.11614065 + - 0.11612464 + - 0.1162187 + - 0.11650247 + - 0.11637627 + - 0.116505764 + - 0.11628203 + - 0.11669507 + - 0.11652727 + - 0.115411185 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + bendConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000 + m_ConstraintCount: 49 + m_ActiveConstraintCount: 15 + m_InitialActiveConstraintCount: 15 + particleIndices: + serializedContents: 000000000200000001000000030000000500000004000000060000000800000007000000090000000b0000000a0000000c0000000e0000000d0000000f0000001100000010000000120000001400000013000000150000001700000016000000180000001a000000190000001b0000001d0000001c0000001e000000200000001f0000002100000023000000220000002400000026000000250000002700000029000000280000002a0000002c0000002b0000002d0000002f0000002e000000300000003200000031000000330000003500000034000000360000003800000037000000390000003b0000003a0000003c0000003e0000003d0000003f0000004100000040000000420000004400000043000000450000004700000046000000480000004a000000490000004b0000004d0000004c0000004e000000500000004f0000005100000053000000520000005400000056000000550000005700000059000000580000005a0000005c0000005b0000005d0000005f0000005e000000600000006200000061000000630000006500000064000000660000006800000067000000690000006b0000006a0000006c0000006e0000006d0000006f0000007100000070000000720000007400000073000000750000007700000076000000780000007a000000790000007b0000007d0000007c0000007e000000800000007f0000008100000083000000820000008400000086000000850000008700000089000000880000008a0000008c0000008b0000008d0000008f0000008e000000900000009200000091000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.001408647 + - 0.00024118213 + - 0.00036826893 + - 0.00097113923 + - 0.0019177926 + - 0.0038177262 + - 0.006718761 + - 0.0060169417 + - 0.007446072 + - 0.0056387554 + - 0.0027720614 + - 0.0014197745 + - 0.0007073063 + - 0.00017521733 + - 0.0006796378 + - 0.34390527 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000 + m_ConstraintCount: 48 + m_ActiveConstraintCount: 15 + m_InitialActiveConstraintCount: 15 + particleIndices: + serializedContents: 0100000003000000020000000400000006000000050000000700000009000000080000000a0000000c0000000b0000000d0000000f0000000e000000100000001200000011000000130000001500000014000000160000001800000017000000190000001b0000001a0000001c0000001e0000001d0000001f0000002100000020000000220000002400000023000000250000002700000026000000280000002a000000290000002b0000002d0000002c0000002e000000300000002f0000003100000033000000320000003400000036000000350000003700000039000000380000003a0000003c0000003b0000003d0000003f0000003e000000400000004200000041000000430000004500000044000000460000004800000047000000490000004b0000004a0000004c0000004e0000004d0000004f0000005100000050000000520000005400000053000000550000005700000056000000580000005a000000590000005b0000005d0000005c0000005e000000600000005f0000006100000063000000620000006400000066000000650000006700000069000000680000006a0000006c0000006b0000006d0000006f0000006e000000700000007200000071000000730000007500000074000000760000007800000077000000790000007b0000007a0000007c0000007e0000007d0000007f0000008100000080000000820000008400000083000000850000008700000086000000880000008a000000890000008b0000008d0000008c0000008e000000900000008f000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.0008804953 + - 0.000045054567 + - 0.000553439 + - 0.0012282074 + - 0.002400889 + - 0.0047867075 + - 0.007095421 + - 0.0056808805 + - 0.0074951337 + - 0.0044868477 + - 0.0022027292 + - 0.001140577 + - 0.0005230716 + - 0.00021661723 + - 0.0012532381 + - 0.33333334 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000 + m_ConstraintCount: 48 + m_ActiveConstraintCount: 15 + m_InitialActiveConstraintCount: 15 + particleIndices: + serializedContents: 020000000400000003000000050000000700000006000000080000000a000000090000000b0000000d0000000c0000000e000000100000000f0000001100000013000000120000001400000016000000150000001700000019000000180000001a0000001c0000001b0000001d0000001f0000001e000000200000002200000021000000230000002500000024000000260000002800000027000000290000002b0000002a0000002c0000002e0000002d0000002f0000003100000030000000320000003400000033000000350000003700000036000000380000003a000000390000003b0000003d0000003c0000003e000000400000003f0000004100000043000000420000004400000046000000450000004700000049000000480000004a0000004c0000004b0000004d0000004f0000004e000000500000005200000051000000530000005500000054000000560000005800000057000000590000005b0000005a0000005c0000005e0000005d0000005f0000006100000060000000620000006400000063000000650000006700000066000000680000006a000000690000006b0000006d0000006c0000006e000000700000006f0000007100000073000000720000007400000076000000750000007700000079000000780000007a0000007c0000007b0000007d0000007f0000007e000000800000008200000081000000830000008500000084000000860000008800000087000000890000008b0000008a0000008c0000008e0000008d0000008f0000009100000090000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.0005091331 + - 0.00018352199 + - 0.0007505444 + - 0.0015367282 + - 0.003022704 + - 0.0058365334 + - 0.0068020825 + - 0.0066956216 + - 0.0067760325 + - 0.0035208783 + - 0.0017649935 + - 0.00090579706 + - 0.00035027033 + - 0.00031363 + - 0.0023024208 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + skinConstraintsData: + batches: [] + tetherConstraintsData: + batches: [] + stretchShearConstraintsData: + batches: [] + bendTwistConstraintsData: + batches: [] + shapeMatchingConstraintsData: + batches: [] + aerodynamicConstraintsData: + batches: [] + chainConstraintsData: + batches: [] + volumeConstraintsData: + batches: [] + groups: + - {fileID: -2639811391673711616} + - {fileID: 5589158130596133390} + - {fileID: -8864857226987616246} + path: + m_Names: + - start + - middle + - end + m_Points: + data: + - tangentMode: 0 + inTangent: {x: -0.053591967, y: 0.2441883, z: -0} + position: {x: -1, y: 0, z: 0} + outTangent: {x: 0.1642955, y: -0.7486017, z: 0} + - tangentMode: 1 + inTangent: {x: -0.962546, y: 0.0066326223, z: 0} + position: {x: 0.022092208, y: -2.2547054, z: 0} + outTangent: {x: 0.9498895, y: -0.0065454063, z: 0} + - tangentMode: 0 + inTangent: {x: -0.1654113, y: -0.6018264, z: 0} + position: {x: 1, y: 0, z: 0} + outTangent: {x: 0.06625523, y: 0.24106061, z: -0} + m_Normals: + data: + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + m_Colors: + data: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + m_Thickness: + data: + - 0.99999994 + - 0.9654712 + - 0.99999994 + m_Masses: + data: + - 0.1 + - 0.10000001 + - 0.1 + m_RotationalMasses: + data: + - 1 + - 1 + - 1 + m_Filters: + data: 0100ffff0100ffff0100ffff + m_Closed: 0 + m_ArcLengthTable: + - 0 + - 0.113920406 + - 0.23598218 + - 0.36499673 + - 0.49968532 + - 0.638722 + - 0.78076386 + - 0.92447466 + - 1.0685471 + - 1.2117265 + - 1.352838 + - 1.490823 + - 1.6247864 + - 1.754063 + - 1.8783082 + - 1.9976172 + - 2.1126747 + - 2.22491 + - 2.336607 + - 2.4508846 + - 2.571493 + - 2.702471 + - 2.8314886 + - 2.950353 + - 3.0638006 + - 3.176043 + - 3.2903454 + - 3.408862 + - 3.5327182 + - 3.6622136 + - 3.7970357 + - 3.9364362 + - 4.07936 + - 4.2245383 + - 4.370552 + - 4.5158772 + - 4.658921 + - 4.798045 + - 4.931594 + - 5.0579166 + - 5.1754003 + - 5.2825193 + - 5.3779206 + m_TotalSplineLenght: 5.3779206 + OnPathChanged: + m_PersistentCalls: + m_Calls: [] + OnControlPointAdded: + m_PersistentCalls: + m_Calls: [] + OnControlPointRemoved: + m_PersistentCalls: + m_Calls: [] + OnControlPointRenamed: + m_PersistentCalls: + m_Calls: [] + thickness: 0.03 + resolution: 0.25 + m_InterParticleDistance: 0.116911314 + totalParticles: 147 + m_RestLength: 17.067047 + restLengths: + - 0.11737857 + - 0.11757569 + - 0.117257625 + - 0.117347114 + - 0.11749813 + - 0.117627345 + - 0.1176776 + - 0.11761664 + - 0.117508255 + - 0.11763225 + - 0.11766701 + - 0.117603354 + - 0.11748713 + - 0.11737358 + - 0.11731443 + - 0.117334664 + - 0.117409684 + - 0.117427535 + - 0.1173339 + - 0.11715327 + - 0.11707407 + - 0.11728205 + - 0.11794879 + - 0.11673033 + - 0.116027325 + - 0.115863316 + - 0.11598866 + - 0.11614065 + - 0.11616688 + - 0.11612464 + - 0.116126075 + - 0.1162187 + - 0.116368376 + - 0.11650247 + - 0.11654539 + - 0.11637627 + - 0.116367616 + - 0.116505764 + - 0.11647182 + - 0.11628203 + - 0.11606255 + - 0.11669507 + - 0.116644375 + - 0.11652727 + - 0.116267465 + - 0.115411185 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0.116911314 + - 0 + pooledParticles: 100 +--- !u!114 &5589158130596133390 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: middle + m_EditorClassIdentifier: + particleIndices: 17000000 + m_Blueprint: {fileID: 11400000} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/CuttableRope.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/CuttableRope.asset.meta new file mode 100644 index 000000000..82d579343 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/CuttableRope.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f92460ac39eb444ad8f2bfb5714bb425 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Firehose.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Firehose.asset new file mode 100644 index 000000000..1ae6e511a --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Firehose.asset @@ -0,0 +1,777 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2867197770825267649 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: start + m_EditorClassIdentifier: + particleIndices: 00000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-2309273508427477570 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: end + m_EditorClassIdentifier: + particleIndices: 27000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f7e67b5626124d0db9886e6cd2aacff, type: 3} + m_Name: Firehose + m_EditorClassIdentifier: + m_Empty: 0 + m_ActiveParticleCount: 40 + m_InitialActiveParticleCount: 40 + _bounds: + m_Center: {x: -1.7310143, y: 0, z: 0} + m_Extent: {x: 2.7310143, y: 0, z: 0} + positions: + - {x: -4.462028, y: 0, z: 0} + - {x: -4.348594, y: 0, z: 0} + - {x: -4.2085147, y: 0, z: 0} + - {x: -4.071203, y: 0, z: 0} + - {x: -3.9306402, y: 0, z: 0} + - {x: -3.785646, y: 0, z: 0} + - {x: -3.6486564, y: 0, z: 0} + - {x: -3.504979, y: 0, z: 0} + - {x: -3.36648, y: 0, z: 0} + - {x: -3.2230043, y: 0, z: 0} + - {x: -3.084384, y: 0, z: 0} + - {x: -2.9416027, y: 0, z: 0} + - {x: -2.8021276, y: 0, z: 0} + - {x: -2.6607575, y: 0, z: 0} + - {x: -2.5197048, y: 0, z: 0} + - {x: -2.3792155, y: 0, z: 0} + - {x: -2.2374017, y: 0, z: 0} + - {x: -2.0971684, y: 0, z: 0} + - {x: -1.9560953, y: 0, z: 0} + - {x: -1.8150618, y: 0, z: 0} + - {x: -1.6742334, y: 0, z: 0} + - {x: -1.5334656, y: 0, z: 0} + - {x: -1.3921267, y: 0, z: 0} + - {x: -1.251627, y: 0, z: 0} + - {x: -1.1103319, y: 0, z: 0} + - {x: -0.96929765, y: 0, z: 0} + - {x: -0.82927155, y: 0, z: 0} + - {x: -0.6870387, y: 0, z: 0} + - {x: -0.5477292, y: 0, z: 0} + - {x: -0.40506354, y: 0, z: 0} + - {x: -0.26526135, y: 0, z: 0} + - {x: -0.12323682, y: 0, z: 0} + - {x: 0.016865503, y: 0, z: 0} + - {x: 0.15891849, y: 0, z: 0} + - {x: 0.29801917, y: 0, z: 0} + - {x: 0.44157395, y: 0, z: 0} + - {x: 0.5802135, y: 0, z: 0} + - {x: 0.72034454, y: 0, z: 0} + - {x: 0.8617192, y: 0, z: 0} + - {x: 1, y: 0, z: 0} + restPositions: + - {x: -4.462028, y: 0, z: 0, w: 1} + - {x: -4.348594, y: 0, z: 0, w: 1} + - {x: -4.2085147, y: 0, z: 0, w: 1} + - {x: -4.071203, y: 0, z: 0, w: 1} + - {x: -3.9306402, y: 0, z: 0, w: 1} + - {x: -3.785646, y: 0, z: 0, w: 1} + - {x: -3.6486564, y: 0, z: 0, w: 1} + - {x: -3.504979, y: 0, z: 0, w: 1} + - {x: -3.36648, y: 0, z: 0, w: 1} + - {x: -3.2230043, y: 0, z: 0, w: 1} + - {x: -3.084384, y: 0, z: 0, w: 1} + - {x: -2.9416027, y: 0, z: 0, w: 1} + - {x: -2.8021276, y: 0, z: 0, w: 1} + - {x: -2.6607575, y: 0, z: 0, w: 1} + - {x: -2.5197048, y: 0, z: 0, w: 1} + - {x: -2.3792155, y: 0, z: 0, w: 1} + - {x: -2.2374017, y: 0, z: 0, w: 1} + - {x: -2.0971684, y: 0, z: 0, w: 1} + - {x: -1.9560953, y: 0, z: 0, w: 1} + - {x: -1.8150618, y: 0, z: 0, w: 1} + - {x: -1.6742334, y: 0, z: 0, w: 1} + - {x: -1.5334656, y: 0, z: 0, w: 1} + - {x: -1.3921267, y: 0, z: 0, w: 1} + - {x: -1.251627, y: 0, z: 0, w: 1} + - {x: -1.1103319, y: 0, z: 0, w: 1} + - {x: -0.96929765, y: 0, z: 0, w: 1} + - {x: -0.82927155, y: 0, z: 0, w: 1} + - {x: -0.6870387, y: 0, z: 0, w: 1} + - {x: -0.5477292, y: 0, z: 0, w: 1} + - {x: -0.40506354, y: 0, z: 0, w: 1} + - {x: -0.26526135, y: 0, z: 0, w: 1} + - {x: -0.12323682, y: 0, z: 0, w: 1} + - {x: 0.016865503, y: 0, z: 0, w: 1} + - {x: 0.15891849, y: 0, z: 0, w: 1} + - {x: 0.29801917, y: 0, z: 0, w: 1} + - {x: 0.44157395, y: 0, z: 0, w: 1} + - {x: 0.5802135, y: 0, z: 0, w: 1} + - {x: 0.72034454, y: 0, z: 0, w: 1} + - {x: 0.8617192, y: 0, z: 0, w: 1} + - {x: 1, y: 0, z: 0, w: 1} + orientations: [] + restOrientations: [] + velocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + angularVelocities: [] + invMasses: + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + invRotationalMasses: [] + filters: 0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff0200ffff + principalRadii: + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + colors: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + points: + edges: 000000000100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000a0000000a0000000b0000000b0000000c0000000c0000000d0000000d0000000e0000000e0000000f0000000f00000010000000100000001100000011000000120000001200000013000000130000001400000014000000150000001500000016000000160000001700000017000000180000001800000019000000190000001a0000001a0000001b0000001b0000001c0000001c0000001d0000001d0000001e0000001e0000001f0000001f000000200000002000000021000000210000002200000022000000230000002300000024000000240000002500000025000000260000002600000027000000 + triangles: + distanceConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000 + m_ConstraintCount: 20 + m_ActiveConstraintCount: 20 + m_InitialActiveConstraintCount: 20 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000250000002600000027000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.11343384 + - 0.13731146 + - 0.14499426 + - 0.14367747 + - 0.14347577 + - 0.14278126 + - 0.14137006 + - 0.14048934 + - 0.14023328 + - 0.14103353 + - 0.14076781 + - 0.14049971 + - 0.14103425 + - 0.14223284 + - 0.14266565 + - 0.14202453 + - 0.14205298 + - 0.14355478 + - 0.14013106 + - 0.13828081 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000 + m_ConstraintCount: 19 + m_ActiveConstraintCount: 19 + m_InitialActiveConstraintCount: 19 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000240000002500000026000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.1400795 + - 0.14056301 + - 0.1369896 + - 0.13849878 + - 0.13862038 + - 0.1394751 + - 0.14105272 + - 0.14181376 + - 0.14107311 + - 0.14082837 + - 0.14133894 + - 0.14129508 + - 0.14002609 + - 0.13930953 + - 0.13980219 + - 0.14010233 + - 0.13910069 + - 0.13863954 + - 0.14137465 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + bendConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c000000 + m_ConstraintCount: 13 + m_ActiveConstraintCount: 13 + m_InitialActiveConstraintCount: 13 + particleIndices: + serializedContents: 000000000200000001000000030000000500000004000000060000000800000007000000090000000b0000000a0000000c0000000e0000000d0000000f0000001100000010000000120000001400000013000000150000001700000016000000180000001a000000190000001b0000001d0000001c0000001e000000200000001f000000210000002300000022000000240000002600000025000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.008882046 + - 0.0014772415 + - 0.0017263889 + - 0.0013868809 + - 0.00010585785 + - 0.00052690506 + - 0.00006842613 + - 0.0002797842 + - 0.0003361106 + - 0.00111866 + - 0.00064073503 + - 0.0014846921 + - 0.0004145503 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c000000 + m_ConstraintCount: 13 + m_ActiveConstraintCount: 13 + m_InitialActiveConstraintCount: 13 + particleIndices: + serializedContents: 0100000003000000020000000400000006000000050000000700000009000000080000000a0000000c0000000b0000000d0000000f0000000e000000100000001200000011000000130000001500000014000000160000001800000017000000190000001b0000001a0000001c0000001e0000001d0000001f0000002100000020000000220000002400000023000000250000002700000026000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.00092315674 + - 0.0026681423 + - 0.0016589165 + - 0.0011022091 + - 0.00018787384 + - 0.0002799034 + - 0.00002014637 + - 0.00026512146 + - 0.0007355809 + - 0.000954479 + - 0.0006502196 + - 0.0016384125 + - 0.0010312796 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b000000 + m_ConstraintCount: 12 + m_ActiveConstraintCount: 12 + m_InitialActiveConstraintCount: 12 + particleIndices: + serializedContents: 020000000400000003000000050000000700000006000000080000000a000000090000000b0000000d0000000c0000000e000000100000000f0000001100000013000000120000001400000016000000150000001700000019000000180000001a0000001c0000001b0000001d0000001f0000001e000000200000002200000021000000230000002500000024000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.0010838509 + - 0.0022292137 + - 0.0016183853 + - 0.00063180923 + - 0.0004415512 + - 0.000013232231 + - 0.00019037724 + - 0.00008690357 + - 0.00097441673 + - 0.0007407963 + - 0.0009841025 + - 0.00049716234 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + skinConstraintsData: + batches: [] + tetherConstraintsData: + batches: [] + stretchShearConstraintsData: + batches: [] + bendTwistConstraintsData: + batches: [] + shapeMatchingConstraintsData: + batches: [] + aerodynamicConstraintsData: + batches: [] + chainConstraintsData: + batches: [] + volumeConstraintsData: + batches: [] + groups: + - {fileID: -2867197770825267649} + - {fileID: 5505919189061892379} + - {fileID: -2309273508427477570} + path: + m_Names: + - start + - start_aux + - end + m_Points: + data: + - tangentMode: 0 + inTangent: {x: -0.25, y: -0, z: -0} + position: {x: -4.462028, y: 0, z: 0} + outTangent: {x: 0.02319622, y: 0, z: 0} + - tangentMode: 0 + inTangent: {x: -0.051820755, y: 0, z: 0} + position: {x: -4.348594, y: 0, z: 0} + outTangent: {x: 0.8503418, y: 0, z: 0} + - tangentMode: 0 + inTangent: {x: -0.038733304, y: 0, z: 0} + position: {x: 1, y: 0, z: 0} + outTangent: {x: 0.25, y: -0, z: -0} + m_Normals: + data: + - {x: 0, y: 1, z: 0} + - {x: 0, y: 0.99999994, z: 0} + - {x: 0, y: 1, z: 0} + m_Colors: + data: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1, g: 1, b: 1, a: 1} + m_Thickness: + data: + - 1 + - 0.99999994 + - 1 + m_Masses: + data: + - 0.1 + - 0.1 + - 0.1 + m_RotationalMasses: + data: + - 1 + - 0.99999994 + - 1 + m_Filters: + data: 0200ffff0200ffff0200ffff + m_Closed: 0 + m_ArcLengthTable: + - 0 + - 0.0034170914 + - 0.007040089 + - 0.010867817 + - 0.014899097 + - 0.019132752 + - 0.023567606 + - 0.028202482 + - 0.033036202 + - 0.038067587 + - 0.043295465 + - 0.048718657 + - 0.054335985 + - 0.060146272 + - 0.06614834 + - 0.07234101 + - 0.07872311 + - 0.085293464 + - 0.09205089 + - 0.09899421 + - 0.106122255 + - 0.11343384 + - 0.2585964 + - 0.44766098 + - 0.6754252 + - 0.9366864 + - 1.2262423 + - 1.5388906 + - 1.8694286 + - 2.212654 + - 2.5633645 + - 2.9163575 + - 3.2664306 + - 3.6083813 + - 3.937007 + - 4.2471056 + - 4.5334744 + - 4.790911 + - 5.0142136 + - 5.198179 + - 5.3376045 + - 5.4272885 + - 5.462028 + m_TotalSplineLenght: 5.462028 + OnPathChanged: + m_PersistentCalls: + m_Calls: [] + OnControlPointAdded: + m_PersistentCalls: + m_Calls: [] + OnControlPointRemoved: + m_PersistentCalls: + m_Calls: [] + OnControlPointRenamed: + m_PersistentCalls: + m_Calls: [] + thickness: 0.1 + resolution: 0.7 + m_InterParticleDistance: 0.140052 + totalParticles: 40 + m_RestLength: 5.4620275 + restLengths: + - 0.11343384 + - 0.1400795 + - 0.13731146 + - 0.14056301 + - 0.14499426 + - 0.1369896 + - 0.14367747 + - 0.13849878 + - 0.14347577 + - 0.13862038 + - 0.14278126 + - 0.1394751 + - 0.14137006 + - 0.14105272 + - 0.14048934 + - 0.14181376 + - 0.14023328 + - 0.14107311 + - 0.14103353 + - 0.14082837 + - 0.14076781 + - 0.14133894 + - 0.14049971 + - 0.14129508 + - 0.14103425 + - 0.14002609 + - 0.14223284 + - 0.13930953 + - 0.14266565 + - 0.13980219 + - 0.14202453 + - 0.14010233 + - 0.14205298 + - 0.13910069 + - 0.14355478 + - 0.13863954 + - 0.14013106 + - 0.14137465 + - 0.13828081 + - 0 + pooledParticles: 0 +--- !u!114 &5505919189061892379 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: start_aux + m_EditorClassIdentifier: + particleIndices: 01000000 + m_Blueprint: {fileID: 11400000} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Firehose.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Firehose.asset.meta new file mode 100644 index 000000000..c2d251aec --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Firehose.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b2fe09b5a1ae2424597b4776dc36fa5c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Freightlift cable.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Freightlift cable.asset new file mode 100644 index 000000000..822226765 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Freightlift cable.asset @@ -0,0 +1,1713 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f7e67b5626124d0db9886e6cd2aacff, type: 3} + m_Name: Freightlift cable + m_EditorClassIdentifier: + m_Empty: 0 + m_ActiveParticleCount: 18 + m_InitialActiveParticleCount: 18 + _bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 1, y: 0, z: 0} + positions: + - {x: -1, y: 0, z: 0} + - {x: -0.88329995, y: 0, z: 0} + - {x: -0.7666023, y: 0, z: 0} + - {x: -0.64810616, y: 0, z: 0} + - {x: -0.5307922, y: 0, z: 0} + - {x: -0.41302353, y: 0, z: 0} + - {x: -0.2951497, y: 0, z: 0} + - {x: -0.17727831, y: 0, z: 0} + - {x: -0.05943318, y: 0, z: 0} + - {x: 0.058380906, y: 0, z: 0} + - {x: 0.17615423, y: 0, z: 0} + - {x: 0.29385144, y: 0, z: 0} + - {x: 0.41156584, y: 0, z: 0} + - {x: 0.5296772, y: 0, z: 0} + - {x: 0.6477824, y: 0, z: 0} + - {x: 0.76508003, y: 0, z: 0} + - {x: 0.88362336, y: 0, z: 0} + - {x: 1, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + restPositions: + - {x: -1, y: 0, z: 0, w: 1} + - {x: -0.88329995, y: 0, z: 0, w: 1} + - {x: -0.7666023, y: 0, z: 0, w: 1} + - {x: -0.64810616, y: 0, z: 0, w: 1} + - {x: -0.5307922, y: 0, z: 0, w: 1} + - {x: -0.41302353, y: 0, z: 0, w: 1} + - {x: -0.2951497, y: 0, z: 0, w: 1} + - {x: -0.17727831, y: 0, z: 0, w: 1} + - {x: -0.05943318, y: 0, z: 0, w: 1} + - {x: 0.058380906, y: 0, z: 0, w: 1} + - {x: 0.17615423, y: 0, z: 0, w: 1} + - {x: 0.29385144, y: 0, z: 0, w: 1} + - {x: 0.41156584, y: 0, z: 0, w: 1} + - {x: 0.5296772, y: 0, z: 0, w: 1} + - {x: 0.6477824, y: 0, z: 0, w: 1} + - {x: 0.76508003, y: 0, z: 0, w: 1} + - {x: 0.88362336, y: 0, z: 0, w: 1} + - {x: 1, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + orientations: [] + restOrientations: [] + velocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + angularVelocities: [] + invMasses: + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + invRotationalMasses: [] + filters: 000000000100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + principalRadii: + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + colors: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + points: + edges: 000000000100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000a0000000a0000000b0000000b0000000c0000000c0000000d0000000d0000000e0000000e0000000f0000000f000000100000001000000011000000 + triangles: + distanceConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a000000 + m_ConstraintCount: 59 + m_ActiveConstraintCount: 9 + m_InitialActiveConstraintCount: 9 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.11670005 + - 0.11849612 + - 0.117768645 + - 0.1178714 + - 0.11781409 + - 0.11769721 + - 0.11811137 + - 0.11729765 + - 0.11637664 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000310000003200000033000000340000003500000036000000370000003800000039000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000310000003200000033000000340000003500000036000000370000003800000039000000 + m_ConstraintCount: 58 + m_ActiveConstraintCount: 8 + m_InitialActiveConstraintCount: 8 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.11669767 + - 0.11731398 + - 0.11787382 + - 0.11784513 + - 0.117773324 + - 0.117714405 + - 0.11810517 + - 0.11854333 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + bendConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000240000002500000026000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000240000002500000026000000 + m_ConstraintCount: 39 + m_ActiveConstraintCount: 6 + m_InitialActiveConstraintCount: 6 + particleIndices: + serializedContents: 000000000200000001000000030000000500000004000000060000000800000007000000090000000b0000000a0000000c0000000e0000000d0000000f0000001100000010000000120000001400000013000000150000001700000016000000180000001a000000190000001b0000001d0000001c0000001e000000200000001f0000002100000023000000220000002400000026000000250000002700000029000000280000002a0000002c0000002b0000002d0000002f0000002e000000300000003200000031000000330000003500000034000000360000003800000037000000390000003b0000003a0000003c0000003e0000003d0000003f0000004100000040000000420000004400000043000000450000004700000046000000480000004a000000490000004b0000004d0000004c0000004e000000500000004f0000005100000053000000520000005400000056000000550000005700000059000000580000005a0000005c0000005b0000005d0000005f0000005e000000600000006200000061000000630000006500000064000000660000006800000067000000690000006b0000006a0000006c0000006e0000006d0000006f0000007100000070000000720000007400000073000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.000000834465 + - 0.00015157461 + - 0.000008746982 + - 0.000025361776 + - 0.000002026558 + - 0.0007222295 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000240000002500000026000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000240000002500000026000000 + m_ConstraintCount: 39 + m_ActiveConstraintCount: 5 + m_InitialActiveConstraintCount: 5 + particleIndices: + serializedContents: 0100000003000000020000000400000006000000050000000700000009000000080000000a0000000c0000000b0000000d0000000f0000000e000000100000001200000011000000130000001500000014000000160000001800000017000000190000001b0000001a0000001c0000001e0000001d0000001f0000002100000020000000220000002400000023000000250000002700000026000000280000002a000000290000002b0000002d0000002c0000002e000000300000002f0000003100000033000000320000003400000036000000350000003700000039000000380000003a0000003c0000003b0000003d0000003f0000003e000000400000004200000041000000430000004500000044000000460000004800000047000000490000004b0000004a0000004c0000004e0000004d0000004f0000005100000050000000520000005400000053000000550000005700000056000000580000005a000000590000005b0000005d0000005c0000005e000000600000005f0000006100000063000000620000006400000066000000650000006700000069000000680000006a0000006c0000006b0000006d0000006f0000006e000000700000007200000071000000730000007500000074000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.0005994439 + - 0.00003501773 + - 0.000010348856 + - 0.000005722046 + - 0.00026917458 + - 0.37212557 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000 + m_ConstraintCount: 38 + m_ActiveConstraintCount: 5 + m_InitialActiveConstraintCount: 5 + particleIndices: + serializedContents: 020000000400000003000000050000000700000006000000080000000a000000090000000b0000000d0000000c0000000e000000100000000f0000001100000013000000120000001400000016000000150000001700000019000000180000001a0000001c0000001b0000001d0000001f0000001e000000200000002200000021000000230000002500000024000000260000002800000027000000290000002b0000002a0000002c0000002e0000002d0000002f0000003100000030000000320000003400000033000000350000003700000036000000380000003a000000390000003b0000003d0000003c0000003e000000400000003f0000004100000043000000420000004400000046000000450000004700000049000000480000004a0000004c0000004b0000004d0000004f0000004e000000500000005200000051000000530000005500000054000000560000005800000057000000590000005b0000005a0000005c0000005e0000005d0000005f0000006100000060000000620000006400000063000000650000006700000066000000680000006a000000690000006b0000006d0000006c0000006e000000700000006f000000710000007300000072000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.0003940463 + - 0.0000008046627 + - 0.000013589859 + - 0.00013235211 + - 0.00041520596 + - 0.33333334 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + skinConstraintsData: + batches: [] + tetherConstraintsData: + batches: [] + stretchShearConstraintsData: + batches: [] + bendTwistConstraintsData: + batches: [] + shapeMatchingConstraintsData: + batches: [] + aerodynamicConstraintsData: + batches: [] + chainConstraintsData: + batches: [] + volumeConstraintsData: + batches: [] + groups: + - {fileID: 1023878380947534591} + - {fileID: 2474621813314795683} + - {fileID: 1119723573710947368} + path: + m_Names: + - lower + - lower + - upper + m_Points: + data: + - tangentMode: 0 + inTangent: {x: -0.25, y: -0, z: -0} + position: {x: -1, y: 0, z: 0} + outTangent: {x: 0.026164055, y: 0, z: 0} + - tangentMode: 0 + inTangent: {x: -0.050680697, y: 0, z: 0} + position: {x: -0.88329995, y: 0, z: 0} + outTangent: {x: 0.4335778, y: 0, z: 0} + - tangentMode: 0 + inTangent: {x: -0.22383595, y: 0, z: 0} + position: {x: 1, y: 0, z: 0} + outTangent: {x: 0.25, y: -0, z: -0} + m_Normals: + data: + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + m_Colors: + data: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + m_Thickness: + data: + - 1 + - 1 + - 1 + m_Masses: + data: + - 0.1 + - 0.1 + - 0.1 + m_RotationalMasses: + data: + - 1 + - 1 + - 1 + m_Filters: + data: 000000000100ffff0100ffff + m_Closed: 0 + m_ArcLengthTable: + - 0 + - 0.0038305505 + - 0.00784552 + - 0.012043051 + - 0.016421288 + - 0.020978373 + - 0.025712451 + - 0.030621663 + - 0.035704155 + - 0.040958066 + - 0.04638154 + - 0.05197273 + - 0.057729766 + - 0.063650794 + - 0.06973396 + - 0.075977415 + - 0.08237929 + - 0.08893773 + - 0.09565088 + - 0.10251689 + - 0.1095339 + - 0.116700046 + - 0.18383583 + - 0.2605888 + - 0.34579644 + - 0.43829617 + - 0.5369255 + - 0.64052194 + - 0.7479229 + - 0.8579659 + - 0.9694884 + - 1.0813278 + - 1.1923218 + - 1.3013076 + - 1.4071229 + - 1.508605 + - 1.6045915 + - 1.6939198 + - 1.7754273 + - 1.8479517 + - 1.9103302 + - 1.9614005 + - 2 + m_TotalSplineLenght: 2 + OnPathChanged: + m_PersistentCalls: + m_Calls: [] + OnControlPointAdded: + m_PersistentCalls: + m_Calls: [] + OnControlPointRemoved: + m_PersistentCalls: + m_Calls: [] + OnControlPointRenamed: + m_PersistentCalls: + m_Calls: [] + thickness: 0.05 + resolution: 0.4 + m_InterParticleDistance: 0.11764706 + totalParticles: 118 + m_RestLength: 13.764717 + restLengths: + - 0.11670005 + - 0.11669767 + - 0.11849612 + - 0.11731398 + - 0.117768645 + - 0.11787382 + - 0.1178714 + - 0.11784513 + - 0.11781409 + - 0.117773324 + - 0.11769721 + - 0.117714405 + - 0.11811137 + - 0.11810517 + - 0.11729765 + - 0.11854333 + - 0.11637664 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0.11764706 + - 0 + pooledParticles: 100 +--- !u!114 &1023878380947534591 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: lower + m_EditorClassIdentifier: + particleIndices: 00000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &1119723573710947368 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: upper + m_EditorClassIdentifier: + particleIndices: 11000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &2474621813314795683 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: lower + m_EditorClassIdentifier: + particleIndices: 01000000 + m_Blueprint: {fileID: 11400000} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Freightlift cable.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Freightlift cable.asset.meta new file mode 100644 index 000000000..352b0dbb0 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Freightlift cable.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: df057526865004da9ac53f3c8bc43d9f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Joints rope 1.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Joints rope 1.asset new file mode 100644 index 000000000..2e25ae882 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Joints rope 1.asset @@ -0,0 +1,1877 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4396955149452082975 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: end 2 + m_EditorClassIdentifier: + particleIndices: 15000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-1514820099013862997 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point + m_EditorClassIdentifier: + particleIndices: 0a000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f7e67b5626124d0db9886e6cd2aacff, type: 3} + m_Name: Joints rope 1 + m_EditorClassIdentifier: + m_Empty: 0 + m_ActiveParticleCount: 24 + m_InitialActiveParticleCount: 24 + _bounds: + m_Center: {x: -0.6924925, y: 0.46669987, z: 0} + m_Extent: {x: 0.6924925, y: 0.47054604, z: 0} + positions: + - {x: -1, y: 0, z: 0} + - {x: -0.9181425, y: -0.0017922054, z: 0} + - {x: -0.8362793, y: -0.0038461662, z: 0} + - {x: -0.7428325, y: -0.000871651, z: 0} + - {x: -0.65122014, y: 0.017367212, z: 0} + - {x: -0.5678503, y: 0.058998827, z: 0} + - {x: -0.50305676, y: 0.12584557, z: 0} + - {x: -0.4616526, y: 0.20902728, z: 0} + - {x: -0.43931282, y: 0.299705, z: 0} + - {x: -0.43052924, y: 0.39261803, z: 0} + - {x: -0.43119478, y: 0.48681656, z: 0} + - {x: -0.44271347, y: 0.58178604, z: 0} + - {x: -0.4703848, y: 0.67201185, z: 0} + - {x: -0.5176511, y: 0.7542874, z: 0} + - {x: -0.58389527, y: 0.8220633, z: 0} + - {x: -0.66438735, y: 0.8722328, z: 0} + - {x: -0.7532248, y: 0.90580136, z: 0} + - {x: -0.84615177, y: 0.9258487, z: 0} + - {x: -0.94080037, y: 0.9354944, z: 0} + - {x: -1.0359671, y: 0.9372459, z: 0} + - {x: -1.1310608, y: 0.93307537, z: 0} + - {x: -1.2255421, y: 0.9248221, z: 0} + - {x: -1.3052037, y: 0.91854113, z: 0} + - {x: -1.384985, y: 0.9144238, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + restPositions: + - {x: -1, y: 0, z: 0, w: 1} + - {x: -0.9181425, y: -0.0017922054, z: 0, w: 1} + - {x: -0.8362793, y: -0.0038461662, z: 0, w: 1} + - {x: -0.7428325, y: -0.000871651, z: 0, w: 1} + - {x: -0.65122014, y: 0.017367212, z: 0, w: 1} + - {x: -0.5678503, y: 0.058998827, z: 0, w: 1} + - {x: -0.50305676, y: 0.12584557, z: 0, w: 1} + - {x: -0.4616526, y: 0.20902728, z: 0, w: 1} + - {x: -0.43931282, y: 0.299705, z: 0, w: 1} + - {x: -0.43052924, y: 0.39261803, z: 0, w: 1} + - {x: -0.43119478, y: 0.48681656, z: 0, w: 1} + - {x: -0.44271347, y: 0.58178604, z: 0, w: 1} + - {x: -0.4703848, y: 0.67201185, z: 0, w: 1} + - {x: -0.5176511, y: 0.7542874, z: 0, w: 1} + - {x: -0.58389527, y: 0.8220633, z: 0, w: 1} + - {x: -0.66438735, y: 0.8722328, z: 0, w: 1} + - {x: -0.7532248, y: 0.90580136, z: 0, w: 1} + - {x: -0.84615177, y: 0.9258487, z: 0, w: 1} + - {x: -0.94080037, y: 0.9354944, z: 0, w: 1} + - {x: -1.0359671, y: 0.9372459, z: 0, w: 1} + - {x: -1.1310608, y: 0.93307537, z: 0, w: 1} + - {x: -1.2255421, y: 0.9248221, z: 0, w: 1} + - {x: -1.3052037, y: 0.91854113, z: 0, w: 1} + - {x: -1.384985, y: 0.9144238, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + orientations: [] + restOrientations: [] + velocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + angularVelocities: [] + invMasses: + - 10 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + invRotationalMasses: [] + filters: 010000000100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + principalRadii: + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + colors: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + points: + edges: 000000000100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000a0000000a0000000b0000000b0000000c0000000c0000000d0000000d0000000e0000000e0000000f0000000f000000100000001000000011000000110000001200000012000000130000001300000014000000140000001500000015000000160000001600000017000000 + triangles: + distanceConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d000000 + m_ConstraintCount: 62 + m_ActiveConstraintCount: 12 + m_InitialActiveConstraintCount: 12 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.08187712 + - 0.09349412 + - 0.0931865 + - 0.09291664 + - 0.09332729 + - 0.09566547 + - 0.09488609 + - 0.094846986 + - 0.09506482 + - 0.09518286 + - 0.09484102 + - 0.079887465 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c000000 + m_ConstraintCount: 61 + m_ActiveConstraintCount: 11 + m_InitialActiveConstraintCount: 11 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f0000001000000011000000120000001300000014000000150000001600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.08188899 + - 0.09341026 + - 0.09309505 + - 0.09338906 + - 0.09420088 + - 0.094373725 + - 0.094772704 + - 0.0949681 + - 0.09513883 + - 0.09518514 + - 0.07990884 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + bendConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000 + m_ConstraintCount: 41 + m_ActiveConstraintCount: 8 + m_InitialActiveConstraintCount: 8 + particleIndices: + serializedContents: 000000000200000001000000030000000500000004000000060000000800000007000000090000000b0000000a0000000c0000000e0000000d0000000f0000001100000010000000120000001400000013000000150000001700000016000000180000001a000000190000001b0000001d0000001c0000001e000000200000001f0000002100000023000000220000002400000026000000250000002700000029000000280000002a0000002c0000002b0000002d0000002f0000002e000000300000003200000031000000330000003500000034000000360000003800000037000000390000003b0000003a0000003c0000003e0000003d0000003f0000004100000040000000420000004400000043000000450000004700000046000000480000004a000000490000004b0000004d0000004c0000004e000000500000004f0000005100000053000000520000005400000056000000550000005700000059000000580000005a0000005c0000005b0000005d0000005f0000005e000000600000006200000061000000630000006500000064000000660000006800000067000000690000006b0000006a0000006c0000006e0000006d0000006f0000007100000070000000720000007400000073000000750000007700000076000000780000007a00000079000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.00008727273 + - 0.008267463 + - 0.0068283984 + - 0.0036268497 + - 0.007961018 + - 0.0047086976 + - 0.0019741363 + - 0.000722321 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000 + m_ConstraintCount: 41 + m_ActiveConstraintCount: 7 + m_InitialActiveConstraintCount: 7 + particleIndices: + serializedContents: 0100000003000000020000000400000006000000050000000700000009000000080000000a0000000c0000000b0000000d0000000f0000000e000000100000001200000011000000130000001500000014000000160000001800000017000000190000001b0000001a0000001c0000001e0000001d0000001f0000002100000020000000220000002400000023000000250000002700000026000000280000002a000000290000002b0000002d0000002c0000002e000000300000002f0000003100000033000000320000003400000036000000350000003700000039000000380000003a0000003c0000003b0000003d0000003f0000003e000000400000004200000041000000430000004500000044000000460000004800000047000000490000004b0000004a0000004c0000004e0000004d0000004f0000005100000050000000520000005400000053000000550000005700000056000000580000005a000000590000005b0000005d0000005c0000005e000000600000005f0000006100000063000000620000006400000066000000650000006700000069000000680000006a0000006c0000006b0000006d0000006f0000006e000000700000007200000071000000730000007500000074000000760000007800000077000000790000007b0000007a000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.004209255 + - 0.010439668 + - 0.0045797634 + - 0.0056116274 + - 0.007549739 + - 0.0035144323 + - 0.0013761288 + - 0.5748621 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000250000002600000027000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000250000002600000027000000 + m_ConstraintCount: 40 + m_ActiveConstraintCount: 7 + m_InitialActiveConstraintCount: 7 + particleIndices: + serializedContents: 020000000400000003000000050000000700000006000000080000000a000000090000000b0000000d0000000c0000000e000000100000000f0000001100000013000000120000001400000016000000150000001700000019000000180000001a0000001c0000001b0000001d0000001f0000001e000000200000002200000021000000230000002500000024000000260000002800000027000000290000002b0000002a0000002c0000002e0000002d0000002f0000003100000030000000320000003400000033000000350000003700000036000000380000003a000000390000003b0000003d0000003c0000003e000000400000003f0000004100000043000000420000004400000046000000450000004700000049000000480000004a0000004c0000004b0000004d0000004f0000004e000000500000005200000051000000530000005500000054000000560000005800000057000000590000005b0000005a0000005c0000005e0000005d0000005f0000006100000060000000620000006400000063000000650000006700000066000000680000006a000000690000006b0000006d0000006c0000006e000000700000006f000000710000007300000072000000740000007600000075000000770000007900000078000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.0051247277 + - 0.009509616 + - 0.0031787315 + - 0.0070487917 + - 0.006193431 + - 0.0026370892 + - 0.0049834778 + - 0.55320823 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + skinConstraintsData: + batches: [] + tetherConstraintsData: + batches: [] + stretchShearConstraintsData: + batches: [] + bendTwistConstraintsData: + batches: [] + shapeMatchingConstraintsData: + batches: [] + aerodynamicConstraintsData: + batches: [] + chainConstraintsData: + batches: [] + volumeConstraintsData: + batches: [] + groups: + - {fileID: 7605297887885229143} + - {fileID: 1364724456080004343} + - {fileID: -1514820099013862997} + - {fileID: -4396955149452082975} + - {fileID: 4437340670510581073} + path: + m_Names: + - start + - start 2 + - control point + - end 2 + - end + m_Points: + data: + - tangentMode: 0 + inTangent: {x: -0.25, y: -0, z: -0} + position: {x: -1, y: 0, z: 0} + outTangent: {x: 0.024930835, y: 0, z: 0} + - tangentMode: 0 + inTangent: {x: -0.04374349, y: 0.00084798643, z: 0} + position: {x: -0.8362793, y: -0.0038461662, z: 0} + outTangent: {x: 0.18454581, y: -0.0035774955, z: 0} + - tangentMode: 0 + inTangent: {x: 0.021781076, y: -0.4595474, z: -0} + position: {x: -0.43119478, y: 0.48681656, z: 0} + outTangent: {x: -0.023585707, y: 0.49762234, z: 0} + - tangentMode: 0 + inTangent: {x: 0.2562952, y: 0.026030779, z: 0} + position: {x: -1.2255421, y: 0.9248221, z: 0} + outTangent: {x: -0.05107057, y: -0.005186975, z: 0} + - tangentMode: 0 + inTangent: {x: 0.019917846, y: 0.00032430887, z: 0} + position: {x: -1.384985, y: 0.9144238, z: 0} + outTangent: {x: -0.24996696, y: -0.0040700436, z: -0} + m_Normals: + data: + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + m_Colors: + data: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + m_Thickness: + data: + - 1 + - 1 + - 1 + - 1 + - 1 + m_Masses: + data: + - 0.1 + - 0.10000001 + - 0.1 + - 0.1 + - 0.1 + m_RotationalMasses: + data: + - 1 + - 1 + - 1 + - 1 + - 1 + m_Filters: + data: 010000000100ffff0100ffff0100ffff01000000 + m_Closed: 0 + m_ArcLengthTable: + - 0 + - 0.004025475 + - 0.008926518 + - 0.014624583 + - 0.021041036 + - 0.028097207 + - 0.035714407 + - 0.043813925 + - 0.052317053 + - 0.06114507 + - 0.070219256 + - 0.0794609 + - 0.08879125 + - 0.098131604 + - 0.10740323 + - 0.11652741 + - 0.1254254 + - 0.1340185 + - 0.14222798 + - 0.14997512 + - 0.15718122 + - 0.16376756 + - 0.19049099 + - 0.21779743 + - 0.24551307 + - 0.27349094 + - 0.30161864 + - 0.32982728 + - 0.35810137 + - 0.38648945 + - 0.4151139 + - 0.44417837 + - 0.47397035 + - 0.50485677 + - 0.53727233 + - 0.571702 + - 0.60866076 + - 0.64867496 + - 0.6922677 + - 0.7399492 + - 0.79221183 + - 0.8495281 + - 0.9123513 + - 0.9802401 + - 1.0422704 + - 1.0995182 + - 1.1530643 + - 1.203949 + - 1.2531172 + - 1.3013681 + - 1.3493214 + - 1.3974055 + - 1.4458663 + - 1.4947882 + - 1.5441198 + - 1.5937006 + - 1.6432831 + - 1.6925515 + - 1.741137 + - 1.7886293 + - 1.8345858 + - 1.8785386 + - 1.9200003 + - 1.9584689 + - 1.9660437 + - 1.9740559 + - 1.9824371 + - 1.991119 + - 2.0000331 + - 2.009111 + - 2.0182838 + - 2.0274832 + - 2.0366406 + - 2.0456874 + - 2.054555 + - 2.0631745 + - 2.0714777 + - 2.0793955 + - 2.0868597 + - 2.0938015 + - 2.1001523 + - 2.1058435 + - 2.1108065 + - 2.1149728 + - 2.118274 + m_TotalSplineLenght: 2.118274 + OnPathChanged: + m_PersistentCalls: + m_Calls: [] + OnControlPointAdded: + m_PersistentCalls: + m_Calls: [] + OnControlPointRemoved: + m_PersistentCalls: + m_Calls: [] + OnControlPointRenamed: + m_PersistentCalls: + m_Calls: [] + thickness: 0.05 + resolution: 0.5 + m_InterParticleDistance: 0.09209887 + totalParticles: 124 + m_RestLength: 11.325401 + restLengths: + - 0.08187712 + - 0.08188899 + - 0.09349412 + - 0.09341026 + - 0.0931865 + - 0.09309505 + - 0.09291664 + - 0.09338906 + - 0.09332729 + - 0.09420088 + - 0.09566547 + - 0.094373725 + - 0.09488609 + - 0.094772704 + - 0.094846986 + - 0.0949681 + - 0.09506482 + - 0.09513883 + - 0.09518286 + - 0.09518514 + - 0.09484102 + - 0.07990884 + - 0.079887465 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0.09209887 + - 0 + pooledParticles: 100 +--- !u!114 &1364724456080004343 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: start 2 + m_EditorClassIdentifier: + particleIndices: 02000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &4437340670510581073 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: end + m_EditorClassIdentifier: + particleIndices: 17000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &7605297887885229143 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: start + m_EditorClassIdentifier: + particleIndices: 00000000 + m_Blueprint: {fileID: 11400000} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Joints rope 1.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Joints rope 1.asset.meta new file mode 100644 index 000000000..2fddc59e1 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Joints rope 1.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa522e16fa3d944afa90688caef811d1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Joints rope 2.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Joints rope 2.asset new file mode 100644 index 000000000..cb2a140a2 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Joints rope 2.asset @@ -0,0 +1,1735 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-981642940510787340 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: start 2 + m_EditorClassIdentifier: + particleIndices: 02000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f7e67b5626124d0db9886e6cd2aacff, type: 3} + m_Name: Joints rope 2 + m_EditorClassIdentifier: + m_Empty: 0 + m_ActiveParticleCount: 16 + m_InitialActiveParticleCount: 16 + _bounds: + m_Center: {x: -0.3423946, y: 0.00000009918483, z: 0} + m_Extent: {x: 0.6255208, y: 0.0000002852554, z: 0} + positions: + - {x: -0.96791536, y: 0.00000002242149, z: 0} + - {x: -0.9170059, y: 0.000000022228832, z: 0} + - {x: -0.866058, y: 0.00000003456384, z: 0} + - {x: -0.7729056, y: 0.00000006882797, z: 0} + - {x: -0.6792198, y: 0.00000010421619, z: 0} + - {x: -0.5856509, y: 0.00000013999316, z: 0} + - {x: -0.49212816, y: 0.00000017596865, z: 0} + - {x: -0.3985229, y: 0.00000021205727, z: 0} + - {x: -0.3049661, y: 0.00000024809484, z: 0} + - {x: -0.21125059, y: 0.00000028403042, z: 0} + - {x: -0.11759536, y: 0.00000031957384, z: 0} + - {x: -0.024137007, y: 0.0000003541975, z: 0} + - {x: 0.06891826, y: 0.00000038444023, z: 0} + - {x: 0.15384081, y: 0.00000037588666, z: 0} + - {x: 0.21290737, y: 0.000000044285034, z: 0} + - {x: 0.28312624, y: -0.00000018607057, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + restPositions: + - {x: -0.96791536, y: 0.00000002242149, z: 0, w: 1} + - {x: -0.9170059, y: 0.000000022228832, z: 0, w: 1} + - {x: -0.866058, y: 0.00000003456384, z: 0, w: 1} + - {x: -0.7729056, y: 0.00000006882797, z: 0, w: 1} + - {x: -0.6792198, y: 0.00000010421619, z: 0, w: 1} + - {x: -0.5856509, y: 0.00000013999316, z: 0, w: 1} + - {x: -0.49212816, y: 0.00000017596865, z: 0, w: 1} + - {x: -0.3985229, y: 0.00000021205727, z: 0, w: 1} + - {x: -0.3049661, y: 0.00000024809484, z: 0, w: 1} + - {x: -0.21125059, y: 0.00000028403042, z: 0, w: 1} + - {x: -0.11759536, y: 0.00000031957384, z: 0, w: 1} + - {x: -0.024137007, y: 0.0000003541975, z: 0, w: 1} + - {x: 0.06891826, y: 0.00000038444023, z: 0, w: 1} + - {x: 0.15384081, y: 0.00000037588666, z: 0, w: 1} + - {x: 0.21290737, y: 0.000000044285034, z: 0, w: 1} + - {x: 0.28312624, y: -0.00000018607057, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + orientations: [] + restOrientations: [] + velocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + angularVelocities: [] + invMasses: + - 10 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 10 + - 10 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + invRotationalMasses: [] + filters: 010000000100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100fdff0100fdff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + principalRadii: + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05000001, y: 0.05000001, z: 0.05000001} + - {x: 0.05000001, y: 0.05000001, z: 0.05000001} + - {x: 0.05000001, y: 0.05000001, z: 0.05000001} + - {x: 0.05000001, y: 0.05000001, z: 0.05000001} + - {x: 0.05000001, y: 0.05000001, z: 0.05000001} + - {x: 0.05000001, y: 0.05000001, z: 0.05000001} + - {x: 0.05000001, y: 0.05000001, z: 0.05000001} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + colors: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + points: + edges: 000000000100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000a0000000a0000000b0000000b0000000c0000000c0000000d0000000d0000000e0000000e0000000f000000 + triangles: + distanceConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000310000003200000033000000340000003500000036000000370000003800000039000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000310000003200000033000000340000003500000036000000370000003800000039000000 + m_ConstraintCount: 58 + m_ActiveConstraintCount: 8 + m_InitialActiveConstraintCount: 8 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.05090946 + - 0.093152404 + - 0.09356886 + - 0.09360525 + - 0.093715504 + - 0.093458354 + - 0.08492255 + - 0.07021886 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000 + m_ConstraintCount: 57 + m_ActiveConstraintCount: 7 + m_InitialActiveConstraintCount: 7 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.050947905 + - 0.093685806 + - 0.09352276 + - 0.09355682 + - 0.09365523 + - 0.09305526 + - 0.059066564 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + bendConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000 + m_ConstraintCount: 38 + m_ActiveConstraintCount: 5 + m_InitialActiveConstraintCount: 5 + particleIndices: + serializedContents: 000000000200000001000000030000000500000004000000060000000800000007000000090000000b0000000a0000000c0000000e0000000d0000000f0000001100000010000000120000001400000013000000150000001700000016000000180000001a000000190000001b0000001d0000001c0000001e000000200000001f0000002100000023000000220000002400000026000000250000002700000029000000280000002a0000002c0000002b0000002d0000002f0000002e000000300000003200000031000000330000003500000034000000360000003800000037000000390000003b0000003a0000003c0000003e0000003d0000003f0000004100000040000000420000004400000043000000450000004700000046000000480000004a000000490000004b0000004d0000004c0000004e000000500000004f0000005100000053000000520000005400000056000000550000005700000059000000580000005a0000005c0000005b0000005d0000005f0000005e000000600000006200000061000000630000006500000064000000660000006800000067000000690000006b0000006a0000006c0000006e0000006d0000006f0000007100000070000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.000012755395 + - 0.000038981438 + - 0.000016152859 + - 0.00006561726 + - 0.008618668 + - 0.09437541 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000 + m_ConstraintCount: 38 + m_ActiveConstraintCount: 5 + m_InitialActiveConstraintCount: 5 + particleIndices: + serializedContents: 0100000003000000020000000400000006000000050000000700000009000000080000000a0000000c0000000b0000000d0000000f0000000e000000100000001200000011000000130000001500000014000000160000001800000017000000190000001b0000001a0000001c0000001e0000001d0000001f0000002100000020000000220000002400000023000000250000002700000026000000280000002a000000290000002b0000002d0000002c0000002e000000300000002f0000003100000033000000320000003400000036000000350000003700000039000000380000003a0000003c0000003b0000003d0000003f0000003e000000400000004200000041000000430000004500000044000000460000004800000047000000490000004b0000004a0000004c0000004e0000004d0000004f0000005100000050000000520000005400000053000000550000005700000056000000580000005a000000590000005b0000005d0000005c0000005e000000600000005f0000006100000063000000620000006400000066000000650000006700000069000000680000006a0000006c0000006b0000006d0000006f0000006e000000700000007200000071000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.014068186 + - 0.000015377998 + - 0.000052899122 + - 0.00013436191 + - 0.0037174374 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000 + m_ConstraintCount: 38 + m_ActiveConstraintCount: 4 + m_InitialActiveConstraintCount: 4 + particleIndices: + serializedContents: 020000000400000003000000050000000700000006000000080000000a000000090000000b0000000d0000000c0000000e000000100000000f0000001100000013000000120000001400000016000000150000001700000019000000180000001a0000001c0000001b0000001d0000001f0000001e000000200000002200000021000000230000002500000024000000260000002800000027000000290000002b0000002a0000002c0000002e0000002d0000002f0000003100000030000000320000003400000033000000350000003700000036000000380000003a000000390000003b0000003d0000003c0000003e000000400000003f0000004100000043000000420000004400000046000000450000004700000049000000480000004a0000004c0000004b0000004d0000004f0000004e000000500000005200000051000000530000005500000054000000560000005800000057000000590000005b0000005a0000005c0000005e0000005d0000005f0000006100000060000000620000006400000063000000650000006700000066000000680000006a000000690000006b0000006d0000006c0000006e000000700000006f000000710000007300000072000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.00017780066 + - 0.000027477741 + - 0.000020101666 + - 0.0027109012 + - 0.1177817 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + skinConstraintsData: + batches: [] + tetherConstraintsData: + batches: [] + stretchShearConstraintsData: + batches: [] + bendTwistConstraintsData: + batches: [] + shapeMatchingConstraintsData: + batches: [] + aerodynamicConstraintsData: + batches: [] + chainConstraintsData: + batches: [] + volumeConstraintsData: + batches: [] + groups: + - {fileID: 2668437529162069470} + - {fileID: -981642940510787340} + - {fileID: 8493842404228815792} + - {fileID: 6085013363271969740} + path: + m_Names: + - start + - start 2 + - control point + - end + m_Points: + data: + - tangentMode: 0 + inTangent: {x: -0.25, y: -6.072737e-14, z: -0} + position: {x: -0.96791536, y: 0.00000002242149, z: 0} + outTangent: {x: 0.0073128343, y: 1.7763568e-15, z: 0} + - tangentMode: 0 + inTangent: {x: -0.05692005, y: -0.000000020428896, z: 0} + position: {x: -0.866058, y: 0.00000003456384, z: 0} + outTangent: {x: 0.25245947, y: 0.00000009060889, z: 0} + - tangentMode: 0 + inTangent: {x: -0.050469868, y: -0.000000006016478, z: 0} + position: {x: 0.06891826, y: 0.00000038444023, z: 0} + outTangent: {x: 0.3271593, y: 0.00000003900043, z: -0} + - tangentMode: 0 + inTangent: {x: -0.21025208, y: 0, z: 0} + position: {x: 0.28312624, y: -0.00000018607057, z: 0} + outTangent: {x: 0.25, y: 0, z: 0} + m_Normals: + data: + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1.0000001, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + m_Colors: + data: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + m_Thickness: + data: + - 1 + - 1.0000001 + - 1 + - 1 + m_Masses: + data: + - 0.1 + - 0.10000001 + - 0.10000001 + - 0.1 + m_RotationalMasses: + data: + - 1 + - 1.0000001 + - 1 + - 1 + m_Filters: + data: 010000000100ffff0100ffff0100fdff + m_Closed: 0 + m_ArcLengthTable: + - 0 + - 0.0012497028 + - 0.0029046717 + - 0.00495777 + - 0.0074018603 + - 0.0102298055 + - 0.01343447 + - 0.017008714 + - 0.020945402 + - 0.025237396 + - 0.02987756 + - 0.03485876 + - 0.04017385 + - 0.045815703 + - 0.051777177 + - 0.05805113 + - 0.064630434 + - 0.071507946 + - 0.07867653 + - 0.086129054 + - 0.093858376 + - 0.10185736 + - 0.14040144 + - 0.18348725 + - 0.23049209 + - 0.28079322 + - 0.33376795 + - 0.38879356 + - 0.4452473 + - 0.5025065 + - 0.5599484 + - 0.6169503 + - 0.6728895 + - 0.72714317 + - 0.77908874 + - 0.8281034 + - 0.87356454 + - 0.91484934 + - 0.95133513 + - 0.98239917 + - 1.0074188 + - 1.0257711 + - 1.0368336 + - 1.0792743 + - 1.1136334 + - 1.140678 + - 1.1611751 + - 1.1758915 + - 1.1855943 + - 1.1910505 + - 1.193027 + - 1.1938615 + - 1.1965435 + - 1.2004042 + - 1.2046767 + - 1.2085941 + - 1.2113893 + - 1.2123283 + - 1.2140783 + - 1.2192513 + - 1.2286143 + - 1.2429343 + - 1.2629783 + - 1.2895132 + m_TotalSplineLenght: 1.2895132 + OnPathChanged: + m_PersistentCalls: + m_Calls: [] + OnControlPointAdded: + m_PersistentCalls: + m_Calls: [] + OnControlPointRemoved: + m_PersistentCalls: + m_Calls: [] + OnControlPointRenamed: + m_PersistentCalls: + m_Calls: [] + thickness: 0.05 + resolution: 0.5 + m_InterParticleDistance: 0.08596755 + totalParticles: 116 + m_RestLength: 9.847806 + restLengths: + - 0.05090946 + - 0.050947905 + - 0.093152404 + - 0.093685806 + - 0.09356886 + - 0.09352276 + - 0.09360525 + - 0.09355682 + - 0.093715504 + - 0.09365523 + - 0.093458354 + - 0.09305526 + - 0.08492255 + - 0.059066564 + - 0.07021886 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0.08596755 + - 0 + pooledParticles: 100 +--- !u!114 &2668437529162069470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: start + m_EditorClassIdentifier: + particleIndices: 00000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &6085013363271969740 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: end + m_EditorClassIdentifier: + particleIndices: 0f000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &8493842404228815792 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point + m_EditorClassIdentifier: + particleIndices: 0c000000 + m_Blueprint: {fileID: 11400000} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Joints rope 2.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Joints rope 2.asset.meta new file mode 100644 index 000000000..b26597de9 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Joints rope 2.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 26f4e1ad2bfa7442fa1380d8f5ea809b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Plectoneme rod.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Plectoneme rod.asset new file mode 100644 index 000000000..2fdbb3b0b --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Plectoneme rod.asset @@ -0,0 +1,963 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3402949915523605302 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: start + m_EditorClassIdentifier: + particleIndices: 00000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e028b099aa5d14e399bc3d87df5b7737, type: 3} + m_Name: Plectoneme rod + m_EditorClassIdentifier: + m_Empty: 0 + m_ActiveParticleCount: 41 + m_InitialActiveParticleCount: 41 + _bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 1, y: 0, z: 0} + positions: + - {x: -1, y: 0, z: 0} + - {x: -0.95067745, y: 0, z: 0} + - {x: -0.9003746, y: 0, z: 0} + - {x: -0.8514858, y: 0, z: 0} + - {x: -0.8011474, y: 0, z: 0} + - {x: -0.75065655, y: 0, z: 0} + - {x: -0.70117325, y: 0, z: 0} + - {x: -0.6503389, y: 0, z: 0} + - {x: -0.6009832, y: 0, z: 0} + - {x: -0.55040324, y: 0, z: 0} + - {x: -0.5007351, y: 0, z: 0} + - {x: -0.4505338, y: 0, z: 0} + - {x: -0.40043044, y: 0, z: 0} + - {x: -0.3505471, y: 0, z: 0} + - {x: -0.30011013, y: 0, z: 0} + - {x: -0.25040564, y: 0, z: 0} + - {x: -0.2001485, y: 0, z: 0} + - {x: -0.15017988, y: 0, z: 0} + - {x: -0.10015966, y: 0, z: 0} + - {x: -0.05000988, y: 0, z: 0} + - {x: -0.000000039115545, y: 0, z: 0} + - {x: 0.050009605, y: 0, z: 0} + - {x: 0.10015938, y: 0, z: 0} + - {x: 0.15017985, y: 0, z: 0} + - {x: 0.20014846, y: 0, z: 0} + - {x: 0.25040546, y: 0, z: 0} + - {x: 0.30010998, y: 0, z: 0} + - {x: 0.35054696, y: 0, z: 0} + - {x: 0.4004303, y: 0, z: 0} + - {x: 0.45053366, y: 0, z: 0} + - {x: 0.500735, y: 0, z: 0} + - {x: 0.55040324, y: 0, z: 0} + - {x: 0.6009831, y: 0, z: 0} + - {x: 0.65033865, y: 0, z: 0} + - {x: 0.7011731, y: 0, z: 0} + - {x: 0.7506564, y: 0, z: 0} + - {x: 0.8011474, y: 0, z: 0} + - {x: 0.8514858, y: 0, z: 0} + - {x: 0.90037465, y: 0, z: 0} + - {x: 0.95067745, y: 0, z: 0} + - {x: 1, y: 0, z: 0} + restPositions: + - {x: -1, y: 0, z: 0, w: 1} + - {x: -0.95067745, y: 0, z: 0, w: 1} + - {x: -0.9003746, y: 0, z: 0, w: 1} + - {x: -0.8514858, y: 0, z: 0, w: 1} + - {x: -0.8011474, y: 0, z: 0, w: 1} + - {x: -0.75065655, y: 0, z: 0, w: 1} + - {x: -0.70117325, y: 0, z: 0, w: 1} + - {x: -0.6503389, y: 0, z: 0, w: 1} + - {x: -0.6009832, y: 0, z: 0, w: 1} + - {x: -0.55040324, y: 0, z: 0, w: 1} + - {x: -0.5007351, y: 0, z: 0, w: 1} + - {x: -0.4505338, y: 0, z: 0, w: 1} + - {x: -0.40043044, y: 0, z: 0, w: 1} + - {x: -0.3505471, y: 0, z: 0, w: 1} + - {x: -0.30011013, y: 0, z: 0, w: 1} + - {x: -0.25040564, y: 0, z: 0, w: 1} + - {x: -0.2001485, y: 0, z: 0, w: 1} + - {x: -0.15017988, y: 0, z: 0, w: 1} + - {x: -0.10015966, y: 0, z: 0, w: 1} + - {x: -0.05000988, y: 0, z: 0, w: 1} + - {x: -0.000000039115545, y: 0, z: 0, w: 1} + - {x: 0.050009605, y: 0, z: 0, w: 1} + - {x: 0.10015938, y: 0, z: 0, w: 1} + - {x: 0.15017985, y: 0, z: 0, w: 1} + - {x: 0.20014846, y: 0, z: 0, w: 1} + - {x: 0.25040546, y: 0, z: 0, w: 1} + - {x: 0.30010998, y: 0, z: 0, w: 1} + - {x: 0.35054696, y: 0, z: 0, w: 1} + - {x: 0.4004303, y: 0, z: 0, w: 1} + - {x: 0.45053366, y: 0, z: 0, w: 1} + - {x: 0.500735, y: 0, z: 0, w: 1} + - {x: 0.55040324, y: 0, z: 0, w: 1} + - {x: 0.6009831, y: 0, z: 0, w: 1} + - {x: 0.65033865, y: 0, z: 0, w: 1} + - {x: 0.7011731, y: 0, z: 0, w: 1} + - {x: 0.7506564, y: 0, z: 0, w: 1} + - {x: 0.8011474, y: 0, z: 0, w: 1} + - {x: 0.8514858, y: 0, z: 0, w: 1} + - {x: 0.90037465, y: 0, z: 0, w: 1} + - {x: 0.95067745, y: 0, z: 0, w: 1} + - {x: 1, y: 0, z: 0, w: 1} + orientations: + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + restOrientations: + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + - {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + velocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + angularVelocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + invMasses: + - 10 + - 10 + - 10.000001 + - 9.999999 + - 10 + - 10 + - 9.999999 + - 9.999999 + - 10.000001 + - 10.000001 + - 10 + - 10 + - 10 + - 10 + - 10.000001 + - 10.000001 + - 10.000001 + - 10.000001 + - 9.999999 + - 9.999999 + - 10.000001 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + invRotationalMasses: + - 100 + - 100 + - 100.000015 + - 100 + - 100 + - 100 + - 100 + - 100 + - 100.000015 + - 100.000015 + - 100 + - 100 + - 100 + - 100 + - 100.000015 + - 100.000015 + - 100.000015 + - 100.000015 + - 99.99999 + - 99.99999 + - 100.000015 + - 100 + - 100 + - 100 + - 100 + - 100 + - 100 + - 100 + - 100 + - 100 + - 100 + - 100 + - 100 + - 100 + - 100 + - 100 + - 100 + - 100 + - 100 + - 100 + - 100 + filters: 0100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff000100ff00 + principalRadii: + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.049999997, y: 0.049999997, z: 0.049999997} + - {x: 0.049999997, y: 0.049999997, z: 0.049999997} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.049999997, y: 0.049999997, z: 0.049999997} + - {x: 0.049999997, y: 0.049999997, z: 0.049999997} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.049999997, y: 0.049999997, z: 0.049999997} + - {x: 0.049999997, y: 0.049999997, z: 0.049999997} + - {x: 0.049999997, y: 0.049999997, z: 0.049999997} + - {x: 0.049999997, y: 0.049999997, z: 0.049999997} + - {x: 0.05000001, y: 0.05000001, z: 0.05000001} + - {x: 0.05000001, y: 0.05000001, z: 0.05000001} + - {x: 0.049999997, y: 0.049999997, z: 0.049999997} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + - {x: 0.05, y: 0.05, z: 0.05} + colors: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + points: + edges: 000000000100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000a0000000a0000000b0000000b0000000c0000000c0000000d0000000d0000000e0000000e0000000f0000000f00000010000000100000001100000011000000120000001200000013000000130000001400000014000000150000001500000016000000160000001700000017000000180000001800000019000000190000001a0000001a0000001b0000001b0000001c0000001c0000001d0000001d0000001e0000001e0000001f0000001f0000002000000020000000210000002100000022000000220000002300000023000000240000002400000025000000250000002600000026000000270000002700000028000000 + triangles: + distanceConstraintsData: + batches: [] + bendConstraintsData: + batches: [] + skinConstraintsData: + batches: [] + tetherConstraintsData: + batches: [] + stretchShearConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000 + m_ConstraintCount: 20 + m_ActiveConstraintCount: 20 + m_InitialActiveConstraintCount: 20 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000250000002600000027000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + orientationIndices: + serializedContents: 00000000020000000400000006000000080000000a0000000c0000000e00000010000000120000001400000016000000180000001a0000001c0000001e00000020000000220000002400000026000000 + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.049322546 + - 0.048888803 + - 0.050490856 + - 0.050834358 + - 0.050579965 + - 0.050201297 + - 0.049883336 + - 0.049704492 + - 0.049968615 + - 0.05014978 + - 0.05000964 + - 0.05002047 + - 0.050256997 + - 0.050436974 + - 0.050103366 + - 0.049668252 + - 0.049355567 + - 0.0494833 + - 0.050338387 + - 0.050302804 + m_AlignBytes: 16 + restOrientations: + serializedContents: + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000 + m_ConstraintCount: 20 + m_ActiveConstraintCount: 20 + m_InitialActiveConstraintCount: 20 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + orientationIndices: + serializedContents: 01000000030000000500000007000000090000000b0000000d0000000f00000011000000130000001500000017000000190000001b0000001d0000001f00000021000000230000002500000027000000 + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.050302863 + - 0.050338387 + - 0.0494833 + - 0.049355686 + - 0.049668133 + - 0.050103366 + - 0.050436974 + - 0.050257146 + - 0.050020218 + - 0.050009843 + - 0.050149772 + - 0.049968615 + - 0.049704522 + - 0.049883336 + - 0.050201327 + - 0.050579846 + - 0.050834477 + - 0.050490975 + - 0.048888862 + - 0.049322546 + m_AlignBytes: 16 + restOrientations: + serializedContents: + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + m_AlignBytes: 16 + bendTwistConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000 + m_ConstraintCount: 20 + m_ActiveConstraintCount: 20 + m_InitialActiveConstraintCount: 20 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000250000002600000027000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restDarbouxVectors: + serializedContents: + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000 + m_ConstraintCount: 20 + m_ActiveConstraintCount: 20 + m_InitialActiveConstraintCount: 20 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restDarbouxVectors: + serializedContents: + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + - {x: 0, y: 0, z: 0, w: 1.0000001} + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + shapeMatchingConstraintsData: + batches: [] + aerodynamicConstraintsData: + batches: [] + chainConstraintsData: + batches: + - m_IDs: 00000000 + m_IDToIndex: 00000000 + m_ConstraintCount: 1 + m_ActiveConstraintCount: 1 + m_InitialActiveConstraintCount: 1 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + firstParticle: + serializedContents: 00000000 + m_AlignBytes: 16 + numParticles: + serializedContents: 29000000 + m_AlignBytes: 16 + lengths: + serializedContents: + - {x: 0.049999997, y: 0.049999997} + m_AlignBytes: 16 + volumeConstraintsData: + batches: [] + groups: + - {fileID: -3402949915523605302} + - {fileID: 5048701005528565804} + path: + m_Names: + - start + - end + m_Points: + data: + - tangentMode: 0 + inTangent: {x: -0.25, y: 0, z: 0} + position: {x: -1, y: 0, z: 0} + outTangent: {x: 0.25, y: 0, z: 0} + - tangentMode: 0 + inTangent: {x: -0.25, y: 0, z: 0} + position: {x: 1, y: 0, z: 0} + outTangent: {x: 0.25, y: 0, z: 0} + m_Normals: + data: + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + m_Colors: + data: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + m_Thickness: + data: + - 1 + - 1 + m_Masses: + data: + - 0.1 + - 0.1 + m_RotationalMasses: + data: + - 0.01 + - 0.01 + m_Filters: + data: 0100ffff0100ffff + m_Closed: 0 + m_ArcLengthTable: + - 0 + - 0.043947738 + - 0.103282586 + - 0.17638485 + - 0.26163483 + - 0.35741282 + - 0.46209916 + - 0.5740741 + - 0.691718 + - 0.8134111 + - 0.9375338 + - 1.0624664 + - 1.186589 + - 1.3082821 + - 1.425926 + - 1.5379009 + - 1.6425872 + - 1.7383652 + - 1.8236151 + - 1.8967173 + - 1.9560522 + - 1.9999999 + m_TotalSplineLenght: 1.9999999 + OnPathChanged: + m_PersistentCalls: + m_Calls: [] + OnControlPointAdded: + m_PersistentCalls: + m_Calls: [] + OnControlPointRemoved: + m_PersistentCalls: + m_Calls: [] + OnControlPointRenamed: + m_PersistentCalls: + m_Calls: [] + thickness: 0.05 + resolution: 1 + m_InterParticleDistance: 0.049999997 + totalParticles: 41 + m_RestLength: 1.9999998 + restLengths: + - 0.049322546 + - 0.050302863 + - 0.048888803 + - 0.050338387 + - 0.050490856 + - 0.0494833 + - 0.050834358 + - 0.049355686 + - 0.050579965 + - 0.049668133 + - 0.050201297 + - 0.050103366 + - 0.049883336 + - 0.050436974 + - 0.049704492 + - 0.050257146 + - 0.049968615 + - 0.050020218 + - 0.05014978 + - 0.050009843 + - 0.05000964 + - 0.050149772 + - 0.05002047 + - 0.049968615 + - 0.050256997 + - 0.049704522 + - 0.050436974 + - 0.049883336 + - 0.050103366 + - 0.050201327 + - 0.049668252 + - 0.050579846 + - 0.049355567 + - 0.050834477 + - 0.0494833 + - 0.050490975 + - 0.050338387 + - 0.048888862 + - 0.050302804 + - 0.049322546 + - 0 + keepInitialShape: 1 +--- !u!114 &5048701005528565804 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: end + m_EditorClassIdentifier: + particleIndices: 28000000 + m_Blueprint: {fileID: 11400000} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Plectoneme rod.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Plectoneme rod.asset.meta new file mode 100644 index 000000000..77dc627a8 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Plectoneme rod.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 74806658f50d141e88786022b12fc58b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Snake.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Snake.asset new file mode 100644 index 000000000..89e3bf3a4 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Snake.asset @@ -0,0 +1,1821 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-8947839251049029312 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point + m_EditorClassIdentifier: + particleIndices: 06000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f7e67b5626124d0db9886e6cd2aacff, type: 3} + m_Name: Snake + m_EditorClassIdentifier: + m_Empty: 0 + m_ActiveParticleCount: 27 + m_InitialActiveParticleCount: 27 + _bounds: + m_Center: {x: 2.0497563, y: 0, z: -0.00000012766169} + m_Extent: {x: 2.0571842, y: 0, z: 0.00000012766169} + positions: + - {x: -0.007427931, y: 0, z: -0.00000009307402} + - {x: 0.14501616, y: 0, z: -0.00000009774494} + - {x: 0.297919, y: 0, z: -0.00000010468507} + - {x: 0.45081714, y: 0, z: -0.000000112701954} + - {x: 0.6038084, y: 0, z: -0.00000012152721} + - {x: 0.7569245, y: 0, z: -0.00000013102466} + - {x: 0.90982604, y: 0, z: -0.00000014108508} + - {x: 1.0701945, y: 0, z: -0.00000015173066} + - {x: 1.2301809, y: 0, z: -0.00000016197734} + - {x: 1.3897502, y: 0, z: -0.00000017181746} + - {x: 1.5495242, y: 0, z: -0.00000018128003} + - {x: 1.7097893, y: 0, z: -0.00000019036702} + - {x: 1.8697371, y: 0, z: -0.0000001990168} + - {x: 2.029385, y: 0, z: -0.00000020721433} + - {x: 2.1887727, y: 0, z: -0.00000021494152} + - {x: 2.3489306, y: 0, z: -0.00000022221836} + - {x: 2.509104, y: 0, z: -0.00000022897227} + - {x: 2.6691413, y: 0, z: -0.00000023515372} + - {x: 2.8290925, y: 0, z: -0.00000024070994} + - {x: 2.9890022, y: 0, z: -0.00000024557002} + - {x: 3.1488738, y: 0, z: -0.00000024963612} + - {x: 3.3086195, y: 0, z: -0.0000002527697} + - {x: 3.467941, y: 0, z: -0.0000002547685} + - {x: 3.6282763, y: 0, z: -0.00000025532339} + - {x: 3.7882967, y: 0, z: -0.00000025385435} + - {x: 3.9485095, y: 0, z: -0.00000024915627} + - {x: 4.1069407, y: 0, z: -0.00000023759115} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + restPositions: + - {x: -0.007427931, y: 0, z: -0.00000009307402, w: 1} + - {x: 0.14501616, y: 0, z: -0.00000009774494, w: 1} + - {x: 0.297919, y: 0, z: -0.00000010468507, w: 1} + - {x: 0.45081714, y: 0, z: -0.000000112701954, w: 1} + - {x: 0.6038084, y: 0, z: -0.00000012152721, w: 1} + - {x: 0.7569245, y: 0, z: -0.00000013102466, w: 1} + - {x: 0.90982604, y: 0, z: -0.00000014108508, w: 1} + - {x: 1.0701945, y: 0, z: -0.00000015173066, w: 1} + - {x: 1.2301809, y: 0, z: -0.00000016197734, w: 1} + - {x: 1.3897502, y: 0, z: -0.00000017181746, w: 1} + - {x: 1.5495242, y: 0, z: -0.00000018128003, w: 1} + - {x: 1.7097893, y: 0, z: -0.00000019036702, w: 1} + - {x: 1.8697371, y: 0, z: -0.0000001990168, w: 1} + - {x: 2.029385, y: 0, z: -0.00000020721433, w: 1} + - {x: 2.1887727, y: 0, z: -0.00000021494152, w: 1} + - {x: 2.3489306, y: 0, z: -0.00000022221836, w: 1} + - {x: 2.509104, y: 0, z: -0.00000022897227, w: 1} + - {x: 2.6691413, y: 0, z: -0.00000023515372, w: 1} + - {x: 2.8290925, y: 0, z: -0.00000024070994, w: 1} + - {x: 2.9890022, y: 0, z: -0.00000024557002, w: 1} + - {x: 3.1488738, y: 0, z: -0.00000024963612, w: 1} + - {x: 3.3086195, y: 0, z: -0.0000002527697, w: 1} + - {x: 3.467941, y: 0, z: -0.0000002547685, w: 1} + - {x: 3.6282763, y: 0, z: -0.00000025532339, w: 1} + - {x: 3.7882967, y: 0, z: -0.00000025385435, w: 1} + - {x: 3.9485095, y: 0, z: -0.00000024915627, w: 1} + - {x: 4.1069407, y: 0, z: -0.00000023759115, w: 1} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + orientations: [] + restOrientations: [] + velocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + angularVelocities: [] + invMasses: + - 10 + - 9.999999 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + invRotationalMasses: [] + filters: 0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + principalRadii: + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.10000002, y: 0.10000002, z: 0.10000002} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.09973421, y: 0.09973421, z: 0.09973421} + - {x: 0.09894752, y: 0.09894752, z: 0.09894752} + - {x: 0.09765602, y: 0.09765602, z: 0.09765602} + - {x: 0.095867686, y: 0.095867686, z: 0.095867686} + - {x: 0.09358821, y: 0.09358821, z: 0.09358821} + - {x: 0.09084066, y: 0.09084066, z: 0.09084066} + - {x: 0.08764027, y: 0.08764027, z: 0.08764027} + - {x: 0.0840021, y: 0.0840021, z: 0.0840021} + - {x: 0.07991518, y: 0.07991518, z: 0.07991518} + - {x: 0.07541204, y: 0.07541204, z: 0.07541204} + - {x: 0.0705164, y: 0.0705164, z: 0.0705164} + - {x: 0.06525022, y: 0.06525022, z: 0.06525022} + - {x: 0.059640873, y: 0.059640873, z: 0.059640873} + - {x: 0.053725798, y: 0.053725798, z: 0.053725798} + - {x: 0.04756058, y: 0.04756058, z: 0.04756058} + - {x: 0.04123491, y: 0.04123491, z: 0.04123491} + - {x: 0.034816943, y: 0.034816943, z: 0.034816943} + - {x: 0.028591469, y: 0.028591469, z: 0.028591469} + - {x: 0.023058182, y: 0.023058182, z: 0.023058182} + - {x: 0.02, y: 0.02, z: 0.02} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + colors: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + points: + edges: 000000000100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000a0000000a0000000b0000000b0000000c0000000c0000000d0000000d0000000e0000000e0000000f0000000f00000010000000100000001100000011000000120000001200000013000000130000001400000014000000150000001500000016000000160000001700000017000000180000001800000019000000190000001a000000 + triangles: + distanceConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e000000 + m_ConstraintCount: 63 + m_ActiveConstraintCount: 13 + m_InitialActiveConstraintCount: 13 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f0000001000000011000000120000001300000014000000150000001600000017000000180000001900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.1524441 + - 0.15289813 + - 0.1531161 + - 0.16036844 + - 0.15956938 + - 0.16026509 + - 0.15964794 + - 0.16015792 + - 0.16003728 + - 0.15990973 + - 0.1597457 + - 0.1603353 + - 0.16021276 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e000000 + m_ConstraintCount: 63 + m_ActiveConstraintCount: 13 + m_InitialActiveConstraintCount: 13 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.15290284 + - 0.15299127 + - 0.15290153 + - 0.15998638 + - 0.15977395 + - 0.15994787 + - 0.15938759 + - 0.16017342 + - 0.15995121 + - 0.15987158 + - 0.15932155 + - 0.16002035 + - 0.15843129 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + bendConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000240000002500000026000000270000002800000029000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000240000002500000026000000270000002800000029000000 + m_ConstraintCount: 42 + m_ActiveConstraintCount: 9 + m_InitialActiveConstraintCount: 9 + particleIndices: + serializedContents: 000000000200000001000000030000000500000004000000060000000800000007000000090000000b0000000a0000000c0000000e0000000d0000000f0000001100000010000000120000001400000013000000150000001700000016000000180000001a000000190000001b0000001d0000001c0000001e000000200000001f0000002100000023000000220000002400000026000000250000002700000029000000280000002a0000002c0000002b0000002d0000002f0000002e000000300000003200000031000000330000003500000034000000360000003800000037000000390000003b0000003a0000003c0000003e0000003d0000003f0000004100000040000000420000004400000043000000450000004700000046000000480000004a000000490000004b0000004d0000004c0000004e000000500000004f0000005100000053000000520000005400000056000000550000005700000059000000580000005a0000005c0000005b0000005d0000005f0000005e000000600000006200000061000000630000006500000064000000660000006800000067000000690000006b0000006a0000006c0000006e0000006d0000006f0000007100000070000000720000007400000073000000750000007700000076000000780000007a000000790000007b0000007d0000007c000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.00015291572 + - 0.000041604042 + - 0.00012731552 + - 0.00016367435 + - 0.00008678436 + - 0.00004529953 + - 0.000012636185 + - 0.00033783913 + - 0.00059366226 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000240000002500000026000000270000002800000029000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000240000002500000026000000270000002800000029000000 + m_ConstraintCount: 42 + m_ActiveConstraintCount: 8 + m_InitialActiveConstraintCount: 8 + particleIndices: + serializedContents: 0100000003000000020000000400000006000000050000000700000009000000080000000a0000000c0000000b0000000d0000000f0000000e000000100000001200000011000000130000001500000014000000160000001800000017000000190000001b0000001a0000001c0000001e0000001d0000001f0000002100000020000000220000002400000023000000250000002700000026000000280000002a000000290000002b0000002d0000002c0000002e000000300000002f0000003100000033000000320000003400000036000000350000003700000039000000380000003a0000003c0000003b0000003d0000003f0000003e000000400000004200000041000000430000004500000044000000460000004800000047000000490000004b0000004a0000004c0000004e0000004d0000004f0000005100000050000000520000005400000053000000550000005700000056000000580000005a000000590000005b0000005d0000005c0000005e000000600000005f0000006100000063000000620000006400000066000000650000006700000069000000680000006a0000006c0000006b0000006d0000006f0000006e000000700000007200000071000000730000007500000074000000760000007800000077000000790000007b0000007a0000007c0000007e0000007d000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.0000015497208 + - 0.00007158518 + - 0.00013899803 + - 0.00010573864 + - 0.0002567768 + - 0.000028848648 + - 0.00004220009 + - 0.00010514259 + - 1.4217906 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000 + m_ConstraintCount: 41 + m_ActiveConstraintCount: 8 + m_InitialActiveConstraintCount: 8 + particleIndices: + serializedContents: 020000000400000003000000050000000700000006000000080000000a000000090000000b0000000d0000000c0000000e000000100000000f0000001100000013000000120000001400000016000000150000001700000019000000180000001a0000001c0000001b0000001d0000001f0000001e000000200000002200000021000000230000002500000024000000260000002800000027000000290000002b0000002a0000002c0000002e0000002d0000002f0000003100000030000000320000003400000033000000350000003700000036000000380000003a000000390000003b0000003d0000003c0000003e000000400000003f0000004100000043000000420000004400000046000000450000004700000049000000480000004a0000004c0000004b0000004d0000004f0000004e000000500000005200000051000000530000005500000054000000560000005800000057000000590000005b0000005a0000005c0000005e0000005d0000005f0000006100000060000000620000006400000063000000650000006700000066000000680000006a000000690000006b0000006d0000006c0000006e000000700000006f0000007100000073000000720000007400000076000000750000007700000079000000780000007a0000007c0000007b000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.00003105402 + - 0.0024890304 + - 0.00006830692 + - 0.000100016594 + - 0.0000052452087 + - 0.000013828278 + - 0.00014138222 + - 0.0000641346 + - 1.3689803 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + skinConstraintsData: + batches: [] + tetherConstraintsData: + batches: [] + stretchShearConstraintsData: + batches: [] + bendTwistConstraintsData: + batches: [] + shapeMatchingConstraintsData: + batches: [] + aerodynamicConstraintsData: + batches: [] + chainConstraintsData: + batches: [] + volumeConstraintsData: + batches: [] + groups: + - {fileID: 5564886758469151143} + - {fileID: -8947839251049029312} + - {fileID: 5931347614357645318} + path: + m_Names: + - control point + - control point + - control point + m_Points: + data: + - tangentMode: 0 + inTangent: {x: -0.25, y: -0, z: -0} + position: {x: -0.007427931, y: 0, z: -0.00000009307402} + outTangent: {x: 0.051305592, y: 0, z: 0} + - tangentMode: 0 + inTangent: {x: -0.5638561, y: -0, z: 0.00000003808075} + position: {x: 0.90982604, y: 0, z: -0.00000014108508} + outTangent: {x: 1.6001339, y: 0, z: -0.0000001080671} + - tangentMode: 0 + inTangent: {x: -0.34506822, y: 0, z: -0.000000041135337} + position: {x: 4.1069407, y: 0, z: -0.00000023759115} + outTangent: {x: 0.25, y: 0, z: 0.000000029802322} + m_Normals: + data: + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + m_Colors: + data: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + m_Thickness: + data: + - 1 + - 1 + - 0.19999999 + m_Masses: + data: + - 0.1 + - 0.1 + - 0.1 + m_RotationalMasses: + data: + - 1 + - 1 + - 1 + m_Filters: + data: 0100ffff0100ffff0100ffff + m_Closed: 0 + m_ArcLengthTable: + - 0 + - 0.009036588 + - 0.02149235 + - 0.037374403 + - 0.05668985 + - 0.07944581 + - 0.1056494 + - 0.13530771 + - 0.16842788 + - 0.205017 + - 0.2450822 + - 0.2886306 + - 0.33566928 + - 0.38620535 + - 0.44024593 + - 0.49779814 + - 0.5588691 + - 0.62346596 + - 0.69159573 + - 0.7632656 + - 0.8384827 + - 0.91725403 + - 1.1434155 + - 1.3644772 + - 1.5800774 + - 1.7898542 + - 1.9934455 + - 2.1904895 + - 2.3806243 + - 2.563488 + - 2.7387185 + - 2.9059541 + - 3.064833 + - 3.2149928 + - 3.356072 + - 3.4877086 + - 3.6095405 + - 3.721206 + - 3.8223429 + - 3.9125896 + - 3.991584 + - 4.0589643 + - 4.1143684 + m_TotalSplineLenght: 4.1143684 + OnPathChanged: + m_PersistentCalls: + m_Calls: [] + OnControlPointAdded: + m_PersistentCalls: + m_Calls: [] + OnControlPointRemoved: + m_PersistentCalls: + m_Calls: [] + OnControlPointRenamed: + m_PersistentCalls: + m_Calls: [] + thickness: 0.1 + resolution: 0.6 + m_InterParticleDistance: 0.15824494 + totalParticles: 127 + m_RestLength: 19.938877 + restLengths: + - 0.1524441 + - 0.15290284 + - 0.15289813 + - 0.15299127 + - 0.1531161 + - 0.15290153 + - 0.16036844 + - 0.15998638 + - 0.15956938 + - 0.15977395 + - 0.16026509 + - 0.15994787 + - 0.15964794 + - 0.15938759 + - 0.16015792 + - 0.16017342 + - 0.16003728 + - 0.15995121 + - 0.15990973 + - 0.15987158 + - 0.1597457 + - 0.15932155 + - 0.1603353 + - 0.16002035 + - 0.16021276 + - 0.15843129 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0.15824494 + - 0 + pooledParticles: 100 +--- !u!114 &5564886758469151143 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point + m_EditorClassIdentifier: + particleIndices: 00000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &5931347614357645318 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point + m_EditorClassIdentifier: + particleIndices: 1a000000 + m_Blueprint: {fileID: 11400000} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Snake.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Snake.asset.meta new file mode 100644 index 000000000..65790f379 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Snake.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7cc7ef3c151f24a00a1fe338fa5f827c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/SpringRod.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/SpringRod.asset new file mode 100644 index 000000000..ff0b0c429 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/SpringRod.asset @@ -0,0 +1,2499 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-9197235927271766280 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 26 + m_EditorClassIdentifier: + particleIndices: 34000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-8554650794309318006 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 2 + m_EditorClassIdentifier: + particleIndices: 04000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-7062799629812138241 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 27 + m_EditorClassIdentifier: + particleIndices: 36000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-6204515467363661297 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 4 + m_EditorClassIdentifier: + particleIndices: 08000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-6026587834117108368 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 19 + m_EditorClassIdentifier: + particleIndices: 26000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-5613563568972366451 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 21 + m_EditorClassIdentifier: + particleIndices: 2a000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-5362231322136858359 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 5 + m_EditorClassIdentifier: + particleIndices: 0a000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-4518859148014644581 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 0 + m_EditorClassIdentifier: + particleIndices: 00000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-4472545565918442984 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 22 + m_EditorClassIdentifier: + particleIndices: 2c000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-3913033247851424548 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 23 + m_EditorClassIdentifier: + particleIndices: 2e000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-3754279318447912116 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 17 + m_EditorClassIdentifier: + particleIndices: 22000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-3654237331907579593 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 20 + m_EditorClassIdentifier: + particleIndices: 28000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-1479811571211922058 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 10 + m_EditorClassIdentifier: + particleIndices: 14000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-332992812917679042 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 9 + m_EditorClassIdentifier: + particleIndices: 12000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e028b099aa5d14e399bc3d87df5b7737, type: 3} + m_Name: SpringRod + m_EditorClassIdentifier: + m_Empty: 0 + m_ActiveParticleCount: 59 + m_InitialActiveParticleCount: 59 + _bounds: + m_Center: {x: 0.0002913475, y: 1.4499997, z: 0.0011931062} + m_Extent: {x: 0.69970864, y: 1.4499997, z: 0.6985083} + positions: + - {x: 0.7, y: 0, z: 0} + - {x: 0.64423114, y: 0.049999993, z: 0.27237654} + - {x: 0.48769468, y: 0.1, z: 0.5021492} + - {x: 0.25344917, y: 0.15, z: 0.6519097} + - {x: -0.020439683, y: 0.2, z: 0.6997015} + - {x: -0.29107168, y: 0.25, z: 0.6360032} + - {x: -0.5161756, y: 0.3, z: 0.4728242} + - {x: -0.6590324, y: 0.35, z: 0.23430562} + - {x: -0.69880635, y: 0.4, z: -0.040861934} + - {x: -0.62723285, y: 0.45000002, z: -0.30951858} + - {x: -0.45755053, y: 0.5, z: -0.52976173} + - {x: -0.214962, y: 0.5500001, z: -0.665593} + - {x: 0.06124942, y: 0.6, z: -0.6973152} + - {x: 0.32770163, y: 0.65000004, z: -0.61792755} + - {x: 0.5428963, y: 0.70000005, z: -0.44188645} + - {x: 0.6715861, y: 0.7500001, z: -0.19543509} + - {x: 0.6952294, y: 0.8000001, z: 0.08158484} + - {x: 0.60809517, y: 0.8500001, z: 0.3456053} + - {x: 0.42584547, y: 0.9000001, z: 0.5555678} + - {x: 0.17574176, y: 0.9500001, z: 0.67700636} + - {x: -0.10185068, y: 1.0000001, z: 0.69255066} + - {x: -0.36321428, y: 1.0500002, z: 0.5977442} + - {x: -0.5677656, y: 1.1000001, z: 0.4094414} + - {x: -0.68184936, y: 1.1500001, z: 0.15589833} + - {x: -0.68928134, y: 1.2000002, z: -0.12202966} + - {x: -0.58688354, y: 1.2500002, z: -0.38051346} + - {x: -0.3926881, y: 1.3000002, z: -0.5794791} + - {x: -0.1359219, y: 1.3500001, z: -0.68611073} + - {x: 0.14210458, y: 1.4000002, z: -0.68542415} + - {x: 0.39748773, y: 1.4500002, z: -0.5755226} + - {x: 0.5906982, y: 1.5000001, z: -0.37560037} + - {x: 0.6897872, y: 1.5500003, z: -0.11582906} + - {x: 0.6809825, y: 1.6000003, z: 0.1620583} + - {x: 0.5636703, y: 1.6500003, z: 0.41412386} + - {x: 0.3581914, y: 1.7000003, z: 0.6014141} + - {x: 0.095638454, y: 1.7500002, z: 0.6928752} + - {x: -0.18187381, y: 1.8000003, z: 0.67595994} + - {x: -0.43040556, y: 1.8500001, z: 0.5513382} + - {x: -0.6116168, y: 1.9000003, z: 0.34047744} + - {x: -0.69537246, y: 1.9500003, z: 0.07536612} + - {x: -0.6703613, y: 2.0000002, z: -0.2015336} + - {x: -0.53853536, y: 2.0500002, z: -0.44632116} + - {x: -0.3224743, y: 2.1000001, z: -0.6212973} + - {x: -0.055030525, y: 2.15, z: -0.69727653} + - {x: 0.22102086, y: 2.2, z: -0.66419107} + - {x: 0.461855, y: 2.25, z: -0.52527404} + - {x: 0.630448, y: 2.3, z: -0.30419618} + - {x: 0.698586, y: 2.3500001, z: -0.034646925} + - {x: 0.6574545, y: 2.3999999, z: 0.24031968} + - {x: 0.51156557, y: 2.4499996, z: 0.47699428} + - {x: 0.28565866, y: 2.4999998, z: 0.63906115} + - {x: 0.014235901, y: 2.5499997, z: 0.6992998} + - {x: -0.25941357, y: 2.5999997, z: 0.65015733} + - {x: -0.49172837, y: 2.6499996, z: 0.49741945} + - {x: -0.64712936, y: 2.6999996, z: 0.26687756} + - {x: -0.6994173, y: 2.7499995, z: -0.0061883293} + - {x: -0.6423058, y: 2.7999995, z: -0.27828628} + - {x: -0.48284987, y: 2.8499994, z: -0.50604236} + - {x: -0.24786891, y: 2.8999994, z: -0.6546457} + restPositions: + - {x: 0.7, y: 0, z: 0, w: 1} + - {x: 0.64423114, y: 0.049999993, z: 0.27237654, w: 1} + - {x: 0.48769468, y: 0.1, z: 0.5021492, w: 1} + - {x: 0.25344917, y: 0.15, z: 0.6519097, w: 1} + - {x: -0.020439683, y: 0.2, z: 0.6997015, w: 1} + - {x: -0.29107168, y: 0.25, z: 0.6360032, w: 1} + - {x: -0.5161756, y: 0.3, z: 0.4728242, w: 1} + - {x: -0.6590324, y: 0.35, z: 0.23430562, w: 1} + - {x: -0.69880635, y: 0.4, z: -0.040861934, w: 1} + - {x: -0.62723285, y: 0.45000002, z: -0.30951858, w: 1} + - {x: -0.45755053, y: 0.5, z: -0.52976173, w: 1} + - {x: -0.214962, y: 0.5500001, z: -0.665593, w: 1} + - {x: 0.06124942, y: 0.6, z: -0.6973152, w: 1} + - {x: 0.32770163, y: 0.65000004, z: -0.61792755, w: 1} + - {x: 0.5428963, y: 0.70000005, z: -0.44188645, w: 1} + - {x: 0.6715861, y: 0.7500001, z: -0.19543509, w: 1} + - {x: 0.6952294, y: 0.8000001, z: 0.08158484, w: 1} + - {x: 0.60809517, y: 0.8500001, z: 0.3456053, w: 1} + - {x: 0.42584547, y: 0.9000001, z: 0.5555678, w: 1} + - {x: 0.17574176, y: 0.9500001, z: 0.67700636, w: 1} + - {x: -0.10185068, y: 1.0000001, z: 0.69255066, w: 1} + - {x: -0.36321428, y: 1.0500002, z: 0.5977442, w: 1} + - {x: -0.5677656, y: 1.1000001, z: 0.4094414, w: 1} + - {x: -0.68184936, y: 1.1500001, z: 0.15589833, w: 1} + - {x: -0.68928134, y: 1.2000002, z: -0.12202966, w: 1} + - {x: -0.58688354, y: 1.2500002, z: -0.38051346, w: 1} + - {x: -0.3926881, y: 1.3000002, z: -0.5794791, w: 1} + - {x: -0.1359219, y: 1.3500001, z: -0.68611073, w: 1} + - {x: 0.14210458, y: 1.4000002, z: -0.68542415, w: 1} + - {x: 0.39748773, y: 1.4500002, z: -0.5755226, w: 1} + - {x: 0.5906982, y: 1.5000001, z: -0.37560037, w: 1} + - {x: 0.6897872, y: 1.5500003, z: -0.11582906, w: 1} + - {x: 0.6809825, y: 1.6000003, z: 0.1620583, w: 1} + - {x: 0.5636703, y: 1.6500003, z: 0.41412386, w: 1} + - {x: 0.3581914, y: 1.7000003, z: 0.6014141, w: 1} + - {x: 0.095638454, y: 1.7500002, z: 0.6928752, w: 1} + - {x: -0.18187381, y: 1.8000003, z: 0.67595994, w: 1} + - {x: -0.43040556, y: 1.8500001, z: 0.5513382, w: 1} + - {x: -0.6116168, y: 1.9000003, z: 0.34047744, w: 1} + - {x: -0.69537246, y: 1.9500003, z: 0.07536612, w: 1} + - {x: -0.6703613, y: 2.0000002, z: -0.2015336, w: 1} + - {x: -0.53853536, y: 2.0500002, z: -0.44632116, w: 1} + - {x: -0.3224743, y: 2.1000001, z: -0.6212973, w: 1} + - {x: -0.055030525, y: 2.15, z: -0.69727653, w: 1} + - {x: 0.22102086, y: 2.2, z: -0.66419107, w: 1} + - {x: 0.461855, y: 2.25, z: -0.52527404, w: 1} + - {x: 0.630448, y: 2.3, z: -0.30419618, w: 1} + - {x: 0.698586, y: 2.3500001, z: -0.034646925, w: 1} + - {x: 0.6574545, y: 2.3999999, z: 0.24031968, w: 1} + - {x: 0.51156557, y: 2.4499996, z: 0.47699428, w: 1} + - {x: 0.28565866, y: 2.4999998, z: 0.63906115, w: 1} + - {x: 0.014235901, y: 2.5499997, z: 0.6992998, w: 1} + - {x: -0.25941357, y: 2.5999997, z: 0.65015733, w: 1} + - {x: -0.49172837, y: 2.6499996, z: 0.49741945, w: 1} + - {x: -0.64712936, y: 2.6999996, z: 0.26687756, w: 1} + - {x: -0.6994173, y: 2.7499995, z: -0.0061883293, w: 1} + - {x: -0.6423058, y: 2.7999995, z: -0.27828628, w: 1} + - {x: -0.48284987, y: 2.8499994, z: -0.50604236, w: 1} + - {x: -0.24786891, y: 2.8999994, z: -0.6546457, w: 1} + orientations: + - {x: -0.088398315, y: -0.10040869, z: -0.008956829, w: 0.990971} + - {x: -0.08490821, y: -0.2934198, z: -0.026174147, w: 0.95184577} + - {x: -0.07793229, y: -0.4783847, z: -0.042673703, w: 0.8736439} + - {x: -0.06801292, y: -0.6409238, z: -0.057172783, w: 0.7624449} + - {x: -0.055162463, y: -0.7808345, z: -0.069653355, w: 0.6183875} + - {x: 0.040379923, y: 0.88723993, z: 0.0791451, w: -0.45267078} + - {x: 0.023683697, y: 0.9600076, z: 0.08563621, w: -0.26550132} + - {x: 0.0063718134, y: 0.99348044, z: 0.08862219, w: -0.07142987} + - {x: -0.011534199, y: 0.9876166, z: 0.0880991, w: 0.12930173} + - {x: -0.028642258, y: 0.94287217, z: 0.0841077, w: 0.32108822} + - {x: -0.04493112, y: 0.85930264, z: 0.076653026, w: 0.5036909} + - {x: -0.059134346, y: 0.7434051, z: 0.06631449, w: 0.66291356} + - {x: -0.07123438, y: 0.59532374, z: 0.053105097, w: 0.79855824} + - {x: -0.08029044, y: 0.42657065, z: 0.038051687, w: 0.9000794} + - {x: -0.08629132, y: 0.23735599, z: 0.021173041, w: 0.96735084} + - {x: -0.08877041, y: 0.042390052, z: 0.0037813496, w: 0.9951425} + - {x: -0.08772473, y: -0.15808488, z: -0.01410176, w: 0.9834199} + - {x: -0.083235495, y: -0.348483, z: -0.031085985, w: 0.9330944} + - {x: -0.07530833, y: -0.52856755, z: -0.04715019, w: 0.84422857} + - {x: -0.064559504, y: -0.6843382, z: -0.06104552, w: 0.7237311} + - {x: -0.051002473, y: -0.8156011, z: -0.07275475, w: 0.57175195} + - {x: 0.03569096, y: 0.91215146, z: 0.08136722, w: -0.4001066} + - {x: 0.018644303, y: 0.97386914, z: 0.08687265, w: -0.20900835} + - {x: 0.0011876499, y: 0.99595594, z: 0.088843085, w: -0.01331389} + - {x: -0.016657317, y: 0.9783845, z: 0.08727566, w: 0.18673319} + - {x: -0.03350316, y: 0.9225208, z: 0.0822922, w: 0.37558073} + - {x: -0.04932904, y: 0.8284344, z: 0.07389935, w: 0.55299366} + - {x: -0.06290469, y: 0.70344, z: 0.06274954, w: 0.7051792} + - {x: -0.074212946, y: 0.5476929, z: 0.048856277, w: 0.83194834} + - {x: -0.08237469, y: 0.37330157, z: 0.033299856, w: 0.92344546} + - {x: -0.08738011, y: 0.18048231, z: 0.016099693, w: 0.97955686} + - {x: -0.08883985, y: -0.015773688, z: -0.0014070726, w: 0.99592006} + - {x: -0.086752035, y: -0.21522236, z: -0.019198658, w: 0.9725147} + - {x: -0.08127883, y: -0.40235803, z: -0.035891794, w: 0.9111606} + - {x: -0.072427444, y: -0.57694805, z: -0.051465854, w: 0.8119338} + - {x: -0.06088597, y: -0.72541904, z: -0.06471016, w: 0.6825487} + - {x: -0.04666843, y: -0.84758604, z: -0.07560785, w: 0.5231667} + - {x: 0.030880354, y: 0.93395203, z: 0.08331199, w: -0.34617788} + - {x: 0.013541363, y: 0.9844092, z: 0.08781297, w: -0.15180269} + - {x: -0.004000551, y: 0.9950348, z: 0.08876081, w: 0.044847354} + - {x: -0.021723531, y: 0.9658158, z: 0.086154364, w: 0.24352719} + - {x: -0.0382498, y: 0.89902353, z: 0.08019623, w: 0.4287916} + - {x: -0.053558752, y: 0.7947415, z: 0.070893906, w: 0.6004094} + - {x: -0.066460274, y: 0.6610764, z: 0.058970477, w: 0.7450393} + - {x: -0.07693825, y: 0.49819526, z: 0.04444087, w: 0.8625004} + - {x: -0.08417814, y: 0.31876016, z: 0.028434595, w: 0.94366175} + - {x: -0.08817102, y: 0.12299469, z: 0.010971596, w: 0.9884219} + - {x: -0.08860607, y: -0.073881574, z: -0.006590505, w: 0.9933011} + - {x: -0.08548327, y: -0.2716228, z: -0.024229743, w: 0.9582936} + - {x: -0.07904533, y: -0.45485812, z: -0.040575076, w: 0.88612056} + - {x: -0.06929987, y: -0.62335837, z: -0.055605892, w: 0.77687186} + - {x: -0.057004824, y: -0.7640237, z: -0.06815376, w: 0.639041} + - {x: 0.04217549, y: 0.876679, z: 0.07820303, w: -0.47279966} + - {x: 0.025964634, y: 0.95256656, z: 0.08497247, w: -0.2910712} + - {x: 0.008392524, y: 0.99159163, z: 0.08845367, w: -0.09408265} + - {x: -0.009174796, y: 0.99072045, z: 0.088375956, w: 0.10285215} + - {x: -0.026715415, y: 0.94995403, z: 0.08473943, w: 0.29948768} + - {x: -0.042865735, y: 0.8724616, z: 0.07782682, w: 0.48053747} + - {x: -0.042865735, y: 0.8724616, z: 0.07782682, w: 0.48053747} + restOrientations: + - {x: -0.088398315, y: -0.10040869, z: -0.008956829, w: 0.990971} + - {x: -0.08490821, y: -0.2934198, z: -0.026174147, w: 0.95184577} + - {x: -0.07793229, y: -0.4783847, z: -0.042673703, w: 0.8736439} + - {x: -0.06801292, y: -0.6409238, z: -0.057172783, w: 0.7624449} + - {x: -0.055162463, y: -0.7808345, z: -0.069653355, w: 0.6183875} + - {x: 0.040379923, y: 0.88723993, z: 0.0791451, w: -0.45267078} + - {x: 0.023683697, y: 0.9600076, z: 0.08563621, w: -0.26550132} + - {x: 0.0063718134, y: 0.99348044, z: 0.08862219, w: -0.07142987} + - {x: -0.011534199, y: 0.9876166, z: 0.0880991, w: 0.12930173} + - {x: -0.028642258, y: 0.94287217, z: 0.0841077, w: 0.32108822} + - {x: -0.04493112, y: 0.85930264, z: 0.076653026, w: 0.5036909} + - {x: -0.059134346, y: 0.7434051, z: 0.06631449, w: 0.66291356} + - {x: -0.07123438, y: 0.59532374, z: 0.053105097, w: 0.79855824} + - {x: -0.08029044, y: 0.42657065, z: 0.038051687, w: 0.9000794} + - {x: -0.08629132, y: 0.23735599, z: 0.021173041, w: 0.96735084} + - {x: -0.08877041, y: 0.042390052, z: 0.0037813496, w: 0.9951425} + - {x: -0.08772473, y: -0.15808488, z: -0.01410176, w: 0.9834199} + - {x: -0.083235495, y: -0.348483, z: -0.031085985, w: 0.9330944} + - {x: -0.07530833, y: -0.52856755, z: -0.04715019, w: 0.84422857} + - {x: -0.064559504, y: -0.6843382, z: -0.06104552, w: 0.7237311} + - {x: -0.051002473, y: -0.8156011, z: -0.07275475, w: 0.57175195} + - {x: 0.03569096, y: 0.91215146, z: 0.08136722, w: -0.4001066} + - {x: 0.018644303, y: 0.97386914, z: 0.08687265, w: -0.20900835} + - {x: 0.0011876499, y: 0.99595594, z: 0.088843085, w: -0.01331389} + - {x: -0.016657317, y: 0.9783845, z: 0.08727566, w: 0.18673319} + - {x: -0.03350316, y: 0.9225208, z: 0.0822922, w: 0.37558073} + - {x: -0.04932904, y: 0.8284344, z: 0.07389935, w: 0.55299366} + - {x: -0.06290469, y: 0.70344, z: 0.06274954, w: 0.7051792} + - {x: -0.074212946, y: 0.5476929, z: 0.048856277, w: 0.83194834} + - {x: -0.08237469, y: 0.37330157, z: 0.033299856, w: 0.92344546} + - {x: -0.08738011, y: 0.18048231, z: 0.016099693, w: 0.97955686} + - {x: -0.08883985, y: -0.015773688, z: -0.0014070726, w: 0.99592006} + - {x: -0.086752035, y: -0.21522236, z: -0.019198658, w: 0.9725147} + - {x: -0.08127883, y: -0.40235803, z: -0.035891794, w: 0.9111606} + - {x: -0.072427444, y: -0.57694805, z: -0.051465854, w: 0.8119338} + - {x: -0.06088597, y: -0.72541904, z: -0.06471016, w: 0.6825487} + - {x: -0.04666843, y: -0.84758604, z: -0.07560785, w: 0.5231667} + - {x: 0.030880354, y: 0.93395203, z: 0.08331199, w: -0.34617788} + - {x: 0.013541363, y: 0.9844092, z: 0.08781297, w: -0.15180269} + - {x: -0.004000551, y: 0.9950348, z: 0.08876081, w: 0.044847354} + - {x: -0.021723531, y: 0.9658158, z: 0.086154364, w: 0.24352719} + - {x: -0.0382498, y: 0.89902353, z: 0.08019623, w: 0.4287916} + - {x: -0.053558752, y: 0.7947415, z: 0.070893906, w: 0.6004094} + - {x: -0.066460274, y: 0.6610764, z: 0.058970477, w: 0.7450393} + - {x: -0.07693825, y: 0.49819526, z: 0.04444087, w: 0.8625004} + - {x: -0.08417814, y: 0.31876016, z: 0.028434595, w: 0.94366175} + - {x: -0.08817102, y: 0.12299469, z: 0.010971596, w: 0.9884219} + - {x: -0.08860607, y: -0.073881574, z: -0.006590505, w: 0.9933011} + - {x: -0.08548327, y: -0.2716228, z: -0.024229743, w: 0.9582936} + - {x: -0.07904533, y: -0.45485812, z: -0.040575076, w: 0.88612056} + - {x: -0.06929987, y: -0.62335837, z: -0.055605892, w: 0.77687186} + - {x: -0.057004824, y: -0.7640237, z: -0.06815376, w: 0.639041} + - {x: 0.04217549, y: 0.876679, z: 0.07820303, w: -0.47279966} + - {x: 0.025964634, y: 0.95256656, z: 0.08497247, w: -0.2910712} + - {x: 0.008392524, y: 0.99159163, z: 0.08845367, w: -0.09408265} + - {x: -0.009174796, y: 0.99072045, z: 0.088375956, w: 0.10285215} + - {x: -0.026715415, y: 0.94995403, z: 0.08473943, w: 0.29948768} + - {x: -0.042865735, y: 0.8724616, z: 0.07782682, w: 0.48053747} + - {x: -0.042865735, y: 0.8724616, z: 0.07782682, w: 0.48053747} + velocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + angularVelocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + invMasses: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + invRotationalMasses: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + filters: 0100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + principalRadii: + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + colors: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + points: + edges: + triangles: + distanceConstraintsData: + batches: [] + bendConstraintsData: + batches: [] + skinConstraintsData: + batches: [] + tetherConstraintsData: + batches: [] + stretchShearConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c000000 + m_ConstraintCount: 29 + m_ActiveConstraintCount: 29 + m_InitialActiveConstraintCount: 29 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000310000003200000033000000340000003500000036000000370000003800000039000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + orientationIndices: + serializedContents: 00000000020000000400000006000000080000000a0000000c0000000e00000010000000120000001400000016000000180000001a0000001c0000001e00000020000000220000002400000026000000280000002a0000002c0000002e0000003000000032000000340000003600000038000000 + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.28248742 + - 0.28248745 + - 0.28248742 + - 0.28248745 + - 0.28248745 + - 0.28248778 + - 0.28248748 + - 0.28248778 + - 0.2824875 + - 0.2824875 + - 0.2824875 + - 0.2824875 + - 0.2824875 + - 0.28248748 + - 0.28248698 + - 0.28248855 + - 0.28248754 + - 0.28248748 + - 0.28248644 + - 0.2824872 + - 0.2824872 + - 0.28248718 + - 0.28248718 + - 0.28248823 + - 0.28248614 + - 0.28248715 + - 0.2824872 + - 0.28248718 + - 0.2824872 + m_AlignBytes: 16 + restOrientations: + serializedContents: + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c000000 + m_ConstraintCount: 29 + m_ActiveConstraintCount: 29 + m_InitialActiveConstraintCount: 29 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + orientationIndices: + serializedContents: 01000000030000000500000007000000090000000b0000000d0000000f00000011000000130000001500000017000000190000001b0000001d0000001f00000021000000230000002500000027000000290000002b0000002d0000002f0000003100000033000000350000003700000039000000 + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.28248742 + - 0.28248745 + - 0.28248748 + - 0.28248742 + - 0.28248742 + - 0.28248727 + - 0.28248754 + - 0.28248724 + - 0.2824875 + - 0.2824875 + - 0.28248748 + - 0.28248754 + - 0.2824875 + - 0.2824875 + - 0.28248748 + - 0.28248698 + - 0.2824875 + - 0.28248748 + - 0.28248855 + - 0.28248718 + - 0.2824872 + - 0.2824872 + - 0.28248718 + - 0.2824861 + - 0.28248826 + - 0.2824872 + - 0.2824872 + - 0.28248718 + - 0.28248715 + m_AlignBytes: 16 + restOrientations: + serializedContents: + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 1} + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + m_AlignBytes: 16 + bendTwistConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c000000 + m_ConstraintCount: 29 + m_ActiveConstraintCount: 29 + m_InitialActiveConstraintCount: 29 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000310000003200000033000000340000003500000036000000370000003800000039000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restDarbouxVectors: + serializedContents: + - {x: -0.000000014834069, y: -0.1936437, z: -0.034824595, w: 0.98045367} + - {x: 0.000000012330821, y: -0.19364393, z: -0.03482462, w: 0.98045367} + - {x: 0.0000000056083014, y: -0.1936439, z: -0.03482461, w: 0.98045367} + - {x: -0.00000007479838, y: -0.19364391, z: -0.034824625, w: 0.98045367} + - {x: 0.000000033511224, y: -0.19364382, z: -0.034824606, w: 0.98045367} + - {x: 0.000000053525877, y: -0.19364375, z: -0.034824602, w: 0.98045367} + - {x: 0.000000016324421, y: -0.1936439, z: -0.034824625, w: 0.98045367} + - {x: 0.000000029968685, y: -0.19364375, z: -0.0348246, w: 0.98045367} + - {x: 0.000000010965417, y: -0.19364375, z: -0.034824606, w: 0.98045367} + - {x: -7.3775563e-10, y: -0.19364385, z: -0.03482462, w: 0.9804536} + - {x: 0.00000020749569, y: -0.19364373, z: -0.034824602, w: 0.98045367} + - {x: -0.00000020532734, y: -0.19364388, z: -0.03482462, w: 0.98045367} + - {x: 0.00000021831734, y: -0.19364387, z: -0.03482462, w: 0.9804536} + - {x: -0.00000020306328, y: -0.19364361, z: -0.03482458, w: 0.9804537} + - {x: 0.00000015028971, y: -0.19364366, z: -0.034824573, w: 0.9804537} + - {x: -0.00000007968951, y: -0.19364394, z: -0.034824643, w: 0.9804536} + - {x: 0.00000019577718, y: -0.19364372, z: -0.03482459, w: 0.98045367} + - {x: -0.00000021081502, y: -0.19364387, z: -0.034824625, w: 0.98045367} + - {x: 0.000000031106165, y: -0.19364384, z: -0.034824613, w: 0.9804536} + - {x: 0.0000000027044509, y: -0.19364387, z: -0.034824617, w: 0.98045367} + - {x: 0.000000015801294, y: -0.1936438, z: -0.034824602, w: 0.9804537} + - {x: 0.0000000053575264, y: -0.19364391, z: -0.03482463, w: 0.9804536} + - {x: -0.0000000030868992, y: -0.1936438, z: -0.034824602, w: 0.9804536} + - {x: 0.00000019046385, y: -0.19364369, z: -0.034824587, w: 0.9804537} + - {x: -0.00000017771922, y: -0.19364384, z: -0.034824606, w: 0.98045367} + - {x: 0.000000017428233, y: -0.19364373, z: -0.034824602, w: 0.9804537} + - {x: 0.000000010886433, y: -0.19364388, z: -0.034824617, w: 0.98045367} + - {x: 0.0000000043257606, y: -0.1936437, z: -0.03482459, w: 0.98045367} + - {x: -0.0000000017342039, y: -0.19364376, z: -0.034824602, w: 0.98045367} + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: [] + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c000000 + m_ConstraintCount: 29 + m_ActiveConstraintCount: 29 + m_InitialActiveConstraintCount: 29 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restDarbouxVectors: + serializedContents: + - {x: 0.000000018055042, y: -0.1974205, z: -0.035503812, w: 0.9796758} + - {x: -0.0000000083661424, y: -0.19742048, z: -0.035503812, w: 0.9796759} + - {x: 0.00000003859163, y: -0.1974205, z: -0.035503794, w: 0.9796758} + - {x: 0.000000013113583, y: -0.19742052, z: -0.03550382, w: 0.9796758} + - {x: -0.00000004809052, y: -0.19742063, z: -0.035503834, w: 0.97967577} + - {x: -0.000000030546445, y: -0.19742055, z: -0.035503816, w: 0.9796758} + - {x: -0.000000023244386, y: -0.1974207, z: -0.035503842, w: 0.9796757} + - {x: -0.000000019885793, y: -0.19742067, z: -0.03550383, w: 0.97967577} + - {x: 0.0000000054785922, y: -0.19742058, z: -0.035503812, w: 0.97967577} + - {x: -0.00000011335668, y: -0.19742064, z: -0.035503842, w: 0.9796757} + - {x: 0.000000005609637, y: -0.19742067, z: -0.03550379, w: 0.9796758} + - {x: -0.000000017120326, y: -0.1974206, z: -0.035503864, w: 0.97967577} + - {x: -0.0000000018460848, y: -0.19742063, z: -0.035503786, w: 0.97967577} + - {x: 0.000000046562505, y: -0.19742057, z: -0.03550385, w: 0.9796758} + - {x: -0.00000007847696, y: -0.197421, z: -0.03550387, w: 0.9796757} + - {x: -0.000000031569282, y: -0.19742058, z: -0.035503853, w: 0.97967577} + - {x: -6.023808e-10, y: -0.1974207, z: -0.035503797, w: 0.97967577} + - {x: 0.00000009220447, y: -0.19742012, z: -0.035503767, w: 0.9796759} + - {x: -0.0000000087599785, y: -0.19742072, z: -0.035503846, w: 0.97967577} + - {x: -0.0000000021966253, y: -0.19742021, z: -0.03550375, w: 0.9796759} + - {x: -0.000000019038053, y: -0.19742015, z: -0.03550373, w: 0.9796759} + - {x: -0.0000000017551981, y: -0.19742014, z: -0.035503738, w: 0.9796759} + - {x: -0.000000101955976, y: -0.1974206, z: -0.035503846, w: 0.9796758} + - {x: 0.0000000049064712, y: -0.19741946, z: -0.03550358, w: 0.97967607} + - {x: 0.00000007741675, y: -0.19742066, z: -0.03550385, w: 0.97967577} + - {x: -0.0000000047656963, y: -0.19742015, z: -0.035503726, w: 0.97967595} + - {x: -0.000000020347304, y: -0.19742025, z: -0.03550376, w: 0.9796758} + - {x: 0.000000008088907, y: -0.19742022, z: -0.03550375, w: 0.9796759} + - {x: 0, y: 0, z: 0, w: 1} + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: [] + m_AlignBytes: 16 + shapeMatchingConstraintsData: + batches: [] + aerodynamicConstraintsData: + batches: [] + chainConstraintsData: + batches: + - m_IDs: 00000000 + m_IDToIndex: 00000000 + m_ConstraintCount: 1 + m_ActiveConstraintCount: 1 + m_InitialActiveConstraintCount: 1 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + firstParticle: + serializedContents: 00000000 + m_AlignBytes: 16 + numParticles: + serializedContents: 3b000000 + m_AlignBytes: 16 + lengths: + serializedContents: + - {x: 0.28434873, y: 0.28434873} + m_AlignBytes: 16 + volumeConstraintsData: + batches: [] + groups: + - {fileID: -4518859148014644581} + - {fileID: 2371962795392660606} + - {fileID: -8554650794309318006} + - {fileID: 4748757721283841919} + - {fileID: -6204515467363661297} + - {fileID: -5362231322136858359} + - {fileID: 7744494324993175841} + - {fileID: 5743642769677576324} + - {fileID: 2090210430256682874} + - {fileID: -332992812917679042} + - {fileID: -1479811571211922058} + - {fileID: 8073728408466097637} + - {fileID: 3949240139764315219} + - {fileID: 3535050140158790076} + - {fileID: 8392284965903659261} + - {fileID: 8436558200313416828} + - {fileID: 7514755403420506347} + - {fileID: -3754279318447912116} + - {fileID: 8516833290342707563} + - {fileID: -6026587834117108368} + - {fileID: -3654237331907579593} + - {fileID: -5613563568972366451} + - {fileID: -4472545565918442984} + - {fileID: -3913033247851424548} + - {fileID: 1526367778732422361} + - {fileID: 6595340479447865845} + - {fileID: -9197235927271766280} + - {fileID: -7062799629812138241} + - {fileID: 237785562514482078} + - {fileID: 9190015862606898100} + path: + m_Names: + - control point 0 + - control point 1 + - control point 2 + - control point 3 + - control point 4 + - control point 5 + - control point 6 + - control point 7 + - control point 8 + - control point 9 + - control point 10 + - control point 11 + - control point 12 + - control point 13 + - control point 14 + - control point 15 + - control point 16 + - control point 17 + - control point 18 + - control point 19 + - control point 20 + - control point 21 + - control point 22 + - control point 23 + - control point 24 + - control point 25 + - control point 26 + - control point 27 + - control point 28 + - control point 29 + m_Points: + data: + - tangentMode: 0 + inTangent: {x: 0, y: -0.026756361, z: -0.18729453} + position: {x: 0.7, y: 0, z: 0} + outTangent: {x: -0, y: 0.026756361, z: 0.18729453} + - tangentMode: 0 + inTangent: {x: 0.13435684, y: -0.026756361, z: -0.13048933} + position: {x: 0.48769468, y: 0.1, z: 0.5021492} + outTangent: {x: -0.13435684, y: 0.026756361, z: 0.13048933} + - tangentMode: 0 + inTangent: {x: 0.18721464, y: -0.026756361, z: 0.0054689148} + position: {x: -0.020439683, y: 0.2, z: 0.6997015} + outTangent: {x: -0.18721464, y: 0.026756361, z: -0.0054689148} + - tangentMode: 0 + inTangent: {x: 0.12651055, y: -0.026756361, z: 0.13810982} + position: {x: -0.5161756, y: 0.3, z: 0.4728242} + outTangent: {x: -0.12651055, y: 0.026756361, z: -0.13810982} + - tangentMode: 0 + inTangent: {x: -0.010933166, y: -0.026756361, z: 0.18697514} + position: {x: -0.69880635, y: 0.4, z: -0.040861934} + outTangent: {x: 0.010933166, y: 0.026756361, z: -0.18697514} + - tangentMode: 0 + inTangent: {x: -0.14174496, y: -0.026756361, z: 0.122423865} + position: {x: -0.45755053, y: 0.5, z: -0.52976173} + outTangent: {x: 0.14174496, y: 0.026756361, z: -0.122423865} + - tangentMode: 0 + inTangent: {x: -0.18657617, y: -0.026756361, z: -0.016388116} + position: {x: 0.06124942, y: 0.6, z: -0.6973152} + outTangent: {x: 0.18657617, y: 0.026756361, z: 0.016388116} + - tangentMode: 0 + inTangent: {x: -0.11823272, y: -0.026756361, z: -0.14525929} + position: {x: 0.5428963, y: 0.70000005, z: -0.44188645} + outTangent: {x: 0.11823272, y: 0.026756361, z: 0.14525929} + - tangentMode: 0 + inTangent: {x: 0.021829134, y: -0.026756361, z: -0.18601808} + position: {x: 0.6952294, y: 0.8000001, z: 0.08158484} + outTangent: {x: -0.021829134, y: 0.026756361, z: 0.18601808} + - tangentMode: 0 + inTangent: {x: 0.14864974, y: -0.026756361, z: -0.11394075} + position: {x: 0.42584547, y: 0.9000001, z: 0.5555678} + outTangent: {x: -0.14864974, y: 0.026756361, z: 0.11394075} + - tangentMode: 0 + inTangent: {x: 0.18530135, y: -0.026756361, z: 0.027251536} + position: {x: -0.10185068, y: 1.0000001, z: 0.69255066} + outTangent: {x: -0.18530135, y: 0.026756361, z: -0.027251536} + - tangentMode: 0 + inTangent: {x: 0.1095516, y: -0.026756357, z: 0.15191339} + position: {x: -0.5677656, y: 1.1000001, z: 0.4094414} + outTangent: {x: -0.1095516, y: 0.026756357, z: -0.15191339} + - tangentMode: 0 + inTangent: {x: -0.032650698, y: -0.026756361, z: 0.18442662} + position: {x: -0.68928134, y: 1.2000002, z: -0.12202966} + outTangent: {x: 0.032650698, y: 0.026756361, z: -0.18442662} + - tangentMode: 0 + inTangent: {x: -0.15504752, y: -0.026756361, z: 0.10506904} + position: {x: -0.3926881, y: 1.3000002, z: -0.5794791} + outTangent: {x: 0.15504752, y: 0.026756361, z: -0.10506904} + - tangentMode: 0 + inTangent: {x: -0.18339457, y: -0.026756361, z: -0.03802201} + position: {x: 0.14210458, y: 1.4000002, z: -0.68542415} + outTangent: {x: 0.18339457, y: 0.026756361, z: 0.03802201} + - tangentMode: 0 + inTangent: {x: -0.10049687, y: -0.026756361, z: -0.1580494} + position: {x: 0.5906985, y: 1.5000002, z: -0.37559992} + outTangent: {x: 0.10049687, y: 0.026756361, z: 0.1580494} + - tangentMode: 0 + inTangent: {x: 0.043360904, y: -0.026756361, z: -0.18220612} + position: {x: 0.6809825, y: 1.6000003, z: 0.1620583} + outTangent: {x: -0.043360904, y: 0.026756361, z: 0.18220612} + - tangentMode: 0 + inTangent: {x: 0.1609165, y: -0.026756361, z: -0.09583897} + position: {x: 0.3581914, y: 1.7000003, z: 0.6014141} + outTangent: {x: -0.1609165, y: 0.026756361, z: 0.09583897} + - tangentMode: 0 + inTangent: {x: 0.18086228, y: -0.026756365, z: 0.04866282} + position: {x: -0.18187381, y: 1.8000003, z: 0.67595994} + outTangent: {x: -0.18086228, y: 0.026756365, z: -0.04866282} + - tangentMode: 0 + inTangent: {x: 0.09109937, y: -0.026756361, z: 0.16364639} + position: {x: -0.6116168, y: 1.9000003, z: 0.34047744} + outTangent: {x: -0.09109937, y: 0.026756361, z: -0.16364639} + - tangentMode: 0 + inTangent: {x: -0.05392305, y: -0.026756357, z: 0.17936425} + position: {x: -0.6703613, y: 2.0000002, z: -0.2015336} + outTangent: {x: 0.05392305, y: 0.026756357, z: -0.17936425} + - tangentMode: 0 + inTangent: {x: -0.16623655, y: -0.026756361, z: 0.08628239} + position: {x: -0.3224743, y: 2.1000001, z: -0.6212973} + outTangent: {x: 0.16623655, y: 0.026756361, z: -0.08628239} + - tangentMode: 0 + inTangent: {x: -0.17771336, y: -0.026756361, z: -0.059137143} + position: {x: 0.22102086, y: 2.2, z: -0.66419107} + outTangent: {x: 0.17771336, y: 0.026756361, z: 0.059137143} + - tangentMode: 0 + inTangent: {x: -0.081391826, y: -0.026756361, z: -0.16868493} + position: {x: 0.630448, y: 2.3, z: -0.30419618} + outTangent: {x: 0.081391826, y: 0.026756361, z: 0.16868493} + - tangentMode: 0 + inTangent: {x: 0.064300805, y: -0.026756361, z: -0.1759109} + position: {x: 0.6574545, y: 2.3999999, z: 0.24031968} + outTangent: {x: -0.064300805, y: 0.026756361, z: 0.1759109} + - tangentMode: 0 + inTangent: {x: 0.17098948, y: -0.026756357, z: -0.076431856} + position: {x: 0.28565866, y: 2.4999998, z: 0.63906115} + outTangent: {x: -0.17098948, y: 0.026756357, z: 0.076431856} + - tangentMode: 0 + inTangent: {x: 0.17395844, y: -0.026756361, z: 0.069409624} + position: {x: -0.25941357, y: 2.5999997, z: 0.65015733} + outTangent: {x: -0.17395844, y: 0.026756361, z: -0.069409624} + - tangentMode: 0 + inTangent: {x: 0.071406715, y: -0.026756357, z: 0.17314824} + position: {x: -0.64712936, y: 2.6999996, z: 0.26687756} + outTangent: {x: -0.071406715, y: 0.026756357, z: -0.17314824} + - tangentMode: 0 + inTangent: {x: -0.07445928, y: -0.026756361, z: 0.17185766} + position: {x: -0.6423058, y: 2.7999995, z: -0.27828628} + outTangent: {x: 0.07445928, y: 0.026756361, z: -0.17185766} + - tangentMode: 0 + inTangent: {x: -0.17515934, y: -0.026756361, z: 0.066320695} + position: {x: -0.24786891, y: 2.8999994, z: -0.6546457} + outTangent: {x: 0.17515934, y: 0.026756361, z: -0.066320695} + m_Normals: + data: + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + m_Colors: + data: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + m_Thickness: + data: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + m_Masses: + data: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + m_RotationalMasses: + data: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + m_Filters: + data: 010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + m_Closed: 0 + m_ArcLengthTable: + - 0 + - 0.027028512 + - 0.054062314 + - 0.08110634 + - 0.10816368 + - 0.1352358 + - 0.16232279 + - 0.18942355 + - 0.216536 + - 0.24365735 + - 0.27078426 + - 0.29791307 + - 0.32503998 + - 0.35216135 + - 0.3792738 + - 0.40637454 + - 0.43346152 + - 0.46053365 + - 0.48759097 + - 0.51463497 + - 0.5416688 + - 0.5686973 + - 0.5957258 + - 0.6227596 + - 0.6498036 + - 0.6768609 + - 0.70393306 + - 0.73102003 + - 0.7581208 + - 0.78523326 + - 0.8123546 + - 0.83948153 + - 0.86661035 + - 0.89373726 + - 0.9208586 + - 0.9479711 + - 0.97507185 + - 1.0021589 + - 1.029231 + - 1.0562882 + - 1.0833323 + - 1.1103661 + - 1.1373947 + - 1.1644232 + - 1.191457 + - 1.2185011 + - 1.2455584 + - 1.2726305 + - 1.2997174 + - 1.3268182 + - 1.3539307 + - 1.381052 + - 1.4081789 + - 1.4353077 + - 1.4624346 + - 1.489556 + - 1.5166684 + - 1.5437692 + - 1.5708562 + - 1.5979283 + - 1.6249856 + - 1.6520296 + - 1.6790634 + - 1.706092 + - 1.7331206 + - 1.7601544 + - 1.7871984 + - 1.8142557 + - 1.8413278 + - 1.8684148 + - 1.8955156 + - 1.922628 + - 1.9497494 + - 1.9768763 + - 2.004005 + - 2.0311317 + - 2.058253 + - 2.0853655 + - 2.1124663 + - 2.1395533 + - 2.1666255 + - 2.193683 + - 2.220727 + - 2.2477608 + - 2.2747893 + - 2.301818 + - 2.3288517 + - 2.3558958 + - 2.3829532 + - 2.4100254 + - 2.4371123 + - 2.4642131 + - 2.4913256 + - 2.518447 + - 2.5455737 + - 2.5727024 + - 2.5998292 + - 2.6269505 + - 2.654063 + - 2.6811638 + - 2.7082508 + - 2.735323 + - 2.7623804 + - 2.7894244 + - 2.8164582 + - 2.8434868 + - 2.8705153 + - 2.8975492 + - 2.9245932 + - 2.9516506 + - 2.9787228 + - 3.0058098 + - 3.0329106 + - 3.060023 + - 3.0871444 + - 3.1142714 + - 3.1414 + - 3.1685271 + - 3.1956484 + - 3.222761 + - 3.2498617 + - 3.2769487 + - 3.304021 + - 3.3310783 + - 3.3581223 + - 3.3851562 + - 3.4121847 + - 3.4392133 + - 3.466247 + - 3.4932911 + - 3.5203485 + - 3.5474207 + - 3.5745077 + - 3.6016085 + - 3.628721 + - 3.6558423 + - 3.6829693 + - 3.710098 + - 3.737225 + - 3.7643464 + - 3.7914588 + - 3.8185596 + - 3.8456466 + - 3.8727188 + - 3.8997762 + - 3.9268203 + - 3.953854 + - 3.9808826 + - 4.007911 + - 4.034945 + - 4.061989 + - 4.089046 + - 4.116118 + - 4.143205 + - 4.1703057 + - 4.197418 + - 4.2245398 + - 4.2516665 + - 4.2787952 + - 4.305922 + - 4.3330436 + - 4.360156 + - 4.3872566 + - 4.414344 + - 4.441416 + - 4.468473 + - 4.495517 + - 4.5225506 + - 4.549579 + - 4.5766077 + - 4.6036415 + - 4.6306853 + - 4.6577425 + - 4.6848145 + - 4.7119017 + - 4.739002 + - 4.7661147 + - 4.7932363 + - 4.820363 + - 4.8474917 + - 4.8746185 + - 4.90174 + - 4.9288526 + - 4.955953 + - 4.9830403 + - 5.0101123 + - 5.0371695 + - 5.0642133 + - 5.091247 + - 5.1182756 + - 5.145304 + - 5.172338 + - 5.199382 + - 5.226439 + - 5.253511 + - 5.280598 + - 5.3076987 + - 5.334811 + - 5.3619328 + - 5.3890595 + - 5.4161882 + - 5.443315 + - 5.4704366 + - 5.497549 + - 5.5246496 + - 5.551737 + - 5.578809 + - 5.605866 + - 5.63291 + - 5.6599436 + - 5.686972 + - 5.7140007 + - 5.7410345 + - 5.7680783 + - 5.7951355 + - 5.8222075 + - 5.8492947 + - 5.876395 + - 5.9035077 + - 5.9306293 + - 5.957756 + - 5.9848847 + - 6.0120115 + - 6.039133 + - 6.0662456 + - 6.093346 + - 6.1204333 + - 6.1475053 + - 6.1745625 + - 6.2016063 + - 6.22864 + - 6.2556686 + - 6.282697 + - 6.309731 + - 6.336775 + - 6.363832 + - 6.390904 + - 6.417991 + - 6.4450917 + - 6.472204 + - 6.4993258 + - 6.5264525 + - 6.553581 + - 6.580708 + - 6.6078296 + - 6.634942 + - 6.6620426 + - 6.68913 + - 6.716202 + - 6.743259 + - 6.770303 + - 6.7973366 + - 6.824365 + - 6.8513937 + - 6.8784275 + - 6.9054713 + - 6.9325285 + - 6.9596004 + - 6.9866877 + - 7.013788 + - 7.0409007 + - 7.0680223 + - 7.095149 + - 7.1222777 + - 7.1494045 + - 7.176526 + - 7.2036386 + - 7.230739 + - 7.2578263 + - 7.2848983 + - 7.3119555 + - 7.3389993 + - 7.366033 + - 7.3930616 + - 7.42009 + - 7.447124 + - 7.474168 + - 7.501225 + - 7.528297 + - 7.555384 + - 7.5824847 + - 7.609597 + - 7.6367188 + - 7.6638455 + - 7.690974 + - 7.718101 + - 7.7452226 + - 7.772335 + - 7.7994356 + - 7.826523 + - 7.853595 + - 7.880652 + - 7.907696 + - 7.9347296 + - 7.961758 + - 7.9887867 + - 8.0158205 + - 8.042865 + - 8.069922 + - 8.096994 + - 8.124082 + - 8.151182 + - 8.178294 + - 8.205416 + - 8.232543 + - 8.259672 + - 8.286799 + - 8.313921 + - 8.341033 + - 8.368134 + - 8.395221 + - 8.422293 + - 8.44935 + - 8.476395 + - 8.503428 + - 8.530457 + - 8.557485 + - 8.584518 + - 8.611563 + - 8.63862 + - 8.665692 + - 8.69278 + - 8.71988 + - 8.746992 + - 8.774114 + - 8.801241 + - 8.82837 + - 8.855497 + - 8.882619 + - 8.909731 + - 8.936831 + - 8.963919 + - 8.990991 + - 9.018048 + - 9.045093 + - 9.072126 + - 9.099154 + - 9.126183 + - 9.153216 + - 9.180261 + - 9.207318 + - 9.23439 + - 9.261477 + - 9.288578 + - 9.31569 + - 9.342812 + - 9.369939 + - 9.397068 + - 9.424195 + - 9.451317 + - 9.478429 + - 9.505529 + - 9.532617 + - 9.559689 + - 9.586746 + - 9.6137905 + - 9.640824 + - 9.667852 + - 9.6948805 + - 9.721914 + - 9.748959 + - 9.776016 + - 9.803088 + - 9.830175 + - 9.857276 + - 9.884388 + - 9.9115095 + - 9.938637 + - 9.965766 + - 9.992893 + - 10.020015 + - 10.047127 + - 10.074227 + - 10.101315 + - 10.1283865 + - 10.155444 + - 10.182488 + - 10.209522 + - 10.23655 + - 10.263578 + - 10.290612 + - 10.3176565 + - 10.344714 + - 10.371786 + - 10.398873 + - 10.425974 + - 10.453086 + - 10.480207 + - 10.507335 + - 10.534464 + - 10.561591 + - 10.588713 + - 10.615825 + - 10.642925 + - 10.670012 + - 10.697084 + - 10.724142 + - 10.751186 + - 10.77822 + - 10.805248 + - 10.832276 + - 10.85931 + - 10.886354 + - 10.913412 + - 10.940484 + - 10.967571 + - 10.994672 + - 11.021784 + - 11.048905 + - 11.076033 + - 11.103162 + - 11.130289 + - 11.157411 + - 11.184523 + - 11.211623 + - 11.23871 + - 11.265782 + - 11.29284 + - 11.319884 + - 11.346918 + - 11.373946 + - 11.400974 + - 11.428008 + - 11.455052 + - 11.48211 + - 11.509182 + - 11.536269 + - 11.56337 + - 11.590482 + - 11.617603 + - 11.644731 + - 11.67186 + - 11.698987 + - 11.726109 + - 11.753221 + - 11.780321 + - 11.807408 + - 11.83448 + - 11.861538 + - 11.888582 + - 11.915616 + - 11.942644 + - 11.969672 + - 11.996706 + - 12.02375 + - 12.050808 + - 12.07788 + - 12.104967 + - 12.132068 + - 12.15918 + - 12.186301 + - 12.2134285 + - 12.240558 + - 12.267685 + - 12.2948065 + - 12.3219185 + - 12.349019 + - 12.376106 + - 12.403178 + - 12.430236 + - 12.45728 + - 12.484314 + - 12.511342 + - 12.53837 + - 12.565404 + - 12.592448 + - 12.619506 + - 12.646578 + - 12.673665 + - 12.700766 + - 12.727878 + - 12.754999 + - 12.782126 + - 12.809256 + - 12.836383 + - 12.863504 + - 12.890616 + - 12.917717 + - 12.944804 + - 12.971876 + - 12.998934 + - 13.025978 + - 13.053012 + - 13.08004 + - 13.107068 + - 13.134102 + - 13.161146 + - 13.188204 + - 13.215276 + - 13.242363 + - 13.269464 + - 13.296576 + - 13.323697 + - 13.350824 + - 13.377954 + - 13.405081 + - 13.432202 + - 13.459314 + - 13.486415 + - 13.513502 + - 13.540574 + - 13.567632 + - 13.594676 + - 13.62171 + - 13.648738 + - 13.675766 + - 13.7028 + - 13.729844 + - 13.756902 + - 13.783974 + - 13.811061 + - 13.838161 + - 13.865273 + - 13.892395 + - 13.919522 + - 13.946651 + - 13.973779 + - 14.0009 + - 14.028012 + - 14.055113 + - 14.0822 + - 14.109272 + - 14.13633 + - 14.163374 + - 14.190408 + - 14.217436 + - 14.244464 + - 14.271498 + - 14.298542 + - 14.3256 + - 14.352672 + - 14.379759 + - 14.406859 + - 14.433971 + - 14.461093 + - 14.48822 + - 14.515349 + - 14.542477 + - 14.569598 + - 14.59671 + - 14.623811 + - 14.650898 + - 14.67797 + - 14.705028 + - 14.732072 + - 14.759106 + - 14.786134 + - 14.813162 + - 14.840196 + - 14.86724 + - 14.894298 + - 14.92137 + - 14.948457 + - 14.975557 + - 15.002669 + - 15.029791 + - 15.056918 + - 15.084047 + - 15.111175 + - 15.138296 + - 15.165408 + - 15.192509 + - 15.219596 + - 15.246668 + - 15.2737255 + - 15.30077 + - 15.327804 + - 15.354832 + - 15.38186 + - 15.408894 + - 15.435938 + - 15.462996 + - 15.4900675 + - 15.517155 + - 15.544255 + - 15.571367 + - 15.598489 + - 15.625616 + - 15.652745 + - 15.6798725 + - 15.706994 + - 15.734106 + - 15.761207 + - 15.788294 + - 15.815366 + - 15.842423 + - 15.869468 + - 15.896502 + - 15.92353 + - 15.950558 + - 15.9775915 + - 16.004635 + - 16.031693 + - 16.058765 + - 16.085852 + - 16.112953 + - 16.140066 + - 16.167187 + - 16.194313 + - 16.221441 + - 16.248568 + - 16.275688 + - 16.302801 + - 16.329903 + - 16.356989 + - 16.384062 + - 16.41112 + - 16.438164 + - 16.465197 + - 16.492226 + m_TotalSplineLenght: 16.492226 + OnPathChanged: + m_PersistentCalls: + m_Calls: [] + OnControlPointAdded: + m_PersistentCalls: + m_Calls: [] + OnControlPointRemoved: + m_PersistentCalls: + m_Calls: [] + OnControlPointRenamed: + m_PersistentCalls: + m_Calls: [] + thickness: 0.1 + resolution: 0.25 + m_InterParticleDistance: 0.28434873 + totalParticles: 59 + m_RestLength: 16.384266 + restLengths: + - 0.28248742 + - 0.28248742 + - 0.28248745 + - 0.28248745 + - 0.28248742 + - 0.28248748 + - 0.28248745 + - 0.28248742 + - 0.28248745 + - 0.28248742 + - 0.28248778 + - 0.28248727 + - 0.28248748 + - 0.28248754 + - 0.28248778 + - 0.28248724 + - 0.2824875 + - 0.2824875 + - 0.2824875 + - 0.2824875 + - 0.2824875 + - 0.28248748 + - 0.2824875 + - 0.28248754 + - 0.2824875 + - 0.2824875 + - 0.28248748 + - 0.2824875 + - 0.28248698 + - 0.28248748 + - 0.28248855 + - 0.28248698 + - 0.28248754 + - 0.2824875 + - 0.28248748 + - 0.28248748 + - 0.28248644 + - 0.28248855 + - 0.2824872 + - 0.28248718 + - 0.2824872 + - 0.2824872 + - 0.28248718 + - 0.2824872 + - 0.28248718 + - 0.28248718 + - 0.28248823 + - 0.2824861 + - 0.28248614 + - 0.28248826 + - 0.28248715 + - 0.2824872 + - 0.2824872 + - 0.2824872 + - 0.28248718 + - 0.28248718 + - 0.2824872 + - 0.28248715 + - 0 + keepInitialShape: 1 +--- !u!114 &237785562514482078 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 28 + m_EditorClassIdentifier: + particleIndices: 38000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &1526367778732422361 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 24 + m_EditorClassIdentifier: + particleIndices: 30000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &2090210430256682874 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 8 + m_EditorClassIdentifier: + particleIndices: 10000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &2371962795392660606 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 1 + m_EditorClassIdentifier: + particleIndices: 02000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &3535050140158790076 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 13 + m_EditorClassIdentifier: + particleIndices: 1a000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &3949240139764315219 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 12 + m_EditorClassIdentifier: + particleIndices: 18000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &4748757721283841919 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 3 + m_EditorClassIdentifier: + particleIndices: 06000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &5743642769677576324 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 7 + m_EditorClassIdentifier: + particleIndices: 0e000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &6595340479447865845 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 25 + m_EditorClassIdentifier: + particleIndices: 32000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &7514755403420506347 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 16 + m_EditorClassIdentifier: + particleIndices: 20000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &7744494324993175841 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 6 + m_EditorClassIdentifier: + particleIndices: 0c000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &8073728408466097637 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 11 + m_EditorClassIdentifier: + particleIndices: 16000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &8392284965903659261 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 14 + m_EditorClassIdentifier: + particleIndices: 1c000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &8436558200313416828 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 15 + m_EditorClassIdentifier: + particleIndices: 1e000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &8516833290342707563 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 18 + m_EditorClassIdentifier: + particleIndices: 24000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &9190015862606898100 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point 29 + m_EditorClassIdentifier: + particleIndices: 3a000000 + m_Blueprint: {fileID: 11400000} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/SpringRod.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/SpringRod.asset.meta new file mode 100644 index 000000000..054979aed --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/SpringRod.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b74d67cfe23804ec1b4f215ac5e3d500 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Straight long rope.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Straight long rope.asset new file mode 100644 index 000000000..c4b8acb3a --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Straight long rope.asset @@ -0,0 +1,1641 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-8864857226987616246 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: control point + m_EditorClassIdentifier: + particleIndices: 0b000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-2639811391673711616 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: start + m_EditorClassIdentifier: + particleIndices: 00000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f7e67b5626124d0db9886e6cd2aacff, type: 3} + m_Name: Straight long rope + m_EditorClassIdentifier: + m_Empty: 0 + m_ActiveParticleCount: 12 + m_InitialActiveParticleCount: 12 + _bounds: + m_Center: {x: 0, y: 0.000000011620729, z: 0} + m_Extent: {x: 1, y: 0.000000011620729, z: 0} + positions: + - {x: -1, y: 0, z: 0} + - {x: -0.81866354, y: 0.000000023241459, z: 0} + - {x: -0.6374941, y: 0.000000022447937, z: 0} + - {x: -0.45539066, y: 0.000000020707985, z: 0} + - {x: -0.27319038, y: 0.000000018467768, z: 0} + - {x: -0.09126747, y: 0.000000015923687, z: 0} + - {x: 0.09076936, y: 0.000000013179169, z: 0} + - {x: 0.27281737, y: 0.000000010311938, z: 0} + - {x: 0.45461026, y: 0.0000000073946174, z: 0} + - {x: 0.6365024, y: 0.0000000045053, z: 0} + - {x: 0.8192139, y: 0.0000000017929351, z: 0} + - {x: 1, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + restPositions: + - {x: -1, y: 0, z: 0, w: 1} + - {x: -0.81866354, y: 0.000000023241459, z: 0, w: 1} + - {x: -0.6374941, y: 0.000000022447937, z: 0, w: 1} + - {x: -0.45539066, y: 0.000000020707985, z: 0, w: 1} + - {x: -0.27319038, y: 0.000000018467768, z: 0, w: 1} + - {x: -0.09126747, y: 0.000000015923687, z: 0, w: 1} + - {x: 0.09076936, y: 0.000000013179169, z: 0, w: 1} + - {x: 0.27281737, y: 0.000000010311938, z: 0, w: 1} + - {x: 0.45461026, y: 0.0000000073946174, z: 0, w: 1} + - {x: 0.6365024, y: 0.0000000045053, z: 0, w: 1} + - {x: 0.8192139, y: 0.0000000017929351, z: 0, w: 1} + - {x: 1, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + orientations: [] + restOrientations: [] + velocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + angularVelocities: [] + invMasses: + - 10 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 10 + - 10 + - 10 + - 10 + - 10 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + invRotationalMasses: [] + filters: 010000000100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + principalRadii: + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + colors: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + points: + edges: 000000000100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000a0000000a0000000b000000 + triangles: + distanceConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f0000003000000031000000320000003300000034000000350000003600000037000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f0000003000000031000000320000003300000034000000350000003600000037000000 + m_ConstraintCount: 56 + m_ActiveConstraintCount: 6 + m_InitialActiveConstraintCount: 6 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.18133646 + - 0.18210343 + - 0.18192291 + - 0.18204802 + - 0.18189213 + - 0.18078607 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000310000003200000033000000340000003500000036000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000310000003200000033000000340000003500000036000000 + m_ConstraintCount: 55 + m_ActiveConstraintCount: 5 + m_InitialActiveConstraintCount: 5 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.18116945 + - 0.18220028 + - 0.18203682 + - 0.18179289 + - 0.18271154 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + bendConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000 + m_ConstraintCount: 37 + m_ActiveConstraintCount: 4 + m_InitialActiveConstraintCount: 4 + particleIndices: + serializedContents: 000000000200000001000000030000000500000004000000060000000800000007000000090000000b0000000a0000000c0000000e0000000d0000000f0000001100000010000000120000001400000013000000150000001700000016000000180000001a000000190000001b0000001d0000001c0000001e000000200000001f0000002100000023000000220000002400000026000000250000002700000029000000280000002a0000002c0000002b0000002d0000002f0000002e000000300000003200000031000000330000003500000034000000360000003800000037000000390000003b0000003a0000003c0000003e0000003d0000003f0000004100000040000000420000004400000043000000450000004700000046000000480000004a000000490000004b0000004d0000004c0000004e000000500000004f0000005100000053000000520000005400000056000000550000005700000059000000580000005a0000005c0000005b0000005d0000005f0000005e000000600000006200000061000000630000006500000064000000660000006800000067000000690000006b0000006a0000006c0000006e0000006d000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.00005567074 + - 0.00009247661 + - 0.000085026026 + - 0.0006418228 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000 + m_ConstraintCount: 37 + m_ActiveConstraintCount: 3 + m_InitialActiveConstraintCount: 3 + particleIndices: + serializedContents: 0100000003000000020000000400000006000000050000000700000009000000080000000a0000000c0000000b0000000d0000000f0000000e000000100000001200000011000000130000001500000014000000160000001800000017000000190000001b0000001a0000001c0000001e0000001d0000001f0000002100000020000000220000002400000023000000250000002700000026000000280000002a000000290000002b0000002d0000002c0000002e000000300000002f0000003100000033000000320000003400000036000000350000003700000039000000380000003a0000003c0000003b0000003d0000003f0000003e000000400000004200000041000000430000004500000044000000460000004800000047000000490000004b0000004a0000004c0000004e0000004d0000004f0000005100000050000000520000005400000053000000550000005700000056000000580000005a000000590000005b0000005d0000005c0000005e000000600000005f0000006100000063000000620000006400000066000000650000006700000069000000680000006a0000006c0000006b0000006d0000006f0000006e000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.00031131506 + - 0.00003796816 + - 0.000033080578 + - 0.3935954 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000 + m_ConstraintCount: 36 + m_ActiveConstraintCount: 3 + m_InitialActiveConstraintCount: 3 + particleIndices: + serializedContents: 020000000400000003000000050000000700000006000000080000000a000000090000000b0000000d0000000c0000000e000000100000000f0000001100000013000000120000001400000016000000150000001700000019000000180000001a0000001c0000001b0000001d0000001f0000001e000000200000002200000021000000230000002500000024000000260000002800000027000000290000002b0000002a0000002c0000002e0000002d0000002f0000003100000030000000320000003400000033000000350000003700000036000000380000003a000000390000003b0000003d0000003c0000003e000000400000003f0000004100000043000000420000004400000046000000450000004700000049000000480000004a0000004c0000004b0000004d0000004f0000004e000000500000005200000051000000530000005500000054000000560000005800000057000000590000005b0000005a0000005c0000005e0000005d0000005f0000006100000060000000620000006400000063000000650000006700000066000000680000006a000000690000006b0000006d0000006c000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.000032275915 + - 0.0000037252903 + - 0.0002731681 + - 0.33333334 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + skinConstraintsData: + batches: [] + tetherConstraintsData: + batches: [] + stretchShearConstraintsData: + batches: [] + bendTwistConstraintsData: + batches: [] + shapeMatchingConstraintsData: + batches: [] + aerodynamicConstraintsData: + batches: [] + chainConstraintsData: + batches: [] + volumeConstraintsData: + batches: [] + groups: + - {fileID: -2639811391673711616} + - {fileID: 8225853497016287227} + - {fileID: -8864857226987616246} + path: + m_Names: + - start + - start 2 + - control point + m_Points: + data: + - tangentMode: 0 + inTangent: {x: -0.25, y: -0, z: -0} + position: {x: -1, y: 0, z: 0} + outTangent: {x: 0.03645277, y: 0, z: 0} + - tangentMode: 0 + inTangent: {x: -0.08185488, y: 0, z: 0} + position: {x: -0.81866354, y: 0.000000023241459, z: 0} + outTangent: {x: 0.47952083, y: -0, z: -0} + - tangentMode: 0 + inTangent: {x: -0.21354723, y: 0, z: 0} + position: {x: 1, y: 0, z: 0} + outTangent: {x: 0.25, y: -0, z: -0} + m_Normals: + data: + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + m_Colors: + data: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + m_Thickness: + data: + - 1 + - 1 + - 1 + m_Masses: + data: + - 0.1 + - 0.10000001 + - 0.1 + m_RotationalMasses: + data: + - 1 + - 1 + - 1 + m_Filters: + data: 010000000100ffff0100ffff + m_Closed: 0 + m_ArcLengthTable: + - 0 + - 0.005387491 + - 0.01113154 + - 0.017227126 + - 0.023669228 + - 0.030452823 + - 0.037572894 + - 0.045024417 + - 0.05280237 + - 0.06090173 + - 0.06931748 + - 0.07804461 + - 0.08707808 + - 0.096412875 + - 0.10604398 + - 0.115966365 + - 0.12617502 + - 0.13666491 + - 0.14743102 + - 0.15846832 + - 0.1697718 + - 0.18133645 + - 0.25406623 + - 0.33457667 + - 0.4218583 + - 0.51490164 + - 0.61269724 + - 0.7142356 + - 0.81850725 + - 0.9245027 + - 1.0312124 + - 1.1376271 + - 1.2427373 + - 1.3455333 + - 1.4450057 + - 1.540145 + - 1.6299419 + - 1.7133868 + - 1.7894702 + - 1.8571827 + - 1.9155148 + - 1.9634571 + - 2 + m_TotalSplineLenght: 2 + OnPathChanged: + m_PersistentCalls: + m_Calls: [] + OnControlPointAdded: + m_PersistentCalls: + m_Calls: [] + OnControlPointRemoved: + m_PersistentCalls: + m_Calls: [] + OnControlPointRenamed: + m_PersistentCalls: + m_Calls: [] + thickness: 0.1 + resolution: 0.5 + m_InterParticleDistance: 0.18181819 + totalParticles: 112 + m_RestLength: 20.181805 + restLengths: + - 0.18133646 + - 0.18116945 + - 0.18210343 + - 0.18220028 + - 0.18192291 + - 0.18203682 + - 0.18204802 + - 0.18179289 + - 0.18189213 + - 0.18271154 + - 0.18078607 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0.18181819 + - 0 + pooledParticles: 100 +--- !u!114 &8225853497016287227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: start 2 + m_EditorClassIdentifier: + particleIndices: 01000000 + m_Blueprint: {fileID: 11400000} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Straight long rope.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Straight long rope.asset.meta new file mode 100644 index 000000000..aff3b1fb9 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Straight long rope.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d82adbfa2e0744621823a657cc1d4d9a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Straight short rope.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Straight short rope.asset new file mode 100644 index 000000000..f2b79041b --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Straight short rope.asset @@ -0,0 +1,1595 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3735696104525882986 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: end + m_EditorClassIdentifier: + particleIndices: 00000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f7e67b5626124d0db9886e6cd2aacff, type: 3} + m_Name: Straight short rope + m_EditorClassIdentifier: + m_Empty: 0 + m_ActiveParticleCount: 12 + m_InitialActiveParticleCount: 12 + _bounds: + m_Center: {x: -0.014654756, y: -0.003113268, z: -0.000000035141756} + m_Extent: {x: 1.008603, y: 0.003113268, z: 0.000000035141756} + positions: + - {x: -1.0232577, y: -0.004003763, z: -0.000000040919517} + - {x: -0.8402848, y: -0.0058813426, z: -0.000000065107734} + - {x: -0.6568456, y: -0.0062265354, z: -0.00000007028351} + - {x: -0.47382993, y: -0.00605443, z: -0.00000006903121} + - {x: -0.28994402, y: -0.0055968887, z: -0.00000006423151} + - {x: -0.10648872, y: -0.0049578818, z: -0.000000057165757} + - {x: 0.07712405, y: -0.0041927667, z: -0.000000048520462} + - {x: 0.2608242, y: -0.0033398687, z: -0.000000038766125} + - {x: 0.44427413, y: -0.0024321422, z: -0.000000028302512} + - {x: 0.62759423, y: -0.0015031539, z: -0.000000017532427} + - {x: 0.81105286, y: -0.00060960755, z: -0.0000000071262485} + - {x: 0.9939482, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + restPositions: + - {x: -1.0232577, y: -0.004003763, z: -0.000000040919517, w: 1} + - {x: -0.8402848, y: -0.0058813426, z: -0.000000065107734, w: 1} + - {x: -0.6568456, y: -0.0062265354, z: -0.00000007028351, w: 1} + - {x: -0.47382993, y: -0.00605443, z: -0.00000006903121, w: 1} + - {x: -0.28994402, y: -0.0055968887, z: -0.00000006423151, w: 1} + - {x: -0.10648872, y: -0.0049578818, z: -0.000000057165757, w: 1} + - {x: 0.07712405, y: -0.0041927667, z: -0.000000048520462, w: 1} + - {x: 0.2608242, y: -0.0033398687, z: -0.000000038766125, w: 1} + - {x: 0.44427413, y: -0.0024321422, z: -0.000000028302512, w: 1} + - {x: 0.62759423, y: -0.0015031539, z: -0.000000017532427, w: 1} + - {x: 0.81105286, y: -0.00060960755, z: -0.0000000071262485, w: 1} + - {x: 0.9939482, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + orientations: [] + restOrientations: [] + velocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + angularVelocities: [] + invMasses: + - 10 + - 10 + - 10 + - 10 + - 10.000001 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + invRotationalMasses: [] + filters: 0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + principalRadii: + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + colors: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + points: + edges: 000000000100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000a0000000a0000000b000000 + triangles: + distanceConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f0000003000000031000000320000003300000034000000350000003600000037000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f0000003000000031000000320000003300000034000000350000003600000037000000 + m_ConstraintCount: 56 + m_ActiveConstraintCount: 6 + m_InitialActiveConstraintCount: 6 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.18298253 + - 0.18301578 + - 0.18345642 + - 0.18370213 + - 0.18332246 + - 0.18289638 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000310000003200000033000000340000003500000036000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000310000003200000033000000340000003500000036000000 + m_ConstraintCount: 55 + m_ActiveConstraintCount: 5 + m_InitialActiveConstraintCount: 5 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.18343952 + - 0.18388647 + - 0.18361436 + - 0.18345217 + - 0.1834608 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + bendConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000 + m_ConstraintCount: 37 + m_ActiveConstraintCount: 4 + m_InitialActiveConstraintCount: 4 + particleIndices: + serializedContents: 000000000200000001000000030000000500000004000000060000000800000007000000090000000b0000000a0000000c0000000e0000000d0000000f0000001100000010000000120000001400000013000000150000001700000016000000180000001a000000190000001b0000001d0000001c0000001e000000200000001f0000002100000023000000220000002400000026000000250000002700000029000000280000002a0000002c0000002b0000002d0000002f0000002e000000300000003200000031000000330000003500000034000000360000003800000037000000390000003b0000003a0000003c0000003e0000003d0000003f0000004100000040000000420000004400000043000000450000004700000046000000480000004a000000490000004b0000004d0000004c0000004e000000500000004f0000005100000053000000520000005400000056000000550000005700000059000000580000005a0000005c0000005b0000005d0000005f0000005e000000600000006200000061000000630000006500000064000000660000006800000067000000690000006b0000006a0000006c0000006e0000006d000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.000533925 + - 0.00015575346 + - 0.00008539532 + - 0.00021026109 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000 + m_ConstraintCount: 37 + m_ActiveConstraintCount: 3 + m_InitialActiveConstraintCount: 3 + particleIndices: + serializedContents: 0100000003000000020000000400000006000000050000000700000009000000080000000a0000000c0000000b0000000d0000000f0000000e000000100000001200000011000000130000001500000014000000160000001800000017000000190000001b0000001a0000001c0000001e0000001d0000001f0000002100000020000000220000002400000023000000250000002700000026000000280000002a000000290000002b0000002d0000002c0000002e000000300000002f0000003100000033000000320000003400000036000000350000003700000039000000380000003a0000003c0000003b0000003d0000003f0000003e000000400000004200000041000000430000004500000044000000460000004800000047000000490000004b0000004a0000004c0000004e0000004d0000004f0000005100000050000000520000005400000053000000550000005700000056000000580000005a000000590000005b0000005d0000005c0000005e000000600000005f0000006100000063000000620000006400000066000000650000006700000069000000680000006a0000006c0000006b0000006d0000006f0000006e000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.000222833 + - 0.000067247085 + - 0.000043820077 + - 0.3922813 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000 + m_ConstraintCount: 36 + m_ActiveConstraintCount: 3 + m_InitialActiveConstraintCount: 3 + particleIndices: + serializedContents: 020000000400000003000000050000000700000006000000080000000a000000090000000b0000000d0000000c0000000e000000100000000f0000001100000013000000120000001400000016000000150000001700000019000000180000001a0000001c0000001b0000001d0000001f0000001e000000200000002200000021000000230000002500000024000000260000002800000027000000290000002b0000002a0000002c0000002e0000002d0000002f0000003100000030000000320000003400000033000000350000003700000036000000380000003a000000390000003b0000003d0000003c0000003e000000400000003f0000004100000043000000420000004400000046000000450000004700000049000000480000004a0000004c0000004b0000004d0000004f0000004e000000500000005200000051000000530000005500000054000000560000005800000057000000590000005b0000005a0000005c0000005e0000005d0000005f0000006100000060000000620000006400000063000000650000006700000066000000680000006a000000690000006b0000006d0000006c000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.00030530005 + - 0.0000412846 + - 0.000047680373 + - 0.33131608 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + skinConstraintsData: + batches: [] + tetherConstraintsData: + batches: [] + stretchShearConstraintsData: + batches: [] + bendTwistConstraintsData: + batches: [] + shapeMatchingConstraintsData: + batches: [] + aerodynamicConstraintsData: + batches: [] + chainConstraintsData: + batches: [] + volumeConstraintsData: + batches: [] + groups: + - {fileID: -3735696104525882986} + - {fileID: 8673311686603544650} + path: + m_Names: + - end + - start + m_Points: + data: + - tangentMode: 0 + inTangent: {x: -0.24993046, y: 0.005883569, z: 0.00000007420739} + position: {x: -1.0232577, y: -0.004003763, z: -0.000000040919517} + outTangent: {x: 0.28647715, y: -0.006743908, z: -0.000000085058545} + - tangentMode: 0 + inTangent: {x: -0.25, y: 0, z: 0} + position: {x: 0.9939482, y: 0, z: 0} + outTangent: {x: 0.25, y: 0, z: 0} + m_Normals: + data: + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + m_Colors: + data: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + m_Thickness: + data: + - 1 + - 1 + m_Masses: + data: + - 0.1 + - 0.1 + m_RotationalMasses: + data: + - 1 + - 1 + m_Filters: + data: 0100ffff0100ffff + m_Closed: 0 + m_ArcLengthTable: + - 0 + - 0.048795197 + - 0.11226323 + - 0.18883544 + - 0.27694184 + - 0.37501186 + - 0.48147476 + - 0.5947595 + - 0.7132952 + - 0.83551073 + - 0.959835 + - 1.084697 + - 1.2085254 + - 1.3297491 + - 1.446797 + - 1.558098 + - 1.6620806 + - 1.757174 + - 1.841807 + - 1.9144083 + - 1.9734069 + - 2.0172317 + m_TotalSplineLenght: 2.0172317 + OnPathChanged: + m_PersistentCalls: + m_Calls: [] + OnControlPointAdded: + m_PersistentCalls: + m_Calls: [] + OnControlPointRemoved: + m_PersistentCalls: + m_Calls: [] + OnControlPointRenamed: + m_PersistentCalls: + m_Calls: [] + thickness: 0.1 + resolution: 0.5 + m_InterParticleDistance: 0.1833847 + totalParticles: 112 + m_RestLength: 20.355694 + restLengths: + - 0.18298253 + - 0.18343952 + - 0.18301578 + - 0.18388647 + - 0.18345642 + - 0.18361436 + - 0.18370213 + - 0.18345217 + - 0.18332246 + - 0.1834608 + - 0.18289638 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0.1833847 + - 0 + pooledParticles: 100 +--- !u!114 &8673311686603544650 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: start + m_EditorClassIdentifier: + particleIndices: 0b000000 + m_Blueprint: {fileID: 11400000} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Straight short rope.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Straight short rope.asset.meta new file mode 100644 index 000000000..53037ee2c --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Straight short rope.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ca9e262f11fb246cbb6d2177bacb27ea +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Tearable cable.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Tearable cable.asset new file mode 100644 index 000000000..7ffeafc6f --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Tearable cable.asset @@ -0,0 +1,1687 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2436371210810594525 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: start + m_EditorClassIdentifier: + particleIndices: 00000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f7e67b5626124d0db9886e6cd2aacff, type: 3} + m_Name: Tearable cable + m_EditorClassIdentifier: + m_Empty: 0 + m_ActiveParticleCount: 12 + m_InitialActiveParticleCount: 12 + _bounds: + m_Center: {x: 0.000000059604645, y: 0, z: 0} + m_Extent: {x: 0.99999994, y: 0, z: 0} + positions: + - {x: -0.9999999, y: 0, z: 0} + - {x: -0.8180145, y: 0, z: 0} + - {x: -0.63601965, y: 0, z: 0} + - {x: -0.45342994, y: 0, z: 0} + - {x: -0.27104864, y: 0, z: 0} + - {x: -0.08854285, y: 0, z: 0} + - {x: 0.09398375, y: 0, z: 0} + - {x: 0.27651137, y: 0, z: 0} + - {x: 0.45895523, y: 0, z: 0} + - {x: 0.6413379, y: 0, z: 0} + - {x: 0.8234298, y: 0, z: 0} + - {x: 1, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + restPositions: + - {x: -0.9999999, y: 0, z: 0, w: 1} + - {x: -0.8180145, y: 0, z: 0, w: 1} + - {x: -0.63601965, y: 0, z: 0, w: 1} + - {x: -0.45342994, y: 0, z: 0, w: 1} + - {x: -0.27104864, y: 0, z: 0, w: 1} + - {x: -0.08854285, y: 0, z: 0, w: 1} + - {x: 0.09398375, y: 0, z: 0, w: 1} + - {x: 0.27651137, y: 0, z: 0, w: 1} + - {x: 0.45895523, y: 0, z: 0, w: 1} + - {x: 0.6413379, y: 0, z: 0, w: 1} + - {x: 0.8234298, y: 0, z: 0, w: 1} + - {x: 1, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + orientations: [] + restOrientations: [] + velocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + angularVelocities: [] + invMasses: + - 10 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 9.999999 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + invRotationalMasses: [] + filters: 010000000100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + principalRadii: + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + colors: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + points: + edges: 000000000100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000a0000000a0000000b000000 + triangles: + distanceConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f0000003000000031000000320000003300000034000000350000003600000037000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f0000003000000031000000320000003300000034000000350000003600000037000000 + m_ConstraintCount: 56 + m_ActiveConstraintCount: 6 + m_InitialActiveConstraintCount: 6 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.18198538 + - 0.18258971 + - 0.18250579 + - 0.18252763 + - 0.18238264 + - 0.17657018 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000310000003200000033000000340000003500000036000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000310000003200000033000000340000003500000036000000 + m_ConstraintCount: 55 + m_ActiveConstraintCount: 5 + m_InitialActiveConstraintCount: 5 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.18199486 + - 0.1823813 + - 0.18252659 + - 0.18244386 + - 0.18209195 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + bendConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000 + m_ConstraintCount: 37 + m_ActiveConstraintCount: 4 + m_InitialActiveConstraintCount: 4 + particleIndices: + serializedContents: 000000000200000001000000030000000500000004000000060000000800000007000000090000000b0000000a0000000c0000000e0000000d0000000f0000001100000010000000120000001400000013000000150000001700000016000000180000001a000000190000001b0000001d0000001c0000001e000000200000001f0000002100000023000000220000002400000026000000250000002700000029000000280000002a0000002c0000002b0000002d0000002f0000002e000000300000003200000031000000330000003500000034000000360000003800000037000000390000003b0000003a0000003c0000003e0000003d0000003f0000004100000040000000420000004400000043000000450000004700000046000000480000004a000000490000004b0000004d0000004c0000004e000000500000004f0000005100000053000000520000005400000056000000550000005700000059000000580000005a0000005c0000005b0000005d0000005f0000005e000000600000006200000061000000630000006500000064000000660000006800000067000000690000006b0000006a0000006c0000006e0000006d000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.0000032186508 + - 0.000041484833 + - 0.000027924776 + - 0.0018405914 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000 + m_ConstraintCount: 37 + m_ActiveConstraintCount: 3 + m_InitialActiveConstraintCount: 3 + particleIndices: + serializedContents: 0100000003000000020000000400000006000000050000000700000009000000080000000a0000000c0000000b0000000d0000000f0000000e000000100000001200000011000000130000001500000014000000160000001800000017000000190000001b0000001a0000001c0000001e0000001d0000001f0000002100000020000000220000002400000023000000250000002700000026000000280000002a000000290000002b0000002d0000002c0000002e000000300000002f0000003100000033000000320000003400000036000000350000003700000039000000380000003a0000003c0000003b0000003d0000003f0000003e000000400000004200000041000000430000004500000044000000460000004800000047000000490000004b0000004a0000004c0000004e0000004d0000004f0000005100000050000000520000005400000053000000550000005700000056000000580000005a000000590000005b0000005d0000005c0000005e000000600000005f0000006100000063000000620000006400000066000000650000006700000069000000680000006a0000006c0000006b0000006d0000006f0000006e000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.00019830465 + - 0.0000069364905 + - 0.00002041459 + - 0.39219004 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000 + m_ConstraintCount: 36 + m_ActiveConstraintCount: 3 + m_InitialActiveConstraintCount: 3 + particleIndices: + serializedContents: 020000000400000003000000050000000700000006000000080000000a000000090000000b0000000d0000000c0000000e000000100000000f0000001100000013000000120000001400000016000000150000001700000019000000180000001a0000001c0000001b0000001d0000001f0000001e000000200000002200000021000000230000002500000024000000260000002800000027000000290000002b0000002a0000002c0000002e0000002d0000002f0000003100000030000000320000003400000033000000350000003700000036000000380000003a000000390000003b0000003d0000003c0000003e000000400000003f0000004100000043000000420000004400000046000000450000004700000049000000480000004a0000004c0000004b0000004d0000004f0000004e000000500000005200000051000000530000005500000054000000560000005800000057000000590000005b0000005a0000005c0000005e0000005d0000005f0000006100000060000000620000006400000063000000650000006700000066000000680000006a000000690000006b0000006d0000006c000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.00006946921 + - 0.0000003427267 + - 0.00009685755 + - 0.33333334 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + skinConstraintsData: + batches: [] + tetherConstraintsData: + batches: [] + stretchShearConstraintsData: + batches: [] + bendTwistConstraintsData: + batches: [] + shapeMatchingConstraintsData: + batches: [] + aerodynamicConstraintsData: + batches: [] + chainConstraintsData: + batches: [] + volumeConstraintsData: + batches: [] + groups: + - {fileID: -2436371210810594525} + - {fileID: 5567824606580605130} + - {fileID: 1812756508894959938} + - {fileID: 1986289758551400005} + path: + m_Names: + - start + - start 2 + - end 2 + - end + m_Points: + data: + - tangentMode: 0 + inTangent: {x: -0.25, y: -0, z: -0} + position: {x: -0.9999999, y: 0, z: 0} + outTangent: {x: 0.03894329, y: 0, z: 0} + - tangentMode: 0 + inTangent: {x: -0.118860364, y: 0, z: 0} + position: {x: -0.8180145, y: 0, z: 0} + outTangent: {x: 0.40584582, y: 0, z: 0} + - tangentMode: 0 + inTangent: {x: -0.3901504, y: 0, z: 0} + position: {x: 0.8234298, y: 0, z: 0} + outTangent: {x: 0.079566, y: 0, z: 0} + - tangentMode: 0 + inTangent: {x: -0.035751224, y: 0, z: 0} + position: {x: 1, y: 0, z: 0} + outTangent: {x: 0.25, y: -0, z: -0} + m_Normals: + data: + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + m_Colors: + data: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + m_Thickness: + data: + - 1 + - 1 + - 1 + - 1 + m_Masses: + data: + - 0.1 + - 0.10000001 + - 0.1 + - 0.1 + m_RotationalMasses: + data: + - 1 + - 1 + - 1 + - 1 + m_Filters: + data: 010000000100ffff0100ffff01000000 + m_Closed: 0 + m_ArcLengthTable: + - 0 + - 0.0054747257 + - 0.010819517 + - 0.01610528 + - 0.021402916 + - 0.02678333 + - 0.03231743 + - 0.03807611 + - 0.04413028 + - 0.050550845 + - 0.05740871 + - 0.06477478 + - 0.072719954 + - 0.08131513 + - 0.090631224 + - 0.10073914 + - 0.111709766 + - 0.12361402 + - 0.1365228 + - 0.15050702 + - 0.16563757 + - 0.18198536 + - 0.2428572 + - 0.30913025 + - 0.3802247 + - 0.45556077 + - 0.53455865 + - 0.61663866 + - 0.70122087 + - 0.78772557 + - 0.875573 + - 0.9641833 + - 1.0529767 + - 1.1413735 + - 1.2287939 + - 1.3146579 + - 1.398386 + - 1.4793983 + - 1.5571148 + - 1.630956 + - 1.7003422 + - 1.7646933 + - 1.8234297 + - 1.8346709 + - 1.8456583 + - 1.8563873 + - 1.866853 + - 1.877051 + - 1.8869766 + - 1.896625 + - 1.9059918 + - 1.9150721 + - 1.9238613 + - 1.9323548 + - 1.940548 + - 1.948436 + - 1.9560144 + - 1.9632784 + - 1.9702234 + - 1.9768447 + - 1.9831376 + - 1.9890976 + - 1.9947199 + - 1.9999999 + m_TotalSplineLenght: 1.9999999 + OnPathChanged: + m_PersistentCalls: + m_Calls: [] + OnControlPointAdded: + m_PersistentCalls: + m_Calls: [] + OnControlPointRemoved: + m_PersistentCalls: + m_Calls: [] + OnControlPointRenamed: + m_PersistentCalls: + m_Calls: [] + thickness: 0.1 + resolution: 0.5 + m_InterParticleDistance: 0.18181817 + totalParticles: 112 + m_RestLength: 20.181805 + restLengths: + - 0.18198538 + - 0.18199486 + - 0.18258971 + - 0.1823813 + - 0.18250579 + - 0.18252659 + - 0.18252763 + - 0.18244386 + - 0.18238264 + - 0.18209195 + - 0.17657018 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0.18181817 + - 0 + pooledParticles: 100 +--- !u!114 &1812756508894959938 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: end 2 + m_EditorClassIdentifier: + particleIndices: 0a000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &1986289758551400005 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: end + m_EditorClassIdentifier: + particleIndices: 0b000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &5567824606580605130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: start 2 + m_EditorClassIdentifier: + particleIndices: 01000000 + m_Blueprint: {fileID: 11400000} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Tearable cable.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Tearable cable.asset.meta new file mode 100644 index 000000000..2d03e771d --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Tearable cable.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61d053dd5abd943919947f833abd0569 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Very long cable.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Very long cable.asset new file mode 100644 index 000000000..0fbf4dfda --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Very long cable.asset @@ -0,0 +1,1715 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-8864857226987616246 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: end + m_EditorClassIdentifier: + particleIndices: 15000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &-2639811391673711616 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: start + m_EditorClassIdentifier: + particleIndices: 00000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f7e67b5626124d0db9886e6cd2aacff, type: 3} + m_Name: Very long cable + m_EditorClassIdentifier: + m_Empty: 0 + m_ActiveParticleCount: 22 + m_InitialActiveParticleCount: 22 + _bounds: + m_Center: {x: 0.046942472, y: 0, z: 0} + m_Extent: {x: 2.0074086, y: 0, z: 0} + positions: + - {x: -1.9604661, y: 0, z: 0} + - {x: -1.7694254, y: 0, z: 0} + - {x: -1.5806047, y: 0, z: 0} + - {x: -1.389295, y: 0, z: 0} + - {x: -1.1973914, y: 0, z: 0} + - {x: -1.0051314, y: 0, z: 0} + - {x: -0.8140888, y: 0, z: 0} + - {x: -0.6233758, y: 0, z: 0} + - {x: -0.43183205, y: 0, z: 0} + - {x: -0.24002089, y: 0, z: 0} + - {x: -0.048776563, y: 0, z: 0} + - {x: 0.14270699, y: 0, z: 0} + - {x: 0.3342617, y: 0, z: 0} + - {x: 0.5250986, y: 0, z: 0} + - {x: 0.7168502, y: 0, z: 0} + - {x: 0.9088934, y: 0, z: 0} + - {x: 1.100491, y: 0, z: 0} + - {x: 1.2916275, y: 0, z: 0} + - {x: 1.4827894, y: 0, z: 0} + - {x: 1.6748782, y: 0, z: 0} + - {x: 1.86714, y: 0, z: 0} + - {x: 2.0543509, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + restPositions: + - {x: -1.9604661, y: 0, z: 0, w: 1} + - {x: -1.7694254, y: 0, z: 0, w: 1} + - {x: -1.5806047, y: 0, z: 0, w: 1} + - {x: -1.389295, y: 0, z: 0, w: 1} + - {x: -1.1973914, y: 0, z: 0, w: 1} + - {x: -1.0051314, y: 0, z: 0, w: 1} + - {x: -0.8140888, y: 0, z: 0, w: 1} + - {x: -0.6233758, y: 0, z: 0, w: 1} + - {x: -0.43183205, y: 0, z: 0, w: 1} + - {x: -0.24002089, y: 0, z: 0, w: 1} + - {x: -0.048776563, y: 0, z: 0, w: 1} + - {x: 0.14270699, y: 0, z: 0, w: 1} + - {x: 0.3342617, y: 0, z: 0, w: 1} + - {x: 0.5250986, y: 0, z: 0, w: 1} + - {x: 0.7168502, y: 0, z: 0, w: 1} + - {x: 0.9088934, y: 0, z: 0, w: 1} + - {x: 1.100491, y: 0, z: 0, w: 1} + - {x: 1.2916275, y: 0, z: 0, w: 1} + - {x: 1.4827894, y: 0, z: 0, w: 1} + - {x: 1.6748782, y: 0, z: 0, w: 1} + - {x: 1.86714, y: 0, z: 0, w: 1} + - {x: 2.0543509, y: 0, z: 0, w: 1} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + orientations: [] + restOrientations: [] + velocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + angularVelocities: [] + invMasses: + - 10 + - 10.000001 + - 9.999999 + - 10.000001 + - 9.999999 + - 10.000001 + - 10 + - 10 + - 10 + - 10 + - 9.999999 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + invRotationalMasses: [] + filters: 0100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + principalRadii: + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.10000002, y: 0.10000002, z: 0.10000002} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.099999994, y: 0.099999994, z: 0.099999994} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.10000002, y: 0.10000002, z: 0.10000002} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0.1, y: 0.1, z: 0.1} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + colors: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + - {r: 0, g: 0, b: 0, a: 0} + points: + edges: 000000000100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000a0000000a0000000b0000000b0000000c0000000c0000000d0000000d0000000e0000000e0000000f0000000f0000001000000010000000110000001100000012000000120000001300000013000000140000001400000015000000 + triangles: + distanceConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c000000 + m_ConstraintCount: 61 + m_ActiveConstraintCount: 11 + m_InitialActiveConstraintCount: 11 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.19104075 + - 0.19130969 + - 0.19226003 + - 0.19071305 + - 0.19181116 + - 0.19148356 + - 0.19083694 + - 0.19204319 + - 0.19113648 + - 0.19208884 + - 0.1872108 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b000000 + m_ConstraintCount: 60 + m_ActiveConstraintCount: 10 + m_InitialActiveConstraintCount: 10 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.18882072 + - 0.19190359 + - 0.19104254 + - 0.19154373 + - 0.19124432 + - 0.1915547 + - 0.1917516 + - 0.19159764 + - 0.19116187 + - 0.19226182 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + bendConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000250000002600000027000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000250000002600000027000000 + m_ConstraintCount: 40 + m_ActiveConstraintCount: 7 + m_InitialActiveConstraintCount: 7 + particleIndices: + serializedContents: 000000000200000001000000030000000500000004000000060000000800000007000000090000000b0000000a0000000c0000000e0000000d0000000f0000001100000010000000120000001400000013000000150000001700000016000000180000001a000000190000001b0000001d0000001c0000001e000000200000001f0000002100000023000000220000002400000026000000250000002700000029000000280000002a0000002c0000002b0000002d0000002f0000002e000000300000003200000031000000330000003500000034000000360000003800000037000000390000003b0000003a0000003c0000003e0000003d0000003f0000004100000040000000420000004400000043000000450000004700000046000000480000004a000000490000004b0000004d0000004c0000004e000000500000004f0000005100000053000000520000005400000056000000550000005700000059000000580000005a0000005c0000005b0000005d0000005f0000005e000000600000006200000061000000630000006500000064000000660000006800000067000000690000006b0000006a0000006c0000006e0000006d0000006f0000007100000070000000720000007400000073000000750000007700000076000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.00074005127 + - 0.00011873245 + - 0.00027686357 + - 0.000079743564 + - 0.00030487776 + - 0.00015366077 + - 0.000057578087 + - 0.68478364 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000250000002600000027000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000250000002600000027000000 + m_ConstraintCount: 40 + m_ActiveConstraintCount: 7 + m_InitialActiveConstraintCount: 7 + particleIndices: + serializedContents: 0100000003000000020000000400000006000000050000000700000009000000080000000a0000000c0000000b0000000d0000000f0000000e000000100000001200000011000000130000001500000014000000160000001800000017000000190000001b0000001a0000001c0000001e0000001d0000001f0000002100000020000000220000002400000023000000250000002700000026000000280000002a000000290000002b0000002d0000002c0000002e000000300000002f0000003100000033000000320000003400000036000000350000003700000039000000380000003a0000003c0000003b0000003d0000003f0000003e000000400000004200000041000000430000004500000044000000460000004800000047000000490000004b0000004a0000004c0000004e0000004d0000004f0000005100000050000000520000005400000053000000550000005700000056000000580000005a000000590000005b0000005d0000005c0000005e000000600000005f0000006100000063000000620000006400000066000000650000006700000069000000680000006a0000006c0000006b0000006d0000006f0000006e000000700000007200000071000000730000007500000074000000760000007800000077000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.00082969666 + - 0.00040578842 + - 0.000089138746 + - 0.000023707747 + - 0.00009715557 + - 0.00000846386 + - 0.0016838312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000250000002600000027000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000250000002600000027000000 + m_ConstraintCount: 40 + m_ActiveConstraintCount: 6 + m_InitialActiveConstraintCount: 6 + particleIndices: + serializedContents: 020000000400000003000000050000000700000006000000080000000a000000090000000b0000000d0000000c0000000e000000100000000f0000001100000013000000120000001400000016000000150000001700000019000000180000001a0000001c0000001b0000001d0000001f0000001e000000200000002200000021000000230000002500000024000000260000002800000027000000290000002b0000002a0000002c0000002e0000002d0000002f0000003100000030000000320000003400000033000000350000003700000036000000380000003a000000390000003b0000003d0000003c0000003e000000400000003f0000004100000043000000420000004400000046000000450000004700000049000000480000004a0000004c0000004b0000004d0000004f0000004e000000500000005200000051000000530000005500000054000000560000005800000057000000590000005b0000005a0000005c0000005e0000005d0000005f0000006100000060000000620000006400000063000000650000006700000066000000680000006a000000690000006b0000006d0000006c0000006e000000700000006f000000710000007300000072000000740000007600000075000000770000007900000078000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.00019788742 + - 0.00010985136 + - 0.00018894672 + - 0.00023925304 + - 0.00014853477 + - 0.00030899048 + - 0.74718726 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + skinConstraintsData: + batches: [] + tetherConstraintsData: + batches: [] + stretchShearConstraintsData: + batches: [] + bendTwistConstraintsData: + batches: [] + shapeMatchingConstraintsData: + batches: [] + aerodynamicConstraintsData: + batches: [] + chainConstraintsData: + batches: [] + volumeConstraintsData: + batches: [] + groups: + - {fileID: -2639811391673711616} + - {fileID: -8864857226987616246} + path: + m_Names: + - start + - end + m_Points: + data: + - tangentMode: 0 + inTangent: {x: -0.25, y: -0, z: -0} + position: {x: -1.9604661, y: 0, z: 0} + outTangent: {x: 0.4065534, y: 0, z: 0} + - tangentMode: 0 + inTangent: {x: -0.21354723, y: 0, z: 0} + position: {x: 2.0543509, y: 0, z: 0} + outTangent: {x: 0.25, y: 0, z: 0} + m_Normals: + data: + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + m_Colors: + data: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + m_Thickness: + data: + - 1 + - 1 + m_Masses: + data: + - 0.1 + - 0.1 + m_RotationalMasses: + data: + - 1 + - 1 + m_Filters: + data: 0100000001000000 + m_Closed: 0 + m_ArcLengthTable: + - 0 + - 0.077740535 + - 0.19213937 + - 0.33919954 + - 0.51492405 + - 0.71531594 + - 0.9363783 + - 1.174114 + - 1.4245261 + - 1.6836177 + - 1.9473919 + - 2.2118516 + - 2.4729998 + - 2.7268395 + - 2.969374 + - 3.196606 + - 3.4045386 + - 3.589175 + - 3.746518 + - 3.8725705 + - 3.963336 + - 4.014817 + m_TotalSplineLenght: 4.014817 + OnPathChanged: + m_PersistentCalls: + m_Calls: [] + OnControlPointAdded: + m_PersistentCalls: + m_Calls: [] + OnControlPointRemoved: + m_PersistentCalls: + m_Calls: [] + OnControlPointRenamed: + m_PersistentCalls: + m_Calls: [] + thickness: 0.1 + resolution: 0.5 + m_InterParticleDistance: 0.19118178 + totalParticles: 122 + m_RestLength: 23.132986 + restLengths: + - 0.19104075 + - 0.18882072 + - 0.19130969 + - 0.19190359 + - 0.19226003 + - 0.19104254 + - 0.19071305 + - 0.19154373 + - 0.19181116 + - 0.19124432 + - 0.19148356 + - 0.1915547 + - 0.19083694 + - 0.1917516 + - 0.19204319 + - 0.19159764 + - 0.19113648 + - 0.19116187 + - 0.19208884 + - 0.19226182 + - 0.1872108 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0.19118178 + - 0 + pooledParticles: 100 diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Very long cable.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Very long cable.asset.meta new file mode 100644 index 000000000..09ed24b61 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/Very long cable.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9d8ad1e0aac8f48deb9f3cda92974152 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/WrappingRope.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/WrappingRope.asset new file mode 100644 index 000000000..f8993f593 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/WrappingRope.asset @@ -0,0 +1,1619 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-5578146735436999353 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: end + m_EditorClassIdentifier: + particleIndices: 00000000 + m_Blueprint: {fileID: 11400000} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f7e67b5626124d0db9886e6cd2aacff, type: 3} + m_Name: WrappingRope + m_EditorClassIdentifier: + m_Empty: 0 + m_ActiveParticleCount: 114 + m_InitialActiveParticleCount: 114 + _bounds: + m_Center: {x: -38.609577, y: 0.000013784724, z: 0} + m_Extent: {x: 39.48019, y: 0.000013784724, z: 0} + positions: + - {x: -78.089775, y: 0.000027569455, z: 0} + - {x: -77.431816, y: 0.000027351341, z: 0} + - {x: -76.8044, y: 0.000027135986, z: 0} + - {x: -75.99894, y: 0.000026857775, z: 0} + - {x: -75.381744, y: 0.000026643915, z: 0} + - {x: -74.69269, y: 0.000026404723, z: 0} + - {x: -73.934326, y: 0.000026141102, z: 0} + - {x: -73.24291, y: 0.000025900501, z: 0} + - {x: -72.58259, y: 0.000025670539, z: 0} + - {x: -71.88634, y: 0.000025427915, z: 0} + - {x: -71.1553, y: 0.000025173027, z: 0} + - {x: -70.412285, y: 0.000024913841, z: 0} + - {x: -69.75649, y: 0.000024684989, z: 0} + - {x: -69.079094, y: 0.000024448522, z: 0} + - {x: -68.38069, y: 0.00002420465, z: 0} + - {x: -67.661964, y: 0.000023953617, z: 0} + - {x: -66.923515, y: 0.00002369563, z: 0} + - {x: -66.23769, y: 0.000023455976, z: 0} + - {x: -65.56361, y: 0.00002322038, z: 0} + - {x: -64.87589, y: 0.00002297998, z: 0} + - {x: -64.174934, y: 0.00002273491, z: 0} + - {x: -63.461163, y: 0.000022485325, z: 0} + - {x: -62.735016, y: 0.000022231377, z: 0} + - {x: -62.032444, y: 0.000021985643, z: 0} + - {x: -61.35486, y: 0.000021748621, z: 0} + - {x: -60.668114, y: 0.000021508373, z: 0} + - {x: -59.972515, y: 0.000021265001, z: 0} + - {x: -59.26836, y: 0.000021018614, z: 0} + - {x: -58.555984, y: 0.000020769328, z: 0} + - {x: -57.835686, y: 0.00002051725, z: 0} + - {x: -57.139145, y: 0.000020273468, z: 0} + - {x: -56.454964, y: 0.000020033996, z: 0} + - {x: -55.764698, y: 0.000019792378, z: 0} + - {x: -55.068577, y: 0.0000195487, z: 0} + - {x: -54.366875, y: 0.00001930305, z: 0} + - {x: -53.65984, y: 0.000019055522, z: 0} + - {x: -52.947712, y: 0.000018806199, z: 0} + - {x: -52.238735, y: 0.000018557967, z: 0} + - {x: -51.551094, y: 0.000018317194, z: 0} + - {x: -50.859505, y: 0.000018075032, z: 0} + - {x: -50.164185, y: 0.000017831553, z: 0} + - {x: -49.465347, y: 0.000017586835, z: 0} + - {x: -48.76323, y: 0.00001734096, z: 0} + - {x: -48.05801, y: 0.000017093993, z: 0} + - {x: -47.349953, y: 0.000016846025, z: 0} + - {x: -46.64871, y: 0.000016600436, z: 0} + - {x: -45.955105, y: 0.000016357519, z: 0} + - {x: -45.259407, y: 0.000016113861, z: 0} + - {x: -44.56181, y: 0.000015869537, z: 0} + - {x: -43.86252, y: 0.000015624613, z: 0} + - {x: -43.16173, y: 0.000015379164, z: 0} + - {x: -42.45965, y: 0.000015133258, z: 0} + - {x: -41.756474, y: 0.000014886965, z: 0} + - {x: -41.055702, y: 0.000014641514, z: 0} + - {x: -40.357296, y: 0.000014396888, z: 0} + - {x: -39.6584, y: 0.000014152091, z: 0} + - {x: -38.959225, y: 0.000013907194, z: 0} + - {x: -38.259937, y: 0.00001366226, z: 0} + - {x: -37.560753, y: 0.00001341736, z: 0} + - {x: -36.861866, y: 0.000013172566, z: 0} + - {x: -36.163467, y: 0.000012927943, z: 0} + - {x: -35.462696, y: 0.000012682492, z: 0} + - {x: -34.759518, y: 0.0000124361995, z: 0} + - {x: -34.057438, y: 0.000012190293, z: 0} + - {x: -33.356644, y: 0.0000119448405, z: 0} + - {x: -32.657352, y: 0.000011699918, z: 0} + - {x: -31.959757, y: 0.000011455593, z: 0} + - {x: -31.264057, y: 0.000011211937, z: 0} + - {x: -30.570454, y: 0.000010969019, z: 0} + - {x: -29.869211, y: 0.000010723432, z: 0} + - {x: -29.16115, y: 0.000010475462, z: 0} + - {x: -28.455942, y: 0.000010228498, z: 0} + - {x: -27.753813, y: 0.000009982619, z: 0} + - {x: -27.05498, y: 0.000009737902, z: 0} + - {x: -26.35966, y: 0.0000094944235, z: 0} + - {x: -25.668076, y: 0.000009252262, z: 0} + - {x: -24.980436, y: 0.000009011492, z: 0} + - {x: -24.27145, y: 0.000008763256, z: 0} + - {x: -23.559328, y: 0.000008513935, z: 0} + - {x: -22.852287, y: 0.000008266405, z: 0} + - {x: -22.15059, y: 0.000008020758, z: 0} + - {x: -21.454475, y: 0.000007777079, z: 0} + - {x: -20.764206, y: 0.000007535461, z: 0} + - {x: -20.080023, y: 0.000007295988, z: 0} + - {x: -19.383484, y: 0.000007052207, z: 0} + - {x: -18.663177, y: 0.000006800126, z: 0} + - {x: -17.950798, y: 0.0000065508398, z: 0} + - {x: -17.246653, y: 0.000006304456, z: 0} + - {x: -16.551054, y: 0.000006061084, z: 0} + - {x: -15.864304, y: 0.0000058208325, z: 0} + - {x: -15.186728, y: 0.000005583814, z: 0} + - {x: -14.484152, y: 0.000005338079, z: 0} + - {x: -13.757996, y: 0.000005084128, z: 0} + - {x: -13.044234, y: 0.000004834546, z: 0} + - {x: -12.343276, y: 0.0000045894776, z: 0} + - {x: -11.655552, y: 0.000004349074, z: 0} + - {x: -10.981471, y: 0.0000041134795, z: 0} + - {x: -10.295646, y: 0.0000038738253, z: 0} + - {x: -9.557204, y: 0.0000036158406, z: 0} + - {x: -8.8384695, y: 0.0000033648028, z: 0} + - {x: -8.14008, y: 0.0000031209368, z: 0} + - {x: -7.4626703, y: 0.0000028844659, z: 0} + - {x: -6.8068767, y: 0.0000026556152, z: 0} + - {x: -6.063863, y: 0.000002396428, z: 0} + - {x: -5.33283, y: 0.0000021415422, z: 0} + - {x: -4.636578, y: 0.0000018989167, z: 0} + - {x: -3.9762478, y: 0.0000016689538, z: 0} + - {x: -3.284843, y: 0.0000014283543, z: 0} + - {x: -2.5264845, y: 0.0000011647342, z: 0} + - {x: -1.8374211, y: 0.0000009255407, z: 0} + - {x: -1.2202159, y: 0.00000071167756, z: 0} + - {x: -0.41476506, y: 0.00000043346907, z: 0} + - {x: 0.21265507, y: 0.00000021811312, z: 0} + - {x: 0.87061304, y: -1.838695e-15, z: 0} + restPositions: + - {x: -78.089775, y: 0.000027569455, z: 0, w: 1} + - {x: -77.431816, y: 0.000027351341, z: 0, w: 1} + - {x: -76.8044, y: 0.000027135986, z: 0, w: 1} + - {x: -75.99894, y: 0.000026857775, z: 0, w: 1} + - {x: -75.381744, y: 0.000026643915, z: 0, w: 1} + - {x: -74.69269, y: 0.000026404723, z: 0, w: 1} + - {x: -73.934326, y: 0.000026141102, z: 0, w: 1} + - {x: -73.24291, y: 0.000025900501, z: 0, w: 1} + - {x: -72.58259, y: 0.000025670539, z: 0, w: 1} + - {x: -71.88634, y: 0.000025427915, z: 0, w: 1} + - {x: -71.1553, y: 0.000025173027, z: 0, w: 1} + - {x: -70.412285, y: 0.000024913841, z: 0, w: 1} + - {x: -69.75649, y: 0.000024684989, z: 0, w: 1} + - {x: -69.079094, y: 0.000024448522, z: 0, w: 1} + - {x: -68.38069, y: 0.00002420465, z: 0, w: 1} + - {x: -67.661964, y: 0.000023953617, z: 0, w: 1} + - {x: -66.923515, y: 0.00002369563, z: 0, w: 1} + - {x: -66.23769, y: 0.000023455976, z: 0, w: 1} + - {x: -65.56361, y: 0.00002322038, z: 0, w: 1} + - {x: -64.87589, y: 0.00002297998, z: 0, w: 1} + - {x: -64.174934, y: 0.00002273491, z: 0, w: 1} + - {x: -63.461163, y: 0.000022485325, z: 0, w: 1} + - {x: -62.735016, y: 0.000022231377, z: 0, w: 1} + - {x: -62.032444, y: 0.000021985643, z: 0, w: 1} + - {x: -61.35486, y: 0.000021748621, z: 0, w: 1} + - {x: -60.668114, y: 0.000021508373, z: 0, w: 1} + - {x: -59.972515, y: 0.000021265001, z: 0, w: 1} + - {x: -59.26836, y: 0.000021018614, z: 0, w: 1} + - {x: -58.555984, y: 0.000020769328, z: 0, w: 1} + - {x: -57.835686, y: 0.00002051725, z: 0, w: 1} + - {x: -57.139145, y: 0.000020273468, z: 0, w: 1} + - {x: -56.454964, y: 0.000020033996, z: 0, w: 1} + - {x: -55.764698, y: 0.000019792378, z: 0, w: 1} + - {x: -55.068577, y: 0.0000195487, z: 0, w: 1} + - {x: -54.366875, y: 0.00001930305, z: 0, w: 1} + - {x: -53.65984, y: 0.000019055522, z: 0, w: 1} + - {x: -52.947712, y: 0.000018806199, z: 0, w: 1} + - {x: -52.238735, y: 0.000018557967, z: 0, w: 1} + - {x: -51.551094, y: 0.000018317194, z: 0, w: 1} + - {x: -50.859505, y: 0.000018075032, z: 0, w: 1} + - {x: -50.164185, y: 0.000017831553, z: 0, w: 1} + - {x: -49.465347, y: 0.000017586835, z: 0, w: 1} + - {x: -48.76323, y: 0.00001734096, z: 0, w: 1} + - {x: -48.05801, y: 0.000017093993, z: 0, w: 1} + - {x: -47.349953, y: 0.000016846025, z: 0, w: 1} + - {x: -46.64871, y: 0.000016600436, z: 0, w: 1} + - {x: -45.955105, y: 0.000016357519, z: 0, w: 1} + - {x: -45.259407, y: 0.000016113861, z: 0, w: 1} + - {x: -44.56181, y: 0.000015869537, z: 0, w: 1} + - {x: -43.86252, y: 0.000015624613, z: 0, w: 1} + - {x: -43.16173, y: 0.000015379164, z: 0, w: 1} + - {x: -42.45965, y: 0.000015133258, z: 0, w: 1} + - {x: -41.756474, y: 0.000014886965, z: 0, w: 1} + - {x: -41.055702, y: 0.000014641514, z: 0, w: 1} + - {x: -40.357296, y: 0.000014396888, z: 0, w: 1} + - {x: -39.6584, y: 0.000014152091, z: 0, w: 1} + - {x: -38.959225, y: 0.000013907194, z: 0, w: 1} + - {x: -38.259937, y: 0.00001366226, z: 0, w: 1} + - {x: -37.560753, y: 0.00001341736, z: 0, w: 1} + - {x: -36.861866, y: 0.000013172566, z: 0, w: 1} + - {x: -36.163467, y: 0.000012927943, z: 0, w: 1} + - {x: -35.462696, y: 0.000012682492, z: 0, w: 1} + - {x: -34.759518, y: 0.0000124361995, z: 0, w: 1} + - {x: -34.057438, y: 0.000012190293, z: 0, w: 1} + - {x: -33.356644, y: 0.0000119448405, z: 0, w: 1} + - {x: -32.657352, y: 0.000011699918, z: 0, w: 1} + - {x: -31.959757, y: 0.000011455593, z: 0, w: 1} + - {x: -31.264057, y: 0.000011211937, z: 0, w: 1} + - {x: -30.570454, y: 0.000010969019, z: 0, w: 1} + - {x: -29.869211, y: 0.000010723432, z: 0, w: 1} + - {x: -29.16115, y: 0.000010475462, z: 0, w: 1} + - {x: -28.455942, y: 0.000010228498, z: 0, w: 1} + - {x: -27.753813, y: 0.000009982619, z: 0, w: 1} + - {x: -27.05498, y: 0.000009737902, z: 0, w: 1} + - {x: -26.35966, y: 0.0000094944235, z: 0, w: 1} + - {x: -25.668076, y: 0.000009252262, z: 0, w: 1} + - {x: -24.980436, y: 0.000009011492, z: 0, w: 1} + - {x: -24.27145, y: 0.000008763256, z: 0, w: 1} + - {x: -23.559328, y: 0.000008513935, z: 0, w: 1} + - {x: -22.852287, y: 0.000008266405, z: 0, w: 1} + - {x: -22.15059, y: 0.000008020758, z: 0, w: 1} + - {x: -21.454475, y: 0.000007777079, z: 0, w: 1} + - {x: -20.764206, y: 0.000007535461, z: 0, w: 1} + - {x: -20.080023, y: 0.000007295988, z: 0, w: 1} + - {x: -19.383484, y: 0.000007052207, z: 0, w: 1} + - {x: -18.663177, y: 0.000006800126, z: 0, w: 1} + - {x: -17.950798, y: 0.0000065508398, z: 0, w: 1} + - {x: -17.246653, y: 0.000006304456, z: 0, w: 1} + - {x: -16.551054, y: 0.000006061084, z: 0, w: 1} + - {x: -15.864304, y: 0.0000058208325, z: 0, w: 1} + - {x: -15.186728, y: 0.000005583814, z: 0, w: 1} + - {x: -14.484152, y: 0.000005338079, z: 0, w: 1} + - {x: -13.757996, y: 0.000005084128, z: 0, w: 1} + - {x: -13.044234, y: 0.000004834546, z: 0, w: 1} + - {x: -12.343276, y: 0.0000045894776, z: 0, w: 1} + - {x: -11.655552, y: 0.000004349074, z: 0, w: 1} + - {x: -10.981471, y: 0.0000041134795, z: 0, w: 1} + - {x: -10.295646, y: 0.0000038738253, z: 0, w: 1} + - {x: -9.557204, y: 0.0000036158406, z: 0, w: 1} + - {x: -8.8384695, y: 0.0000033648028, z: 0, w: 1} + - {x: -8.14008, y: 0.0000031209368, z: 0, w: 1} + - {x: -7.4626703, y: 0.0000028844659, z: 0, w: 1} + - {x: -6.8068767, y: 0.0000026556152, z: 0, w: 1} + - {x: -6.063863, y: 0.000002396428, z: 0, w: 1} + - {x: -5.33283, y: 0.0000021415422, z: 0, w: 1} + - {x: -4.636578, y: 0.0000018989167, z: 0, w: 1} + - {x: -3.9762478, y: 0.0000016689538, z: 0, w: 1} + - {x: -3.284843, y: 0.0000014283543, z: 0, w: 1} + - {x: -2.5264845, y: 0.0000011647342, z: 0, w: 1} + - {x: -1.8374211, y: 0.0000009255407, z: 0, w: 1} + - {x: -1.2202159, y: 0.00000071167756, z: 0, w: 1} + - {x: -0.41476506, y: 0.00000043346907, z: 0, w: 1} + - {x: 0.21265507, y: 0.00000021811312, z: 0, w: 1} + - {x: 0.87061304, y: -1.838695e-15, z: 0, w: 1} + orientations: [] + restOrientations: [] + velocities: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + angularVelocities: [] + invMasses: + - 10 + - 10 + - 10 + - 10.000001 + - 10 + - 9.999999 + - 10 + - 10.000001 + - 9.999999 + - 9.999999 + - 10 + - 10.000001 + - 10.000001 + - 9.999999 + - 10.000001 + - 9.999999 + - 9.999999 + - 10 + - 10.000001 + - 9.999999 + - 10 + - 10.000001 + - 10 + - 9.999999 + - 10 + - 10 + - 10 + - 10.000001 + - 10 + - 10 + - 10 + - 10 + - 9.999999 + - 10 + - 10 + - 10 + - 10 + - 9.999999 + - 10 + - 10 + - 10 + - 10.000001 + - 9.999999 + - 10.000001 + - 9.999999 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10.000001 + - 10.000001 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + - 10 + invRotationalMasses: [] + filters: 0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff0100ffff + principalRadii: + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.34999996, y: 0.34999996, z: 0.34999996} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35000002, y: 0.35000002, z: 0.35000002} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.34999996, y: 0.34999996, z: 0.34999996} + - {x: 0.35000002, y: 0.35000002, z: 0.35000002} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.34999996, y: 0.34999996, z: 0.34999996} + - {x: 0.34999996, y: 0.34999996, z: 0.34999996} + - {x: 0.35000002, y: 0.35000002, z: 0.35000002} + - {x: 0.34999996, y: 0.34999996, z: 0.34999996} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.34999996, y: 0.34999996, z: 0.34999996} + - {x: 0.35000002, y: 0.35000002, z: 0.35000002} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.34999996, y: 0.34999996, z: 0.34999996} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35000002, y: 0.35000002, z: 0.35000002} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.34999996, y: 0.34999996, z: 0.34999996} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35000002, y: 0.35000002, z: 0.35000002} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35000002, y: 0.35000002, z: 0.35000002} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.34999996, y: 0.34999996, z: 0.34999996} + - {x: 0.35000002, y: 0.35000002, z: 0.35000002} + - {x: 0.34999996, y: 0.34999996, z: 0.34999996} + - {x: 0.35000002, y: 0.35000002, z: 0.35000002} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.34999996, y: 0.34999996, z: 0.34999996} + - {x: 0.34999996, y: 0.34999996, z: 0.34999996} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + - {x: 0.35, y: 0.35, z: 0.35} + colors: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1.0000001, g: 1.0000001, b: 1.0000001, a: 1.0000001} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 0.99999994, g: 0.99999994, b: 0.99999994, a: 0.99999994} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + points: + edges: 000000000100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000a0000000a0000000b0000000b0000000c0000000c0000000d0000000d0000000e0000000e0000000f0000000f00000010000000100000001100000011000000120000001200000013000000130000001400000014000000150000001500000016000000160000001700000017000000180000001800000019000000190000001a0000001a0000001b0000001b0000001c0000001c0000001d0000001d0000001e0000001e0000001f0000001f00000020000000200000002100000021000000220000002200000023000000230000002400000024000000250000002500000026000000260000002700000027000000280000002800000029000000290000002a0000002a0000002b0000002b0000002c0000002c0000002d0000002d0000002e0000002e0000002f0000002f00000030000000300000003100000031000000320000003200000033000000330000003400000034000000350000003500000036000000360000003700000037000000380000003800000039000000390000003a0000003a0000003b0000003b0000003c0000003c0000003d0000003d0000003e0000003e0000003f0000003f00000040000000400000004100000041000000420000004200000043000000430000004400000044000000450000004500000046000000460000004700000047000000480000004800000049000000490000004a0000004a0000004b0000004b0000004c0000004c0000004d0000004d0000004e0000004e0000004f0000004f00000050000000500000005100000051000000520000005200000053000000530000005400000054000000550000005500000056000000560000005700000057000000580000005800000059000000590000005a0000005a0000005b0000005b0000005c0000005c0000005d0000005d0000005e0000005e0000005f0000005f00000060000000600000006100000061000000620000006200000063000000630000006400000064000000650000006500000066000000660000006700000067000000680000006800000069000000690000006a0000006a0000006b0000006b0000006c0000006c0000006d0000006d0000006e0000006e0000006f0000006f000000700000007000000071000000 + triangles: + distanceConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000 + m_ConstraintCount: 57 + m_ActiveConstraintCount: 57 + m_InitialActiveConstraintCount: 57 + particleIndices: + serializedContents: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000490000004a0000004b0000004c0000004d0000004e0000004f000000500000005100000052000000530000005400000055000000560000005700000058000000590000005a0000005b0000005c0000005d0000005e0000005f000000600000006100000062000000630000006400000065000000660000006700000068000000690000006a0000006b0000006c0000006d0000006e0000006f0000007000000071000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.657959 + - 0.80545807 + - 0.6890564 + - 0.6914139 + - 0.6962509 + - 0.7430115 + - 0.6773987 + - 0.7187271 + - 0.68582153 + - 0.6877136 + - 0.7137718 + - 0.70257187 + - 0.6867447 + - 0.70415497 + - 0.72029877 + - 0.6841812 + - 0.6961212 + - 0.70703506 + - 0.70897675 + - 0.69158936 + - 0.6988373 + - 0.70521927 + - 0.70124435 + - 0.6956978 + - 0.6992912 + - 0.7020836 + - 0.70077133 + - 0.6988945 + - 0.6992874 + - 0.6988869 + - 0.70077133 + - 0.7020798 + - 0.6992912 + - 0.6956997 + - 0.70124245 + - 0.7052078 + - 0.69883347 + - 0.69158363 + - 0.7089863 + - 0.7070408 + - 0.6961155 + - 0.6841831 + - 0.7203064 + - 0.70414543 + - 0.6867504 + - 0.7025757 + - 0.7137613 + - 0.6877241 + - 0.68582535 + - 0.71873474 + - 0.6774101 + - 0.74301386 + - 0.69625187 + - 0.6914048 + - 0.68906343 + - 0.80545086 + - 0.657958 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f0000003000000031000000320000003300000034000000350000003600000037000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f0000003000000031000000320000003300000034000000350000003600000037000000 + m_ConstraintCount: 56 + m_ActiveConstraintCount: 56 + m_InitialActiveConstraintCount: 56 + particleIndices: + serializedContents: 0100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000490000004a0000004b0000004c0000004d0000004e0000004f000000500000005100000052000000530000005400000055000000560000005700000058000000590000005a0000005b0000005c0000005d0000005e0000005f000000600000006100000062000000630000006400000065000000660000006700000068000000690000006a0000006b0000006c0000006d0000006e0000006f00000070000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restLengths: + serializedContents: + - 0.6274185 + - 0.6171951 + - 0.7583618 + - 0.6603241 + - 0.73104095 + - 0.65579224 + - 0.6984024 + - 0.7384491 + - 0.6740875 + - 0.70095825 + - 0.7261467 + - 0.6775856 + - 0.6955986 + - 0.71237564 + - 0.69654083 + - 0.69026566 + - 0.7017021 + - 0.7121277 + - 0.68764114 + - 0.6953201 + - 0.7021179 + - 0.7080574 + - 0.6936035 + - 0.6975975 + - 0.7007866 + - 0.7031746 + - 0.6984062 + - 0.6991768 + - 0.6991844 + - 0.6983986 + - 0.7031784 + - 0.7007942 + - 0.6975956 + - 0.6936035 + - 0.7080612 + - 0.70212936 + - 0.6953201 + - 0.68763924 + - 0.71212196 + - 0.7016964 + - 0.6902695 + - 0.6965389 + - 0.71237946 + - 0.6955986 + - 0.67757607 + - 0.72615623 + - 0.70095825 + - 0.67408085 + - 0.73844147 + - 0.69838905 + - 0.65579367 + - 0.73103285 + - 0.6603303 + - 0.7583585 + - 0.61720514 + - 0.6274201 + m_AlignBytes: 16 + stiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + bendConstraintsData: + batches: + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000 + m_ConstraintCount: 38 + m_ActiveConstraintCount: 38 + m_InitialActiveConstraintCount: 38 + particleIndices: + serializedContents: 000000000200000001000000030000000500000004000000060000000800000007000000090000000b0000000a0000000c0000000e0000000d0000000f0000001100000010000000120000001400000013000000150000001700000016000000180000001a000000190000001b0000001d0000001c0000001e000000200000001f0000002100000023000000220000002400000026000000250000002700000029000000280000002a0000002c0000002b0000002d0000002f0000002e000000300000003200000031000000330000003500000034000000360000003800000037000000390000003b0000003a0000003c0000003e0000003d0000003f0000004100000040000000420000004400000043000000450000004700000046000000480000004a000000490000004b0000004d0000004c0000004e000000500000004f0000005100000053000000520000005400000056000000550000005700000059000000580000005a0000005c0000005b0000005d0000005f0000005e000000600000006200000061000000630000006500000064000000660000006800000067000000690000006b0000006a0000006c0000006e0000006d0000006f0000007100000070000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.010177612 + - 0.023956299 + - 0.010360718 + - 0.0039901733 + - 0.007003784 + - 0.017547607 + - 0.00440979 + - 0.007858276 + - 0.0029525757 + - 0.0026397705 + - 0.0020332336 + - 0.0017776489 + - 0.0071144104 + - 0.0011711121 + - 0.0009460449 + - 0.0006980896 + - 0.00049972534 + - 0.0008010864 + - 0.00009536743 + - 0.00009918213 + - 0.0008010864 + - 0.00049972534 + - 0.0006980896 + - 0.00095176697 + - 0.0011711121 + - 0.0071163177 + - 0.001783371 + - 0.002029419 + - 0.0026416779 + - 0.002948761 + - 0.007860184 + - 0.0044116974 + - 0.017539024 + - 0.00699234 + - 0.003993511 + - 0.010358095 + - 0.023952723 + - 0.010179281 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000 + m_ConstraintCount: 37 + m_ActiveConstraintCount: 37 + m_InitialActiveConstraintCount: 37 + particleIndices: + serializedContents: 0100000003000000020000000400000006000000050000000700000009000000080000000a0000000c0000000b0000000d0000000f0000000e000000100000001200000011000000130000001500000014000000160000001800000017000000190000001b0000001a0000001c0000001e0000001d0000001f0000002100000020000000220000002400000023000000250000002700000026000000280000002a000000290000002b0000002d0000002c0000002e000000300000002f0000003100000033000000320000003400000036000000350000003700000039000000380000003a0000003c0000003b0000003d0000003f0000003e000000400000004200000041000000430000004500000044000000460000004800000047000000490000004b0000004a0000004c0000004e0000004d0000004f0000005100000050000000520000005400000053000000550000005700000056000000580000005a000000590000005b0000005d0000005c0000005e000000600000005f0000006100000063000000620000006400000066000000650000006700000069000000680000006a0000006c0000006b0000006d0000006f0000006e000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.05934906 + - 0.023101807 + - 0.011978149 + - 0.029067993 + - 0.0067749023 + - 0.0039138794 + - 0.004272461 + - 0.008327484 + - 0.0028495789 + - 0.007923126 + - 0.001953125 + - 0.0016975403 + - 0.0013198853 + - 0.0010948181 + - 0.0022697449 + - 0.00063323975 + - 0.0004310608 + - 0.00078964233 + - 0.000038146973 + - 0.00016403198 + - 0.00036621094 + - 0.0005645752 + - 0.0025463104 + - 0.0010261536 + - 0.0012435913 + - 0.0010433197 + - 0.0018596649 + - 0.0041179657 + - 0.0027446747 + - 0.0030584335 + - 0.004131317 + - 0.004548073 + - 0.0065689087 + - 0.0072050095 + - 0.011593819 + - 0.022318125 + - 0.06274855 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + - m_IDs: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000 + m_IDToIndex: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000220000002300000024000000 + m_ConstraintCount: 37 + m_ActiveConstraintCount: 37 + m_InitialActiveConstraintCount: 37 + particleIndices: + serializedContents: 020000000400000003000000050000000700000006000000080000000a000000090000000b0000000d0000000c0000000e000000100000000f0000001100000013000000120000001400000016000000150000001700000019000000180000001a0000001c0000001b0000001d0000001f0000001e000000200000002200000021000000230000002500000024000000260000002800000027000000290000002b0000002a0000002c0000002e0000002d0000002f0000003100000030000000320000003400000033000000350000003700000036000000380000003a000000390000003b0000003d0000003c0000003e000000400000003f0000004100000043000000420000004400000046000000450000004700000049000000480000004a0000004c0000004b0000004d0000004f0000004e000000500000005200000051000000530000005500000054000000560000005800000057000000590000005b0000005a0000005c0000005e0000005d0000005f0000006100000060000000620000006400000063000000650000006700000066000000680000006a000000690000006b0000006d0000006c0000006e000000700000006f000000 + m_AlignBytes: 16 + lambdas: + serializedContents: [] + m_AlignBytes: 16 + restBends: + serializedContents: + - 0.0627594 + - 0.022315979 + - 0.01159668 + - 0.0072021484 + - 0.006576538 + - 0.004547119 + - 0.0041275024 + - 0.0030517578 + - 0.0027389526 + - 0.004119873 + - 0.0018615723 + - 0.0010490417 + - 0.0012435913 + - 0.001033783 + - 0.0025482178 + - 0.0005645752 + - 0.00036239624 + - 0.00016403198 + - 0.000030517578 + - 0.00078964233 + - 0.0004272461 + - 0.0006313324 + - 0.0022735596 + - 0.0010986328 + - 0.0013141632 + - 0.0016937256 + - 0.001947403 + - 0.007921219 + - 0.0028495789 + - 0.008333206 + - 0.0042686462 + - 0.0039138794 + - 0.0067825317 + - 0.029073238 + - 0.011973858 + - 0.02309823 + - 0.059343547 + m_AlignBytes: 16 + bendingStiffnesses: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + plasticity: + serializedContents: + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_AlignBytes: 16 + skinConstraintsData: + batches: [] + tetherConstraintsData: + batches: [] + stretchShearConstraintsData: + batches: [] + bendTwistConstraintsData: + batches: [] + shapeMatchingConstraintsData: + batches: [] + aerodynamicConstraintsData: + batches: [] + chainConstraintsData: + batches: [] + volumeConstraintsData: + batches: [] + groups: + - {fileID: -5578146735436999353} + - {fileID: 870036912147276740} + path: + m_Names: + - end + - start + m_Points: + data: + - tangentMode: 0 + inTangent: {x: -0.25, y: 0, z: 0} + position: {x: -78.089775, y: 0.000027569455, z: 0} + outTangent: {x: 0.25, y: 0, z: 0} + - tangentMode: 0 + inTangent: {x: -0.25, y: 0, z: 0} + position: {x: 0.87061304, y: -1.838695e-15, z: 0} + outTangent: {x: 0.25, y: 0, z: 0} + m_Normals: + data: + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 0} + m_Colors: + data: + - {r: 1, g: 1, b: 1, a: 1} + - {r: 1, g: 1, b: 1, a: 1} + m_Thickness: + data: + - 1 + - 1 + m_Masses: + data: + - 0.1 + - 0.1 + m_RotationalMasses: + data: + - 1 + - 1 + m_Filters: + data: 0100ffff0100ffff + m_Closed: 0 + m_ArcLengthTable: + - 0 + - 0.5508675 + - 2.0644803 + - 4.439497 + - 7.5745754 + - 11.368374 + - 15.719553 + - 20.526768 + - 25.688679 + - 31.103943 + - 36.67122 + - 42.28917 + - 47.856445 + - 53.27171 + - 58.43362 + - 63.240837 + - 67.59201 + - 71.38581 + - 74.52089 + - 76.895905 + - 78.409515 + - 78.96038 + m_TotalSplineLenght: 78.96038 + OnPathChanged: + m_PersistentCalls: + m_Calls: [] + OnControlPointAdded: + m_PersistentCalls: + m_Calls: [] + OnControlPointRemoved: + m_PersistentCalls: + m_Calls: [] + OnControlPointRenamed: + m_PersistentCalls: + m_Calls: [] + thickness: 0.35 + resolution: 0.5 + m_InterParticleDistance: 0.69876444 + totalParticles: 114 + m_RestLength: 78.96037 + restLengths: + - 0.657959 + - 0.6274185 + - 0.80545807 + - 0.6171951 + - 0.6890564 + - 0.7583618 + - 0.6914139 + - 0.6603241 + - 0.6962509 + - 0.73104095 + - 0.7430115 + - 0.65579224 + - 0.6773987 + - 0.6984024 + - 0.7187271 + - 0.7384491 + - 0.68582153 + - 0.6740875 + - 0.6877136 + - 0.70095825 + - 0.7137718 + - 0.7261467 + - 0.70257187 + - 0.6775856 + - 0.6867447 + - 0.6955986 + - 0.70415497 + - 0.71237564 + - 0.72029877 + - 0.69654083 + - 0.6841812 + - 0.69026566 + - 0.6961212 + - 0.7017021 + - 0.70703506 + - 0.7121277 + - 0.70897675 + - 0.68764114 + - 0.69158936 + - 0.6953201 + - 0.6988373 + - 0.7021179 + - 0.70521927 + - 0.7080574 + - 0.70124435 + - 0.6936035 + - 0.6956978 + - 0.6975975 + - 0.6992912 + - 0.7007866 + - 0.7020836 + - 0.7031746 + - 0.70077133 + - 0.6984062 + - 0.6988945 + - 0.6991768 + - 0.6992874 + - 0.6991844 + - 0.6988869 + - 0.6983986 + - 0.70077133 + - 0.7031784 + - 0.7020798 + - 0.7007942 + - 0.6992912 + - 0.6975956 + - 0.6956997 + - 0.6936035 + - 0.70124245 + - 0.7080612 + - 0.7052078 + - 0.70212936 + - 0.69883347 + - 0.6953201 + - 0.69158363 + - 0.68763924 + - 0.7089863 + - 0.71212196 + - 0.7070408 + - 0.7016964 + - 0.6961155 + - 0.6902695 + - 0.6841831 + - 0.6965389 + - 0.7203064 + - 0.71237946 + - 0.70414543 + - 0.6955986 + - 0.6867504 + - 0.67757607 + - 0.7025757 + - 0.72615623 + - 0.7137613 + - 0.70095825 + - 0.6877241 + - 0.67408085 + - 0.68582535 + - 0.73844147 + - 0.71873474 + - 0.69838905 + - 0.6774101 + - 0.65579367 + - 0.74301386 + - 0.73103285 + - 0.69625187 + - 0.6603303 + - 0.6914048 + - 0.7583585 + - 0.68906343 + - 0.61720514 + - 0.80545086 + - 0.6274201 + - 0.657958 + - 0 + pooledParticles: 0 +--- !u!114 &870036912147276740 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 775ad4994fda946d1a5936c7e2dfc785, type: 3} + m_Name: start + m_EditorClassIdentifier: + particleIndices: 71000000 + m_Blueprint: {fileID: 11400000} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/WrappingRope.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/WrappingRope.asset.meta new file mode 100644 index 000000000..3dd9abe0b --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Blueprints/WrappingRope.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4d31372b30ca34527b534f09a803ab15 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials.meta new file mode 100644 index 000000000..b23bca2ed --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2df1efc605b8b42ecaa6b259d0a7ce78 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/ChainRed.mat b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/ChainRed.mat new file mode 100644 index 000000000..c9914abd1 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/ChainRed.mat @@ -0,0 +1,87 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: ChainRed + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _EMISSION + m_InvalidKeywords: [] + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EmissionScaleUI: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.6 + - _GlossyReflections: 1 + - _Metallic: 1 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColorUI: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/ChainRed.mat.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/ChainRed.mat.meta new file mode 100644 index 000000000..4ef19f21d --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/ChainRed.mat.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b74081a5a5bbf418ea9f95bfec18f393 +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/ChainWhite.mat b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/ChainWhite.mat new file mode 100644 index 000000000..e285c8ed1 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/ChainWhite.mat @@ -0,0 +1,87 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: ChainWhite + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _EMISSION + m_InvalidKeywords: [] + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EmissionScaleUI: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.6 + - _GlossyReflections: 1 + - _Metallic: 1 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColorUI: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/ChainWhite.mat.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/ChainWhite.mat.meta new file mode 100644 index 000000000..77811e85e --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/ChainWhite.mat.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: edc856900ac3941a98996e21e91e215e +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/GreenRope.mat b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/GreenRope.mat new file mode 100644 index 000000000..564826cab --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/GreenRope.mat @@ -0,0 +1,92 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: GreenRope + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _EMISSION + m_InvalidKeywords: [] + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 1d4961a920a28426db6e5dbd2ed49050, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 2800000, guid: 86f62345c38804a3a8d3e0a32ae8433d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EmissionScaleUI: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.17283745, g: 0.8161765, b: 0.12002597, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColorUI: {r: 1, g: 1, b: 1, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/GreenRope.mat.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/GreenRope.mat.meta new file mode 100644 index 000000000..79421a01e --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/GreenRope.mat.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 03019be2b7a654429bf322c3ca0c7a0e +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/LineRope.mat b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/LineRope.mat new file mode 100644 index 000000000..24e622672 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/LineRope.mat @@ -0,0 +1,88 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LineRope + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _EMISSION + - _NORMALMAP + m_InvalidKeywords: [] + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 7a6d7fa80b2a444089c9b87ba93966c7, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 61461ee4d289a4bc384e839abcf74473, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EmissionScaleUI: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.4 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColorUI: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/LineRope.mat.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/LineRope.mat.meta new file mode 100644 index 000000000..c2185a456 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/LineRope.mat.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4cc7d840058664f0f9a679178b33b5e4 +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/RedRope.mat b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/RedRope.mat new file mode 100644 index 000000000..ef2abf912 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/RedRope.mat @@ -0,0 +1,88 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RedRope + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _EMISSION + - _NORMALMAP + m_InvalidKeywords: [] + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 1020609c9ac9f4a14a078c1afd37a75e, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 61461ee4d289a4bc384e839abcf74473, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 2800000, guid: 665db389e8f1e42acb689114a261cb06, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EmissionScaleUI: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.4 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColorUI: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/RedRope.mat.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/RedRope.mat.meta new file mode 100644 index 000000000..61f3463ae --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/RedRope.mat.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 44ab0cc40b59345718856f6e1c1225f3 +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/Rod.mat b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/Rod.mat new file mode 100644 index 000000000..fcb491f30 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/Rod.mat @@ -0,0 +1,87 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Rod + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _EMISSION + m_InvalidKeywords: [] + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 49dd156e3b48f41f791e9d75107f6b38, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EmissionScaleUI: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.7 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColorUI: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/Rod.mat.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/Rod.mat.meta new file mode 100644 index 000000000..5ae039713 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/Rod.mat.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 9bc0d93bc33e445c7a765578064cdd1e +labels: +- ObiRope +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/Snake.mat b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/Snake.mat new file mode 100644 index 000000000..64ec4236e --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/Snake.mat @@ -0,0 +1,84 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Snake + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 61461ee4d289a4bc384e839abcf74473, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.6 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/Snake.mat.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/Snake.mat.meta new file mode 100644 index 000000000..043f36665 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/Snake.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dbda366779bfb4406b2c60e70986d306 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/WrapPeg.mat b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/WrapPeg.mat new file mode 100644 index 000000000..f651f654a --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/WrapPeg.mat @@ -0,0 +1,84 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: WrapPeg + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.8 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.3568441, g: 0.9339623, b: 0.38412383, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/WrapPeg.mat.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/WrapPeg.mat.meta new file mode 100644 index 000000000..adcedd484 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Materials/WrapPeg.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d402dacd6333443e5926c03c59b7b0ad +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Models.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models.meta new file mode 100644 index 000000000..8733e6717 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2408079b738194e52942dd5e44c3e4aa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLink.fbx b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLink.fbx new file mode 100644 index 000000000..23abba9f2 Binary files /dev/null and b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLink.fbx differ diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLink.fbx.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLink.fbx.meta new file mode 100644 index 000000000..87efc2a03 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLink.fbx.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 70b5250dc71ea4b35987751a9843d8d6 +labels: +- ObiRope +ModelImporter: + serializedVersion: 23 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: pCube1 + 9500000: //RootNode + externalObjects: {} + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + materialLocation: 0 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + importVisibility: 0 + importBlendShapes: 1 + importCameras: 0 + importLights: 0 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + indexFormat: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + previousCalculatedGlobalScale: 0.01 + hasPreviousCalculatedGlobalScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 0 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + importAnimation: 0 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 2 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLinkRed.prefab b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLinkRed.prefab new file mode 100644 index 000000000..db79e582d --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLinkRed.prefab @@ -0,0 +1,92 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &116810 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 499758} + - component: {fileID: 3330700} + - component: {fileID: 2349612} + m_Layer: 0 + m_Name: ChainLinkRed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &499758 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 116810} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3330700 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 116810} + m_Mesh: {fileID: 4300000, guid: 70b5250dc71ea4b35987751a9843d8d6, type: 3} +--- !u!23 &2349612 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 116810} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: b74081a5a5bbf418ea9f95bfec18f393, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLinkRed.prefab.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLinkRed.prefab.meta new file mode 100644 index 000000000..d30d2a00a --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLinkRed.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2d2a7dadfeecb4ffc9bdbfa8ae0b4727 +labels: +- ObiRope +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLinkWhite.prefab b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLinkWhite.prefab new file mode 100644 index 000000000..b29c9c4f1 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLinkWhite.prefab @@ -0,0 +1,92 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &116810 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 499758} + - component: {fileID: 3330700} + - component: {fileID: 2349612} + m_Layer: 0 + m_Name: ChainLinkWhite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &499758 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 116810} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3330700 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 116810} + m_Mesh: {fileID: 4300000, guid: 70b5250dc71ea4b35987751a9843d8d6, type: 3} +--- !u!23 &2349612 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 116810} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: edc856900ac3941a98996e21e91e215e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLinkWhite.prefab.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLinkWhite.prefab.meta new file mode 100644 index 000000000..96dc456a4 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/ChainLinkWhite.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1a25eaebcccc14ffeabd9b15641f8b51 +labels: +- ObiRope +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/tentacle_guy.fbx b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/tentacle_guy.fbx new file mode 100644 index 000000000..692790676 Binary files /dev/null and b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/tentacle_guy.fbx differ diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/tentacle_guy.fbx.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/tentacle_guy.fbx.meta new file mode 100644 index 000000000..64f5ef49f --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Models/tentacle_guy.fbx.meta @@ -0,0 +1,609 @@ +fileFormatVersion: 2 +guid: 643a73163dc8d4f0e904d6c0f6857999 +ModelImporter: + serializedVersion: 19301 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 3 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 10 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: + - boneName: joint1 + humanName: Hips + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint2 + humanName: LeftUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint20 + humanName: RightUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint3 + humanName: LeftLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint21 + humanName: RightLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint4 + humanName: LeftFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint22 + humanName: RightFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint5 + humanName: Spine + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint6 + humanName: Chest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint8 + humanName: LeftUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint63 + humanName: RightUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint9 + humanName: LeftLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint64 + humanName: RightLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint10 + humanName: LeftHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint65 + humanName: RightHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint13 + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint23 + humanName: RightToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint7 + humanName: UpperChest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: joint14 + humanName: Head + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + skeleton: + - name: tentacle_guy(Clone) + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: body_basemesh + parentName: tentacle_guy(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: joint1 + parentName: tentacle_guy(Clone) + position: {x: -0, y: 1.3, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: joint2 + parentName: joint1 + position: {x: -0.13999999, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0.69631565, w: 0.71773577} + scale: {x: 1, y: 1, z: 1} + - name: joint3 + parentName: joint2 + position: {x: -0.66030294, y: -9.653175e-16, z: -0.03} + rotation: {x: 0.9997244, y: 0.023477284, z: 1.4375691e-18, w: 6.121546e-17} + scale: {x: 1, y: 1, z: 1} + - name: joint4 + parentName: joint3 + position: {x: -0.5100958, y: 0.0014997916, z: 0.06} + rotation: {x: 0.7011903, y: 0.7129742, z: 8.65926e-17, w: -7.2155487e-19} + scale: {x: 1, y: 1, z: 1} + - name: joint13 + parentName: joint4 + position: {x: -0.03, y: -0.104848675, z: 0.24} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: joint5 + parentName: joint1 + position: {x: -0, y: 0.25999996, z: 0} + rotation: {x: 0.461427, y: -0.53580326, z: -0.461427, w: 0.53580326} + scale: {x: 1, y: 1, z: 1} + - name: joint6 + parentName: joint5 + position: {x: -0.20223747, y: 7.2164494e-17, z: -4.490574e-17} + rotation: {x: -0.7051483, y: 0.052591935, z: -0.052591935, w: 0.7051483} + scale: {x: 1, y: 1, z: 1} + - name: joint7 + parentName: joint6 + position: {x: -0.36999997, y: -2.1944667e-14, z: -0.08999999} + rotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: joint8 + parentName: joint7 + position: {x: -0.24, y: -0.12999998, z: 0.049999997} + rotation: {x: 0.000000005268355, y: 0.000000047415195, z: 0.030666016, w: 0.9995297} + scale: {x: 1, y: 1, z: 1} + - name: joint9 + parentName: joint8 + position: {x: -0.38948682, y: -4.1524551e-16, z: 1.11022296e-17} + rotation: {x: 0.0030285313, y: -0.12718104, z: -0.042866673, w: 0.99094814} + scale: {x: 1, y: 1, z: 1} + - name: joint10 + parentName: joint9 + position: {x: -0.3605551, y: 1.7694057e-15, z: 0.12} + rotation: {x: 0, y: -0, z: -0.008770918, w: 0.99996156} + scale: {x: 1, y: 1, z: 1} + - name: joint11 + parentName: joint10 + position: {x: -0.09154348, y: 0.019814016, z: 0.029994646} + rotation: {x: 0.042868063, y: 0.15011244, z: -0.04303352, w: 0.98680127} + scale: {x: 1, y: 1, z: 1} + - name: joint55 + parentName: joint11 + position: {x: -0.07399605, y: -2.3793767e-16, z: 6.106226e-17} + rotation: {x: 2.4673294e-32, y: -0.041632812, z: 3.11171e-15, w: 0.999133} + scale: {x: 1, y: 1, z: 1} + - name: joint56 + parentName: joint55 + position: {x: -0.07600566, y: -3.5527135e-16, z: 7.494005e-17} + rotation: {x: 1.2037062e-35, y: 0.000091424394, z: 1.846548e-15, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: joint57 + parentName: joint56 + position: {x: -0.09619879, y: -3.5527135e-16, z: 1.4177547e-14} + rotation: {x: 0, y: -0.114946574, z: -0, w: 0.99337167} + scale: {x: 1, y: 1, z: 1} + - name: joint12 + parentName: joint10 + position: {x: -0.02598065, y: 0.002883614, z: 0.12321674} + rotation: {x: 0.11304527, y: 0.69661635, z: -0.1134862, w: 0.6993335} + scale: {x: 1, y: 1, z: 1} + - name: joint58 + parentName: joint12 + position: {x: -0.089162126, y: -2.6873932e-17, z: -7.0950186e-17} + rotation: {x: 4.0062108e-32, y: -0.011748499, z: 4.0486117e-15, w: 0.999931} + scale: {x: 1, y: 1, z: 1} + - name: joint59 + parentName: joint58 + position: {x: -0.084438324, y: -3.5527135e-16, z: -7.6327826e-17} + rotation: {x: -0, y: 0.035413247, z: 2.4711546e-31, w: 0.9993728} + scale: {x: 1, y: 1, z: 1} + - name: joint60 + parentName: joint59 + position: {x: -0.07985701, y: 3.5527135e-16, z: 5.481726e-17} + rotation: {x: 0, y: -0.021723738, z: -0, w: 0.999764} + scale: {x: 1, y: 1, z: 1} + - name: joint61 + parentName: joint60 + position: {x: -0.07746912, y: 3.6404822e-32, z: 1.3682925e-17} + rotation: {x: -9.244807e-33, y: -0.0086197285, z: 2.6484999e-15, w: 0.99996287} + scale: {x: 1, y: 1, z: 1} + - name: joint62 + parentName: joint61 + position: {x: -0.06707279, y: -3.5527135e-16, z: -2.6732087e-16} + rotation: {x: 0, y: -0.70098543, z: -0, w: 0.7131756} + scale: {x: 1, y: 1, z: 1} + - name: joint14 + parentName: joint7 + position: {x: 2.1745936e-14, y: 0.10756256, z: 0.05387839} + rotation: {x: -0.010158825, y: 0.7070338, z: -0.010158825, w: 0.7070338} + scale: {x: 1, y: 1, z: 1} + - name: joint36 + parentName: joint14 + position: {x: -0.12709719, y: 1.8735012e-17, z: -4.3096858e-17} + rotation: {x: 0.0084946025, y: -0.59120727, z: 0.011586421, w: 0.8063917} + scale: {x: 1, y: 1, z: 1} + - name: joint37 + parentName: joint36 + position: {x: -0.103054576, y: 6.805027e-17, z: -1.6653344e-17} + rotation: {x: 0.015911022, y: 0.10465568, z: 0.14946043, w: 0.9830848} + scale: {x: 1, y: 1, z: 1} + - name: joint38 + parentName: joint37 + position: {x: -0.09580189, y: -2.698401e-32, z: 4.9960035e-17} + rotation: {x: 0, y: 0.018015133, z: 2.3763304e-15, w: 0.99983776} + scale: {x: 1, y: 1, z: 1} + - name: joint39 + parentName: joint38 + position: {x: -0.07476424, y: 2.2383038e-32, z: 1.3877786e-16} + rotation: {x: 0, y: -0.020644465, z: 2.7901835e-15, w: 0.9997869} + scale: {x: 1, y: 1, z: 1} + - name: joint40 + parentName: joint39 + position: {x: -0.063678086, y: -1.1047273e-32, z: -4.9960035e-17} + rotation: {x: 0, y: -0.25340134, z: -0, w: 0.9673612} + scale: {x: 1, y: 1, z: 1} + - name: joint41 + parentName: joint36 + position: {x: -0.079592906, y: -0.031094465, z: 0.08634962} + rotation: {x: 0.058944978, y: 0.38568294, z: 0.13910499, w: 0.910178} + scale: {x: 1, y: 1, z: 1} + - name: joint42 + parentName: joint41 + position: {x: -0.09347624, y: 3.5527135e-16, z: -1.11022296e-17} + rotation: {x: 6.163813e-33, y: 0.016476804, z: -5.6360446e-15, w: 0.9998643} + scale: {x: 1, y: 1, z: 1} + - name: joint43 + parentName: joint42 + position: {x: -0.09456621, y: 3.5527135e-16, z: 4.052314e-16} + rotation: {x: 0, y: -0.010380103, z: 4.6311506e-31, w: 0.9999461} + scale: {x: 1, y: 1, z: 1} + - name: joint44 + parentName: joint43 + position: {x: -0.08517358, y: -3.5527135e-16, z: -3.38618e-16} + rotation: {x: -6.163644e-33, y: -0.014716563, z: -2.9486684e-15, w: 0.9998917} + scale: {x: 1, y: 1, z: 1} + - name: joint45 + parentName: joint44 + position: {x: -0.0602492, y: -3.5527135e-16, z: -1.6653344e-17} + rotation: {x: 0, y: -0.38221022, z: -0, w: 0.9240754} + scale: {x: 1, y: 1, z: 1} + - name: joint46 + parentName: joint36 + position: {x: 0.08440523, y: -0.0000041314647, z: 0.059126962} + rotation: {x: 0.90607345, y: -0.13775223, z: 0.39552408, w: -0.06013235} + scale: {x: 1, y: 1, z: 1} + - name: joint47 + parentName: joint46 + position: {x: 0.095801786, y: -0.0000018860757, z: 0.000000035000777} + rotation: {x: 0.000000007449372, y: 0.018015133, z: -1.342239e-10, w: 0.99983776} + scale: {x: 1, y: 1, z: 1} + - name: joint48 + parentName: joint47 + position: {x: 0.074762255, y: -0.000004752052, z: -0.00000015192765} + rotation: {x: -1.5410725e-33, y: -0.020644465, z: -6.7321623e-16, w: 0.9997869} + scale: {x: 1, y: 1, z: 1} + - name: joint49 + parentName: joint48 + position: {x: 0.06367956, y: 0.000005259358, z: 0.00000011133796} + rotation: {x: 0.0000000072074027, y: -0.25340134, z: 0.000000001887986, w: 0.9673612} + scale: {x: 1, y: 1, z: 1} + - name: joint50 + parentName: joint36 + position: {x: 0.015646856, y: -0.031094128, z: 0.116388924} + rotation: {x: 0.7520093, y: -0.114931636, z: 0.64160526, w: -0.09805829} + scale: {x: 1, y: 1, z: 1} + - name: joint51 + parentName: joint50 + position: {x: 0.093476094, y: -0.00000027094217, z: 1.1657341e-16} + rotation: {x: 0.000000014899139, y: 0.016476804, z: -2.4552385e-10, w: 0.9998643} + scale: {x: 1, y: 1, z: 1} + - name: joint52 + parentName: joint51 + position: {x: 0.094566934, y: -0.00000077767515, z: -0.00000019630028} + rotation: {x: 0.000000018249137, y: -0.010380103, z: 4.9878895e-10, w: 0.9999461} + scale: {x: 1, y: 1, z: 1} + - name: joint53 + parentName: joint52 + position: {x: 0.0851739, y: 0.0000014720804, z: -0.0000002482385} + rotation: {x: 0.0000000333164, y: -0.014716563, z: 0.0000000017751464, w: 0.9998917} + scale: {x: 1, y: 1, z: 1} + - name: joint54 + parentName: joint53 + position: {x: 0.06024818, y: -0.000002909202, z: 0.0000007170761} + rotation: {x: 0.000000060805775, y: -0.38221022, z: 0.00000007690883, w: 0.9240754} + scale: {x: 1, y: 1, z: 1} + - name: joint63 + parentName: joint7 + position: {x: 0.24, y: -0.12999998, z: 0.049999997} + rotation: {x: 0.9995297, y: -0.030665986, z: -0.000000027658864, w: -0.000000056634818} + scale: {x: 1, y: 1, z: 1} + - name: joint64 + parentName: joint63 + position: {x: 0.38948682, y: -7.105427e-16, z: 0} + rotation: {x: 0.0030285215, y: -0.12718093, z: -0.042866964, w: 0.99094814} + scale: {x: 1, y: 1, z: 1} + - name: joint65 + parentName: joint64 + position: {x: 0.3605551, y: 3.5527135e-16, z: -0.12} + rotation: {x: -6.018763e-36, y: -1.023699e-17, z: -0.008770918, w: 0.99996156} + scale: {x: 1, y: 1, z: 1} + - name: joint66 + parentName: joint65 + position: {x: 0.0915416, y: -0.019814832, z: -0.0299946} + rotation: {x: 0.042868063, y: 0.15011244, z: -0.04303352, w: 0.98680127} + scale: {x: 1, y: 1, z: 1} + - name: joint67 + parentName: joint66 + position: {x: 0.07399491, y: 0.00000049746126, z: -0.00000055409134} + rotation: {x: -1.34932085e-33, y: -0.041632812, z: -5.729555e-17, w: 0.999133} + scale: {x: 1, y: 1, z: 1} + - name: joint68 + parentName: joint67 + position: {x: 0.07600958, y: 0.000003547689, z: 0.0000006672846} + rotation: {x: 0.000000010536712, y: 0.000091424394, z: -9.633645e-13, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: joint69 + parentName: joint68 + position: {x: 0.09619899, y: -0.000003590403, z: 0.000000386133} + rotation: {x: 0.0000000074011957, y: -0.114946574, z: 8.5641866e-10, w: 0.99337167} + scale: {x: 1, y: 1, z: 1} + - name: joint70 + parentName: joint65 + position: {x: 0.025980322, y: -0.0028836806, z: -0.123216994} + rotation: {x: 0.11304527, y: 0.69661635, z: -0.1134862, w: 0.6993335} + scale: {x: 1, y: 1, z: 1} + - name: joint71 + parentName: joint70 + position: {x: 0.08916167, y: 3.5527135e-16, z: -0.00000009384617} + rotation: {x: 3.0817006e-33, y: -0.011748499, z: 6.011787e-16, w: 0.999931} + scale: {x: 1, y: 1, z: 1} + - name: joint72 + parentName: joint71 + position: {x: 0.08443868, y: 0, z: 0.00000047927216} + rotation: {x: 1.8500533e-32, y: 0.035413247, z: -1.0704252e-15, w: 0.9993728} + scale: {x: 1, y: 1, z: 1} + - name: joint73 + parentName: joint72 + position: {x: 0.07985737, y: 3.5527135e-16, z: -0.00000021718611} + rotation: {x: -2.8895768e-34, y: -0.021723738, z: -4.501632e-17, w: 0.999764} + scale: {x: 1, y: 1, z: 1} + - name: joint74 + parentName: joint73 + position: {x: 0.07746899, y: -3.5527135e-16, z: 1.7763567e-16} + rotation: {x: 0.000000007450304, y: -0.0086197285, z: 6.422235e-11, w: 0.99996287} + scale: {x: 1, y: 1, z: 1} + - name: joint75 + parentName: joint74 + position: {x: 0.06707196, y: 3.5527135e-16, z: -0.00000024134343} + rotation: {x: 1.858289e-28, y: -0.70098543, z: 3.3080845e-14, w: 0.7131756} + scale: {x: 1, y: 1, z: 1} + - name: joint24 + parentName: joint5 + position: {x: 0.09722659, y: -0.2517154, z: 1.1939972e-16} + rotation: {x: 1.6606968e-32, y: 2.451872e-16, z: 0.6701611, w: 0.74221563} + scale: {x: 1, y: 1, z: 1} + - name: joint25 + parentName: joint24 + position: {x: -0.16180955, y: -6.383782e-17, z: 5.889277e-17} + rotation: {x: 1.9260484e-34, y: 1.790631e-16, z: -0.011078293, w: 0.99993867} + scale: {x: 1, y: 1, z: 1} + - name: joint26 + parentName: joint25 + position: {x: -0.13129793, y: 3.4833245e-16, z: 4.7018346e-17} + rotation: {x: 2.3133648e-33, y: 1.6669616e-16, z: -0.044083342, w: 0.99902785} + scale: {x: 1, y: 1, z: 1} + - name: joint27 + parentName: joint26 + position: {x: -0.13695669, y: 6.383782e-17, z: 4.5615924e-17} + rotation: {x: 3.009266e-36, y: 1.6660854e-16, z: 0.000248973, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: joint28 + parentName: joint27 + position: {x: -0.1380393, y: -3.5256517e-14, z: 4.5997046e-17} + rotation: {x: -3.852802e-34, y: 1.7309154e-16, z: 0.022107998, w: 0.9997556} + scale: {x: 1, y: 1, z: 1} + - name: joint29 + parentName: joint28 + position: {x: -0.11609105, y: -2.9906632e-16, z: 4.0178935e-17} + rotation: {x: 3.8526864e-34, y: 1.788129e-16, z: 0.020704908, w: 0.99978566} + scale: {x: 1, y: 1, z: 1} + - name: joint30 + parentName: joint29 + position: {x: -0.095484726, y: -2.9178048e-16, z: 3.414048e-17} + rotation: {x: 1.9264165e-33, y: 1.7259104e-16, z: -0.022469074, w: 0.9997476} + scale: {x: 1, y: 1, z: 1} + - name: joint31 + parentName: joint30 + position: {x: -0.09765373, y: -2.2308542e-16, z: 3.3699805e-17} + rotation: {x: 7.706731e-34, y: 1.803109e-16, z: 0.027953194, w: 0.99960923} + scale: {x: 1, y: 1, z: 1} + - name: joint32 + parentName: joint31 + position: {x: -0.09659968, y: -3.247402e-16, z: 3.482234e-17} + rotation: {x: -9.629728e-35, y: 1.7916718e-16, z: -0.0040298384, w: 0.9999919} + scale: {x: 1, y: 1, z: 1} + - name: joint33 + parentName: joint32 + position: {x: -0.08464015, y: 5.2458037e-16, z: 3.032923e-17} + rotation: {x: 9.629959e-35, y: 1.8129451e-16, z: 0.0080035, w: 0.999968} + scale: {x: 1, y: 1, z: 1} + - name: joint34 + parentName: joint33 + position: {x: -0.07817147, y: -4.5033417e-16, z: 2.8343208e-17} + rotation: {x: -3.854454e-34, y: 1.7129895e-16, z: -0.036680747, w: 0.99932706} + scale: {x: 1, y: 1, z: 1} + - name: joint35 + parentName: joint34 + position: {x: -0.06837516, y: -1.3392065e-16, z: 2.3409425e-17} + rotation: {x: -0.50787055, y: 0.49200353, z: -0.49200353, w: 0.50787055} + scale: {x: 1, y: 1, z: 1} + - name: joint20 + parentName: joint1 + position: {x: 0.13999999, y: 0, z: 0} + rotation: {x: 0.71773577, y: -0.69631565, z: 4.2637038e-17, w: -4.3948642e-17} + scale: {x: 1, y: 1, z: 1} + - name: joint21 + parentName: joint20 + position: {x: 0.66030294, y: 8.8817837e-17, z: 0.03} + rotation: {x: 0.9997244, y: 0.023477284, z: -1.4375691e-18, w: -6.121546e-17} + scale: {x: 1, y: 1, z: 1} + - name: joint22 + parentName: joint21 + position: {x: 0.5100958, y: -0.0014997916, z: -0.06} + rotation: {x: 0.7011903, y: 0.7129742, z: -6.910292e-17, w: 1.5759052e-16} + scale: {x: 1, y: 1, z: 1} + - name: joint23 + parentName: joint22 + position: {x: 0.03, y: 0.10484869, z: -0.24} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 10 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 1 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs.meta new file mode 100644 index 000000000..69e2f0949 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6d65e63468c2542c684d7e441b40f6c8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeBamboo.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeBamboo.asset new file mode 100644 index 000000000..f8a726184 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeBamboo.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5b9c84cdb747944209b1c8753933c5db, type: 3} + m_Name: SnakeBamboo + m_EditorClassIdentifier: + dynamicFriction: 0.3 + staticFriction: 0 + stickiness: 0 + stickDistance: 0 + frictionCombine: 3 + stickinessCombine: 3 + rollingContacts: 0 + rollingFriction: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeBamboo.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeBamboo.asset.meta new file mode 100644 index 000000000..6917eeadb --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeBamboo.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4c46db05afff546f8a9f9333946e9882 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeBody.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeBody.asset new file mode 100644 index 000000000..c4995c1b7 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeBody.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5b9c84cdb747944209b1c8753933c5db, type: 3} + m_Name: SnakeBody + m_EditorClassIdentifier: + dynamicFriction: 0.1 + staticFriction: 0 + stickiness: 0.02 + stickDistance: 0.01 + frictionCombine: 3 + stickinessCombine: 3 + rollingContacts: 0 + rollingFriction: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeBody.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeBody.asset.meta new file mode 100644 index 000000000..5c826115e --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeBody.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dbf5bc78c024b4724bd8b2aaca1af0c2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeFloor.asset b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeFloor.asset new file mode 100644 index 000000000..1853cb1e2 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeFloor.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5b9c84cdb747944209b1c8753933c5db, type: 3} + m_Name: SnakeFloor + m_EditorClassIdentifier: + dynamicFriction: 0.7 + staticFriction: 0 + stickiness: 0 + stickDistance: 0 + frictionCombine: 3 + stickinessCombine: 3 + rollingContacts: 0 + rollingFriction: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeFloor.asset.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeFloor.asset.meta new file mode 100644 index 000000000..0fa3990c6 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/SnakeFloor.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c73079cca10924a80871331c66b4ad4b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/WrapPeg.prefab b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/WrapPeg.prefab new file mode 100644 index 000000000..a132724e5 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/WrapPeg.prefab @@ -0,0 +1,149 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3512526509595786538 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3512526509595786583} + - component: {fileID: 3512526509595786582} + - component: {fileID: 3512526509595786581} + - component: {fileID: 3512526509595786580} + - component: {fileID: 3512526509595786539} + - component: {fileID: 3433872735350211203} + m_Layer: 0 + m_Name: WrapPeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3512526509595786583 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3512526509595786538} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: -2.5221415, y: 3.5687833, z: -0.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!33 &3512526509595786582 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3512526509595786538} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &3512526509595786581 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3512526509595786538} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d402dacd6333443e5926c03c59b7b0ad, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!136 &3512526509595786580 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3512526509595786538} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5000001 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} +--- !u!114 &3512526509595786539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3512526509595786538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 3512526509595786580} + m_DistanceField: {fileID: 0} +--- !u!114 &3433872735350211203 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3512526509595786538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 39f0f8f454a2049f3af7bad3dda0481e, type: 3} + m_Name: + m_EditorClassIdentifier: + normalColor: {r: 0.18178178, g: 0.8962264, b: 0.35300422, a: 1} + wrappedColor: {r: 1, g: 1, b: 0.21226418, a: 1} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/WrapPeg.prefab.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/WrapPeg.prefab.meta new file mode 100644 index 000000000..e4fe13d36 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Prefabs/WrapPeg.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 88eb4cec0c7324e51bf5e7e1342370e3 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts.meta new file mode 100644 index 000000000..0d3d741b7 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3bfafe4a7962d422083d44fc9934852e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CharacterControl2D.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CharacterControl2D.cs new file mode 100644 index 000000000..8a88a0b37 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CharacterControl2D.cs @@ -0,0 +1,28 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class CharacterControl2D : MonoBehaviour { + + public float acceleration = 10; + public float maxSpeed = 8; + public float jumpPower = 2; + + private Rigidbody unityRigidbody; + + public void Awake(){ + unityRigidbody = GetComponent(); + } + + + void FixedUpdate () { + + unityRigidbody.AddForce(new Vector3(Input.GetAxis("Horizontal")*acceleration,0,0)); + + unityRigidbody.linearVelocity = Vector3.ClampMagnitude(unityRigidbody.linearVelocity,maxSpeed); + + if (Input.GetButtonDown("Jump")){ + unityRigidbody.AddForce(Vector3.up * jumpPower,ForceMode.VelocityChange); + } + } +} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CharacterControl2D.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CharacterControl2D.cs.meta new file mode 100644 index 000000000..e5c889d78 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CharacterControl2D.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 82b0f164ac14247fd8a566109fbbe771 +labels: +- ObiRope +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CraneController.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CraneController.cs new file mode 100644 index 000000000..546808725 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CraneController.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Obi; + +public class CraneController : MonoBehaviour { + + ObiRopeCursor cursor; + ObiRope rope; + + // Use this for initialization + void Start () { + cursor = GetComponentInChildren(); + rope = cursor.GetComponent(); + } + + // Update is called once per frame + void Update () { + if (Input.GetKey(KeyCode.W)){ + if (rope.restLength > 6.5f) + cursor.ChangeLength(rope.restLength - 1f * Time.deltaTime); + } + + if (Input.GetKey(KeyCode.S)){ + cursor.ChangeLength(rope.restLength + 1f * Time.deltaTime); + } + + if (Input.GetKey(KeyCode.A)){ + transform.Rotate(0,Time.deltaTime*15f,0); + } + + if (Input.GetKey(KeyCode.D)){ + transform.Rotate(0,-Time.deltaTime*15f,0); + } + } +} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CraneController.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CraneController.cs.meta new file mode 100644 index 000000000..32e4eeb6b --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CraneController.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 5551d37f45fd044ff8768019501c20a5 +labels: +- ObiRope +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CursorController.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CursorController.cs new file mode 100644 index 000000000..7c6a6ba6d --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CursorController.cs @@ -0,0 +1,45 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Obi; + +[RequireComponent(typeof(ObiRope))] +public class CursorController : MonoBehaviour +{ + + ObiRopeCursor cursor; + ObiRope rope; + public float minLength = 0.1f; + public float speed = 1; + + // Use this for initialization + void Start () + { + rope = GetComponent(); + cursor = GetComponent(); + } + + // Update is called once per frame + void Update () + { + if (Input.GetKey(KeyCode.W) && cursor != null) + { + if (rope.restLength > minLength) + cursor.ChangeLength(rope.restLength - speed * Time.deltaTime); + } + + if (Input.GetKey(KeyCode.S) && cursor != null) + { + cursor.ChangeLength(rope.restLength + speed * Time.deltaTime); + } + + if (Input.GetKey(KeyCode.A)){ + rope.transform.Translate(Vector3.left * Time.deltaTime,Space.World); + } + + if (Input.GetKey(KeyCode.D)){ + rope.transform.Translate(Vector3.right * Time.deltaTime,Space.World); + } + + } +} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CursorController.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CursorController.cs.meta new file mode 100644 index 000000000..1ac896612 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/CursorController.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 83c7e82b3aac04e408bc8bfe9027c983 +labels: +- ObiRope +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/ExtendableGrapplingHook.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/ExtendableGrapplingHook.cs new file mode 100644 index 000000000..4cc82a645 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/ExtendableGrapplingHook.cs @@ -0,0 +1,213 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Obi; + +/** + * Sample component that shows how to use Obi Rope to create a grappling hook for a 2.5D game. + * 95% of the code is the grappling hook logic (user input, scene raycasting, launching, attaching the hook, etc) and parameter setup, + * to show how to use Obi completely at runtime. This might not be practical for real-world scenarios, + * but illustrates how to do it. + * + * Note that the choice of using actual rope simulation for grapple dynamics is debatable. Usually + * a simple spring works better both in terms of performance and controllability. + * + * If complex interaction is required with the scene, a purely geometry-based approach (ala Worms ninja rope) can + * be the right choice under certain circumstances. + */ +public class ExtendableGrapplingHook : MonoBehaviour +{ + + public ObiSolver solver; + public ObiCollider character; + + public Material material; + public ObiRopeSection section; + + [Range(0, 1)] + public float hookResolution = 0.5f; + public float hookExtendRetractSpeed = 2; + public float hookShootSpeed = 30; + public int particlePoolSize = 100; + + private ObiRope rope; + private ObiRopeBlueprint blueprint; + private ObiRopeExtrudedRenderer ropeRenderer; + + private ObiRopeCursor cursor; + + private RaycastHit hookAttachment; + + void Awake() + { + + // Create both the rope and the solver: + rope = gameObject.AddComponent(); + ropeRenderer = gameObject.AddComponent(); + ropeRenderer.section = section; + ropeRenderer.uvScale = new Vector2(1, 4); + ropeRenderer.normalizeV = false; + ropeRenderer.uvAnchor = 1; + rope.GetComponent().material = material; + + // Setup a blueprint for the rope: + blueprint = ScriptableObject.CreateInstance(); + blueprint.resolution = 0.5f; + blueprint.pooledParticles = particlePoolSize; + + // Tweak rope parameters: + rope.maxBending = 0.02f; + + // Add a cursor to be able to change rope length: + cursor = rope.gameObject.AddComponent(); + cursor.cursorMu = 0; + cursor.direction = true; + } + + private void OnDestroy() + { + DestroyImmediate(blueprint); + } + + /** + * Raycast against the scene to see if we can attach the hook to something. + */ + private void LaunchHook() + { + + // Get the mouse position in the scene, in the same XY plane as this object: + Vector3 mouse = Input.mousePosition; + mouse.z = transform.position.z - Camera.main.transform.position.z; + Vector3 mouseInScene = Camera.main.ScreenToWorldPoint(mouse); + + // Get a ray from the character to the mouse: + Ray ray = new Ray(transform.position, mouseInScene - transform.position); + + // Raycast to see what we hit: + if (Physics.Raycast(ray, out hookAttachment)) + { + // We actually hit something, so attach the hook! + StartCoroutine(AttachHook()); + } + + } + + private IEnumerator AttachHook() + { + yield return null; + + // Clear pin constraints: + var pinConstraints = rope.GetConstraintsByType(Oni.ConstraintType.Pin) as ObiConstraints; + pinConstraints.Clear(); + + Vector3 localHit = rope.transform.InverseTransformPoint(hookAttachment.point); + + // Procedurally generate the rope path (just a short segment, as we will extend it over time): + int filter = ObiUtils.MakeFilter(ObiUtils.CollideWithEverything, 0); + blueprint.path.Clear(); + blueprint.path.AddControlPoint(Vector3.zero, Vector3.zero, Vector3.zero, Vector3.up, 0.1f, 0.1f, 1, filter, Color.white, "Hook start"); + blueprint.path.AddControlPoint(localHit.normalized * 0.5f, Vector3.zero, Vector3.zero, Vector3.up, 0.1f, 0.1f, 1, filter, Color.white, "Hook end"); + blueprint.path.FlushEvents(); + + // Generate the particle representation of the rope (wait until it has finished): + yield return blueprint.Generate(); + + // Set the blueprint (this adds particles/constraints to the solver and starts simulating them). + rope.ropeBlueprint = blueprint; + + // wait one frame: + yield return null; + + rope.GetComponent().enabled = true; + + // set masses to zero, as we're going to override positions while we extend the rope: + for (int i = 0; i < rope.activeParticleCount; ++i) + solver.invMasses[rope.solverIndices[i]] = 0; + + float currentLength = 0; + + // while the last particle hasn't reached the hit, extend the rope: + while (true) + { + // calculate rope origin in solver space: + Vector3 origin = solver.transform.InverseTransformPoint(rope.transform.position); + + // update direction and distance to hook point: + Vector3 direction = hookAttachment.point - origin; + float distance = direction.magnitude; + direction.Normalize(); + + // increase length: + currentLength += hookShootSpeed * Time.deltaTime; + + // if we have reached the desired length, break the loop: + if (currentLength >= distance) + { + cursor.ChangeLength(distance); + break; + } + + // change rope length (clamp to distance between rope origin and hook to avoid overshoot) + cursor.ChangeLength(Mathf.Min(distance, currentLength)); + + // iterate over all particles in sequential order, placing them in a straight line while + // respecting element length: + float length = 0; + for (int i = 0; i < rope.elements.Count; ++i) + { + solver.positions[rope.elements[i].particle1] = origin + direction * length; + solver.positions[rope.elements[i].particle2] = origin + direction * (length + rope.elements[i].restLength); + length += rope.elements[i].restLength; + } + + // wait one frame: + yield return null; + } + + // restore masses so that the simulation takes over now that the rope is in place: + for (int i = 0; i < rope.activeParticleCount; ++i) + solver.invMasses[rope.solverIndices[i]] = 10; // 1/0.1 = 10 + + // Pin both ends of the rope (this enables two-way interaction between character and rope): + var batch = new ObiPinConstraintsBatch(); + batch.AddConstraint(rope.elements[0].particle1, character, transform.localPosition, Quaternion.identity, 0, 0, float.PositiveInfinity); + batch.AddConstraint(rope.elements[rope.elements.Count-1].particle2, hookAttachment.collider.GetComponent(), + hookAttachment.collider.transform.InverseTransformPoint(hookAttachment.point), Quaternion.identity, 0, 0, float.PositiveInfinity); + batch.activeConstraintCount = 2; + pinConstraints.AddBatch(batch); + + rope.SetConstraintsDirty(Oni.ConstraintType.Pin); + } + + private void DetachHook() + { + // Set the rope blueprint to null (automatically removes the previous blueprint from the solver, if any). + rope.ropeBlueprint = null; + rope.GetComponent().enabled = false; + } + + + void Update() + { + + if (Input.GetMouseButtonDown(0)) + { + if (!rope.isLoaded) + LaunchHook(); + else + DetachHook(); + } + + if (rope.isLoaded) + { + if (Input.GetKey(KeyCode.W)) + { + cursor.ChangeLength(rope.restLength - hookExtendRetractSpeed * Time.deltaTime); + } + if (Input.GetKey(KeyCode.S)) + { + cursor.ChangeLength(rope.restLength + hookExtendRetractSpeed * Time.deltaTime); + } + } + } +} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/ExtendableGrapplingHook.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/ExtendableGrapplingHook.cs.meta new file mode 100644 index 000000000..3347fd188 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/ExtendableGrapplingHook.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: b77478c97cefb4dec9cc85236f7c5fca +labels: +- ObiRope +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/GrapplingHook.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/GrapplingHook.cs new file mode 100644 index 000000000..0587a463f --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/GrapplingHook.cs @@ -0,0 +1,152 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Obi; + +/** + * Sample component that shows how to use Obi Rope to create a grappling hook for a 2.5D game. + * 95% of the code is the grappling hook logic (user input, scene raycasting, launching, attaching the hook, etc) and parameter setup, + * to show how to use Obi completely at runtime. This might not be practical for real-world scenarios, + * but illustrates how to do it. + * + * Note that the choice of using actual rope simulation for grapple dynamics is debatable. Usually + * a simple spring works better both in terms of performance and controllability. + * + * If complex interaction is required with the scene, a purely geometry-based approach (ala Worms ninja rope) can + * be the right choice under certain circumstances. + */ +public class GrapplingHook : MonoBehaviour +{ + + public ObiSolver solver; + public ObiCollider character; + public float hookExtendRetractSpeed = 2; + public Material material; + public ObiRopeSection section; + + private ObiRope rope; + private ObiRopeBlueprint blueprint; + private ObiRopeExtrudedRenderer ropeRenderer; + + private ObiRopeCursor cursor; + + private RaycastHit hookAttachment; + + void Awake() + { + + // Create both the rope and the solver: + rope = gameObject.AddComponent(); + ropeRenderer = gameObject.AddComponent(); + ropeRenderer.section = section; + ropeRenderer.uvScale = new Vector2(1, 4); + ropeRenderer.normalizeV = false; + ropeRenderer.uvAnchor = 1; + rope.GetComponent().material = material; + + // Setup a blueprint for the rope: + blueprint = ScriptableObject.CreateInstance(); + blueprint.resolution = 0.5f; + + // Tweak rope parameters: + rope.maxBending = 0.02f; + + // Add a cursor to be able to change rope length: + cursor = rope.gameObject.AddComponent(); + cursor.cursorMu = 0; + cursor.direction = true; + } + + private void OnDestroy() + { + DestroyImmediate(blueprint); + } + + /** + * Raycast against the scene to see if we can attach the hook to something. + */ + private void LaunchHook() + { + + // Get the mouse position in the scene, in the same XY plane as this object: + Vector3 mouse = Input.mousePosition; + mouse.z = transform.position.z - Camera.main.transform.position.z; + Vector3 mouseInScene = Camera.main.ScreenToWorldPoint(mouse); + + // Get a ray from the character to the mouse: + Ray ray = new Ray(transform.position, mouseInScene - transform.position); + + // Raycast to see what we hit: + if (Physics.Raycast(ray, out hookAttachment)) + { + // We actually hit something, so attach the hook! + StartCoroutine(AttachHook()); + } + + } + + private IEnumerator AttachHook() + { + yield return 0; + Vector3 localHit = rope.transform.InverseTransformPoint(hookAttachment.point); + + int filter = ObiUtils.MakeFilter(ObiUtils.CollideWithEverything,0); + + // Procedurally generate the rope path (a simple straight line): + blueprint.path.Clear(); + blueprint.path.AddControlPoint(Vector3.zero, -localHit.normalized, localHit.normalized, Vector3.up, 0.1f, 0.1f, 1, filter, Color.white, "Hook start"); + blueprint.path.AddControlPoint(localHit, -localHit.normalized, localHit.normalized, Vector3.up, 0.1f, 0.1f, 1, filter, Color.white, "Hook end"); + blueprint.path.FlushEvents(); + + // Generate the particle representation of the rope (wait until it has finished): + yield return blueprint.Generate(); + + // Set the blueprint (this adds particles/constraints to the solver and starts simulating them). + rope.ropeBlueprint = blueprint; + rope.GetComponent().enabled = true; + + // Pin both ends of the rope (this enables two-way interaction between character and rope): + var pinConstraints = rope.GetConstraintsByType(Oni.ConstraintType.Pin) as ObiConstraints; + pinConstraints.Clear(); + var batch = new ObiPinConstraintsBatch(); + batch.AddConstraint(rope.solverIndices[0], character, transform.localPosition, Quaternion.identity, 0, 0, float.PositiveInfinity); + batch.AddConstraint(rope.solverIndices[blueprint.activeParticleCount - 1], hookAttachment.collider.GetComponent(), + hookAttachment.collider.transform.InverseTransformPoint(hookAttachment.point), Quaternion.identity, 0, 0, float.PositiveInfinity); + batch.activeConstraintCount = 2; + pinConstraints.AddBatch(batch); + + rope.SetConstraintsDirty(Oni.ConstraintType.Pin); + } + + private void DetachHook() + { + // Set the rope blueprint to null (automatically removes the previous blueprint from the solver, if any). + rope.ropeBlueprint = null; + rope.GetComponent().enabled = false; + } + + + void Update() + { + + if (Input.GetMouseButtonDown(0)) + { + if (!rope.isLoaded) + LaunchHook(); + else + DetachHook(); + } + + if (rope.isLoaded) + { + if (Input.GetKey(KeyCode.W)) + { + cursor.ChangeLength(rope.restLength - hookExtendRetractSpeed * Time.deltaTime); + } + if (Input.GetKey(KeyCode.S)) + { + cursor.ChangeLength(rope.restLength + hookExtendRetractSpeed * Time.deltaTime); + } + } + } +} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/GrapplingHook.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/GrapplingHook.cs.meta new file mode 100644 index 000000000..f34f6918a --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/GrapplingHook.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 94f9aa141b5964f9f91dadcc1919618c +labels: +- ObiRope +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/HosePump.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/HosePump.cs new file mode 100644 index 000000000..94080fc91 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/HosePump.cs @@ -0,0 +1,83 @@ +using UnityEngine; +using Obi; + + +[RequireComponent(typeof(ObiRope))] +public class HosePump : MonoBehaviour { + + [Header("Bulge controls")] + public float pumpSpeed = 5; + public float bulgeFrequency = 3; + public float baseThickness = 0.04f; + public float bulgeThickness = 0.06f; + public Color bulgeColor = Color.cyan; + + [Header("Flow controls")] + public ParticleSystem waterEmitter; + public float flowSpeedMin = 0.5f; + public float flowSpeedMax = 7; + public float minEmitRate = 100; + public float maxEmitRate = 1000; + + private ObiRope rope; + public ObiPathSmoother smoother; + private float time = 0; + + void OnEnable() + { + rope = GetComponent(); + smoother = GetComponent(); + rope.OnBeginStep += Rope_OnBeginStep; + } + void OnDisable() + { + rope.OnBeginStep -= Rope_OnBeginStep; + } + + private void Rope_OnBeginStep(ObiActor actor, float stepTime) + { + time += stepTime * pumpSpeed; + + float distance = 0; + float sine = 0; + + // iterate over all particles, changing their radius and color based on a sine wave: + // (note this would not support resizable / cuttable ropes, to add support for that use rope.elements instead) + for (int i = 0; i < rope.solverIndices.Length; ++i) + { + int solverIndex = rope.solverIndices[i]; + + if (i > 0) + { + int previousIndex = rope.solverIndices[i - 1]; + distance += Vector3.Distance(rope.solver.positions[solverIndex],rope.solver.positions[previousIndex]); + } + + sine = Mathf.Max(0, Mathf.Sin(distance * bulgeFrequency - time)); + + rope.solver.principalRadii[solverIndex] = Vector3.one * Mathf.Lerp(baseThickness,bulgeThickness, sine); + rope.solver.colors[solverIndex] = Color.Lerp(Color.white, bulgeColor, sine); + } + + // change particle emission rate/speed based on sine wave at the last particle: + if (waterEmitter != null) + { + var main = waterEmitter.main; + main.startSpeed = Mathf.Lerp(flowSpeedMin,flowSpeedMax,sine); + + var emission = waterEmitter.emission; + emission.rateOverTime = Mathf.Lerp(minEmitRate, maxEmitRate, sine); + } + } + + public void LateUpdate() + { + if (smoother != null && waterEmitter != null) + { + ObiPathFrame section = smoother.GetSectionAt(1); + waterEmitter.transform.position = transform.TransformPoint(section.position); + waterEmitter.transform.rotation = transform.rotation * (Quaternion.LookRotation(section.tangent, section.binormal)); + } + } +} + diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/HosePump.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/HosePump.cs.meta new file mode 100644 index 000000000..0cbb3fc86 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/HosePump.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d71cdcf242c9b44fb874af7b7d8fd2b9 +timeCreated: 1518879675 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeBetweenTwoPoints.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeBetweenTwoPoints.cs new file mode 100644 index 000000000..c747f40ca --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeBetweenTwoPoints.cs @@ -0,0 +1,63 @@ +using UnityEngine; +using Obi; + +public class RopeBetweenTwoPoints : MonoBehaviour +{ + public Transform start; + public Transform end; + public ObiSolver solver; + + void Start() + { + // Generate rope synchronously: + Generate(); + } + + void Generate() + { + if (start != null && end != null) + { + // Adjust our transform: + transform.position = (start.position + end.position) / 2; + transform.rotation = Quaternion.FromToRotation(Vector3.right, end.position - start.position); + + // Calculate control point positions and tangent vector: + Vector3 startPositionLS = transform.InverseTransformPoint(start.position); + Vector3 endPositionLS = transform.InverseTransformPoint(end.position); + Vector3 tangentLS = (endPositionLS - startPositionLS).normalized; + + // Create the blueprint: + var blueprint = ScriptableObject.CreateInstance(); + + // Build the rope path: + int filter = ObiUtils.MakeFilter(ObiUtils.CollideWithEverything, 0); + blueprint.path.AddControlPoint(startPositionLS, -tangentLS, tangentLS, Vector3.up, 0.1f, 0.1f, 1, filter, Color.white, "start"); + blueprint.path.AddControlPoint(endPositionLS, -tangentLS, tangentLS, Vector3.up, 0.1f, 0.1f, 1, filter, Color.white, "end"); + blueprint.path.FlushEvents(); + + // Generate particles/constraints: + blueprint.GenerateImmediate(); + + // Add rope actor / renderer / attachment components: + var rope = gameObject.AddComponent(); + var ropeRenderer = gameObject.AddComponent(); + var attachment1 = gameObject.AddComponent(); + var attachment2 = gameObject.AddComponent(); + + // Load the default rope section for rendering: + ropeRenderer.section = Resources.Load("DefaultRopeSection"); + + // Set the blueprint: + rope.ropeBlueprint = blueprint; + + // Attach both ends: + attachment1.target = start; + attachment2.target = end; + attachment1.particleGroup = blueprint.groups[0]; + attachment2.particleGroup = blueprint.groups[1]; + + // Parent the actor under a solver to start the simulation: + transform.SetParent(solver.transform); + } + } +} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeBetweenTwoPoints.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeBetweenTwoPoints.cs.meta new file mode 100644 index 000000000..fe82b5414 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeBetweenTwoPoints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9eaa9e75d3f0a4e119decb19dce797be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeNet.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeNet.cs new file mode 100644 index 000000000..3be681236 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeNet.cs @@ -0,0 +1,129 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Obi; + +/** + * Sample component that procedurally generates a net using rigidbodies and ropes. + */ +public class RopeNet : MonoBehaviour +{ + public Material material; + + public Vector2Int resolution = new Vector2Int(5, 5); + public Vector2 size = new Vector2(0.5f, 0.5f); + public float nodeSize = 0.2f; + + void Awake() + { + // create an object containing both the solver and the updater: + GameObject solverObject = new GameObject("solver", typeof(ObiSolver), typeof(ObiFixedUpdater)); + ObiSolver solver = solverObject.GetComponent(); + ObiFixedUpdater updater = solverObject.GetComponent(); + updater.substeps = 2; + + // adjust solver settings: + solver.particleCollisionConstraintParameters.enabled = false; + solver.distanceConstraintParameters.iterations = 8; + solver.pinConstraintParameters.iterations = 4; + solver.parameters.sleepThreshold = 0.001f; + solver.PushSolverParameters(); + + // add the solver to the updater: + updater.solvers.Add(solver); + + // create the net (ropes + rigidbodies) + CreateNet(solver); + } + + private void CreateNet(ObiSolver solver) + { + ObiCollider[,] nodes = new ObiCollider[resolution.x + 1, resolution.y + 1]; + + for (int x = 0; x <= resolution.x; ++x) + { + for (int y = 0; y <= resolution.y; ++y) + { + GameObject rb = GameObject.CreatePrimitive(PrimitiveType.Cube); + rb.AddComponent(); + rb.transform.position = new Vector3(x, y, 0) * size; + rb.transform.localScale = new Vector3(nodeSize, nodeSize, nodeSize); + + nodes[x, y] = rb.AddComponent(); + nodes[x, y].Filter = 1; + } + } + + nodes[0, resolution.y].GetComponent().isKinematic = true; + nodes[resolution.x, resolution.y].GetComponent().isKinematic = true; + + for (int x = 0; x <= resolution.x; ++x) + { + for (int y = 0; y <= resolution.y; ++y) + { + Vector3 pos = new Vector3(x, y, 0) * size; + if (x < resolution.x) + { + Vector3 offset = new Vector3(nodeSize * 0.5f, 0, 0); + var rope = CreateRope(pos + offset, pos + new Vector3(size.x, 0, 0) - offset); + rope.transform.parent = solver.transform; + + PinRope(rope, nodes[x, y], nodes[x + 1, y], new Vector3(0.5f, 0, 0), -new Vector3(0.5f, 0, 0)); + } + + if (y < resolution.y) + { + Vector3 offset = new Vector3(0, nodeSize * 0.5f, 0); + var rope = CreateRope(pos + offset, pos + new Vector3(0, size.y, 0) - offset); + rope.transform.parent = solver.transform; + + PinRope(rope, nodes[x, y], nodes[x, y + 1], new Vector3(0, 0.5f, 0), -new Vector3(0, 0.5f, 0)); + } + } + } + } + + private void PinRope(ObiRope rope, ObiCollider bodyA, ObiCollider bodyB, Vector3 offsetA, Vector3 offsetB) + { + // Pin both ends of the rope (this enables two-way interaction between character and rope): + var pinConstraints = rope.GetConstraintsByType(Oni.ConstraintType.Pin) as ObiConstraints; + pinConstraints.Clear(); + var batch = new ObiPinConstraintsBatch(); + batch.AddConstraint(rope.solverIndices[0], bodyA, offsetA, Quaternion.identity, 0, 999, float.PositiveInfinity); + batch.AddConstraint(rope.solverIndices[rope.activeParticleCount - 1], bodyB, offsetB, Quaternion.identity, 0, 999, float.PositiveInfinity); + batch.activeConstraintCount = 2; + pinConstraints.AddBatch(batch); + } + + // Creates a rope between two points in world space: + private ObiRope CreateRope(Vector3 pointA, Vector3 pointB) + { + // Create a rope + var ropeObject = new GameObject("solver", typeof(ObiRope), typeof(ObiRopeLineRenderer)); + var rope = ropeObject.GetComponent(); + var ropeRenderer = ropeObject.GetComponent(); + rope.GetComponent().material = material; + rope.GetComponent().decimation = 0.1f; + ropeRenderer.uvScale = new Vector2(1, 5); + + // Setup a blueprint for the rope: + var blueprint = ScriptableObject.CreateInstance(); + blueprint.resolution = 0.15f; + blueprint.thickness = 0.02f; + blueprint.pooledParticles = 0; + + // convert both points to the rope's local space: + pointA = rope.transform.InverseTransformPoint(pointA); + pointB = rope.transform.InverseTransformPoint(pointB); + + // Procedurally generate the rope path (a simple straight line): + Vector3 direction = (pointB - pointA) * 0.25f; + blueprint.path.Clear(); + blueprint.path.AddControlPoint(pointA, -direction, direction, Vector3.up, 0.1f, 0.1f, 1, 1, Color.white, "A"); + blueprint.path.AddControlPoint(pointB, -direction, direction, Vector3.up, 0.1f, 0.1f, 1, 1, Color.white, "B"); + blueprint.path.FlushEvents(); + + rope.ropeBlueprint = blueprint; + return rope; + } +} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeNet.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeNet.cs.meta new file mode 100644 index 000000000..9bc85116d --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeNet.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 83e341aa1a9a14825ab84ad04cd5f44c +labels: +- ObiRope +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeSweepCut.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeSweepCut.cs new file mode 100644 index 000000000..80632c448 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeSweepCut.cs @@ -0,0 +1,127 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Obi; + +[RequireComponent(typeof(ObiRope))] +public class RopeSweepCut : MonoBehaviour +{ + + public Camera cam; + + ObiRope rope; + LineRenderer lineRenderer; + Vector3 cutStartPosition; + + private void Awake() + { + rope = GetComponent(); + + AddMouseLine(); + } + + private void OnDestroy() + { + DeleteMouseLine(); + } + + private void AddMouseLine() + { + GameObject line = new GameObject("Mouse Line"); + lineRenderer = line.AddComponent(); + lineRenderer.startWidth = 0.005f; + lineRenderer.endWidth = 0.005f; + lineRenderer.numCapVertices = 2; + lineRenderer.sharedMaterial = new Material(Shader.Find("Unlit/Color")); + lineRenderer.sharedMaterial.color = Color.cyan; + lineRenderer.enabled = false; + } + + private void DeleteMouseLine() + { + if (lineRenderer != null) + Destroy(lineRenderer.gameObject); + } + + private void LateUpdate() + { + // do nothing if we don't have a camera to cut from. + if (cam == null) return; + + // process user input and cut the rope if necessary. + ProcessInput(); + } + + /** + * Very simple mouse-based input. Not ideal for multitouch screens as it only supports one finger, though. + */ + private void ProcessInput() + { + // When the user clicks the mouse, start a line cut: + if (Input.GetMouseButtonDown(0)) + { + cutStartPosition = Input.mousePosition; + lineRenderer.SetPosition(0, cam.ScreenToWorldPoint(new Vector3(cutStartPosition.x, cutStartPosition.y, 0.5f))); + lineRenderer.enabled = true; + } + + if (lineRenderer.enabled) + lineRenderer.SetPosition(1, cam.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0.5f))); + + // When the user lifts the mouse, proceed to cut. + if (Input.GetMouseButtonUp(0)) + { + ScreenSpaceCut(cutStartPosition, Input.mousePosition); + lineRenderer.enabled = false; + } + } + + + /** + * Cuts the rope using a line segment, expressed in screen-space. + */ + private void ScreenSpaceCut(Vector2 lineStart, Vector2 lineEnd) + { + // keep track of whether the rope was cut or not. + bool cut = false; + + // iterate over all elements and test them for intersection with the line: + for (int i = 0; i < rope.elements.Count; ++i) + { + // project the both ends of the element to screen space. + Vector3 screenPos1 = cam.WorldToScreenPoint(rope.solver.positions[rope.elements[i].particle1]); + Vector3 screenPos2 = cam.WorldToScreenPoint(rope.solver.positions[rope.elements[i].particle2]); + + // test if there's an intersection: + if (SegmentSegmentIntersection(screenPos1, screenPos2, lineStart, lineEnd, out float r, out float s)) + { + cut = true; + rope.Tear(rope.elements[i]); + } + } + + // If the rope was cut at any point, rebuilt constraints: + if (cut) rope.RebuildConstraintsFromElements(); + } + + /** + * line segment 1 is AB = A+r(B-A) + * line segment 2 is CD = C+s(D-C) + * if they intesect, then A+r(B-A) = C+s(D-C), solving for r and s gives the formula below. + * If both r and s are in the 0,1 range, it meant the segments intersect. + */ + private bool SegmentSegmentIntersection(Vector2 A, Vector2 B, Vector2 C, Vector2 D, out float r, out float s) + { + float denom = (B.x - A.x) * (D.y - C.y) - (B.y - A.y) * (D.x - C.x); + float rNum = (A.y - C.y) * (D.x - C.x) - (A.x - C.x) * (D.y - C.y); + float sNum = (A.y - C.y) * (B.x - A.x) - (A.x - C.x) * (B.y - A.y); + + if (Mathf.Approximately(rNum, 0) || Mathf.Approximately(denom, 0)) + { r = -1; s = -1; return false; } + + r = rNum / denom; + s = sNum / denom; + + return (r >= 0 && r <=1 && s >= 0 && s <= 1); + } +} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeSweepCut.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeSweepCut.cs.meta new file mode 100644 index 000000000..ba9f07b7c --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeSweepCut.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 88cb6f64c607f46b3b0d7a30a99ed18b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeTenser.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeTenser.cs new file mode 100644 index 000000000..50312f401 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeTenser.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class RopeTenser : MonoBehaviour +{ + public float force = 10; + + // Update is called once per frame + void Update() + { + GetComponent().AddForce(Vector3.down * force); + } +} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeTenser.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeTenser.cs.meta new file mode 100644 index 000000000..6af8d62be --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeTenser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6a01ab42f187a43818168cd1cd11d3cf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeTensionColorizer.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeTensionColorizer.cs new file mode 100644 index 000000000..121f021ef --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeTensionColorizer.cs @@ -0,0 +1,56 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Obi; + +[RequireComponent(typeof(ObiRope))] +[RequireComponent(typeof(MeshRenderer))] +public class RopeTensionColorizer : MonoBehaviour +{ + public float minTension = 0; + public float maxTension = 0.2f; + public Color normalColor = Color.green; + public Color tensionColor = Color.red; + + public RopeTenser tenser; + public float tenserThreshold = -5; + public float tenserMax = 0.1f; + + private ObiRope rope; + private Material localMaterial; + + void Awake() + { + rope = GetComponent(); + localMaterial = GetComponent().material; + } + + private void OnDestroy() + { + Destroy(localMaterial); + } + + void Update() + { + if (tenser == null) + return; + + // Calculate how much past the threshold the tenser is, clamp the excess to 1 + float tenserFactor = Mathf.Min((tenser.transform.position.y - tenserThreshold) / tenserMax,1); + + // Check if the tenser is above the threshold, if so then check rope tension: + if (tenserFactor > 0) + { + // Calculate current tension as ratio between current and rest length, then subtract 1 to center it at zero. + float tension = rope.CalculateLength() / rope.restLength - 1; + + // Use tension to interpolate between colors: + float lerpFactor = (tension - minTension) / (maxTension - minTension); + localMaterial.color = Color.Lerp(normalColor, tensionColor, lerpFactor * tenserFactor); + } + else + { + localMaterial.color = normalColor; + } + } +} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeTensionColorizer.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeTensionColorizer.cs.meta new file mode 100644 index 000000000..c6f4f97c9 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RopeTensionColorizer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 51f5e34b2316b45c6bdf971b375b5f2e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RuntimeRopeGenerator.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RuntimeRopeGenerator.cs new file mode 100644 index 000000000..3eb3ba6ca --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RuntimeRopeGenerator.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections; +using UnityEngine; +using Obi; + +public class RuntimeRopeGenerator +{ + //private ObiRope rope; + //private ObiRopeCursor cursor; + private ObiSolver solver; + private int pinnedParticle = -1; + + /// + /// Creates a straight rope anchored to a transform at the top. + /// Transform may or may not move around and may or may not have a rigidbody. + /// When you call this the rope will appear in the scene and immediately interact with gravity and objects with ObiColliders. + /// Called from anywhere (main thread only) + /// + public IEnumerator MakeRope(Transform anchoredTo, Vector3 attachmentOffset, float ropeLength) + { + // create a new GameObject with the required components: a solver, a rope, and a curve. + // we also throw a cursor in to be able to change its length. + /*GameObject ropeObject = new GameObject("rope",typeof(ObiSolver), + typeof(ObiRope), + typeof(ObiCurve), + typeof (ObiRopeCursor)); + + // get references to all components: + rope = ropeObject.GetComponent(); + cursor = ropeObject.GetComponent(); + solver = ropeObject.GetComponent(); + ObiCurve path = ropeObject.GetComponent(); + + // set up component references (see ObiRopeHelper.cs) + rope.Solver = solver; + rope.ropePath = path; + //rope.section = Resources.Load("DefaultRopeSection"); + + // set path control points (duplicate end points, to set curvature as required by CatmullRom splines): + path.controlPoints.Clear(); + path.controlPoints.Add(new ObiCurve.ControlPoint(Vector3.zero,Vector3.up)); + path.controlPoints.Add(new ObiCurve.ControlPoint(Vector3.zero,Vector3.up)); + path.controlPoints.Add(new ObiCurve.ControlPoint(Vector3.down*ropeLength,Vector3.up)); + path.controlPoints.Add(new ObiCurve.ControlPoint(Vector3.down*ropeLength,Vector3.up)); + + rope.pooledParticles = 2000; + + // parent the rope to the anchor transform: + rope.transform.SetParent(anchoredTo,false); + rope.transform.localPosition = attachmentOffset; + + // generate particles/constraints and add them to the solver (see ObiRopeHelper.cs) + yield return rope.StartCoroutine(rope.GeneratePhysicRepresentationForMesh()); + rope.AddToSolver(null); + + // get the last particle in the rope at its rest state. + pinnedParticle = rope.UsedParticles-1; + + // add a tethers batch: + ObiTetherConstraintBatch tetherBatch = new ObiTetherConstraintBatch(true,false,0,1); + rope.TetherConstraints.AddBatch(tetherBatch); + //UpdateTethers(); + + // fix first particle in place (see http://obi.virtualmethodstudio.com/tutorials/scriptingparticles.html) + rope.Solver.invMasses[rope.particleIndices[0]] = rope.invMasses[0] = 0;*/ + yield return 0; + } + + /// + /// MakeRope and AddPendulum may NOT be called on the same frame. You must wait for the MakeRope coroutine to finish first, as creating a rope is an asynchronous operation. + /// Just adds a pendulum to the rope on the un-anchored end. + /// + public void AddPendulum(ObiCollider pendulum, Vector3 attachmentOffset) + { + // simply add a new pin constraint (see http://obi.virtualmethodstudio.com/tutorials/scriptingconstraints.html) + /*rope.PinConstraints.RemoveFromSolver(null); + ObiPinConstraintBatch batch = (ObiPinConstraintBatch)rope.PinConstraints.GetFirstBatch(); + batch.AddConstraint(pinnedParticle, pendulum, attachmentOffset,Quaternion.identity, 1); + rope.PinConstraints.AddToSolver(null);*/ + } + + /// + /// RemovePendulum and AddPendulum may be called on the same frame. + /// + public void RemovePendulum() + { + // simply remove all pin constraints (see http://obi.virtualmethodstudio.com/tutorials/scriptingconstraints.html) + /*rope.PinConstraints.RemoveFromSolver(null); + rope.PinConstraints.GetFirstBatch().Clear(); + rope.PinConstraints.AddToSolver(null);*/ + } + + /// + /// Like extending or retracting a winch. + /// + public void ChangeRopeLength(float changeAmount) + { + // the cursor will automatically add/remove/modify constraints and particles as needed to obtain the new length. + //cursor.ChangeLength(rope.RestLength + changeAmount); + //UpdateTethers(); + } + + private void UpdateTethers() + { + /*rope.TetherConstraints.RemoveFromSolver(null); + ObiTetherConstraintBatch batch = (ObiTetherConstraintBatch)rope.TetherConstraints.GetFirstBatch(); + batch.Clear(); + + ObiDistanceConstraintBatch dbatch = rope.DistanceConstraints.GetFirstBatch(); + for (int i = 0; i < dbatch.ConstraintCount; ++i) + batch.AddConstraint(0,dbatch.springIndices[i*2+1], rope.InterparticleDistance*i, 1, 1); + + batch.Cook(); + rope.TetherConstraints.AddToSolver(null);*/ + } +} + + diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RuntimeRopeGenerator.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RuntimeRopeGenerator.cs.meta new file mode 100644 index 000000000..b38eacc14 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RuntimeRopeGenerator.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 0854563331ce443fa9b17a143c084806 +labels: +- ObiRope +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RuntimeRopeGeneratorUse.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RuntimeRopeGeneratorUse.cs new file mode 100644 index 000000000..cdb04778e --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RuntimeRopeGeneratorUse.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections; +using UnityEngine; +using Obi; + +public class RuntimeRopeGeneratorUse : MonoBehaviour +{ + public ObiCollider pendulum; + RuntimeRopeGenerator rg; + + public IEnumerator Start() + { + rg = new RuntimeRopeGenerator(); + + // Create a rope: + yield return rg.MakeRope(transform,Vector3.zero,1); + + // Add a pendulum (you should adjust the attachment point depending on your particular pendulum object) + rg.AddPendulum(pendulum,Vector3.up*0.5f); + } + + public void Update(){ + + if (Input.GetKey(KeyCode.W)){ + rg.ChangeRopeLength(- Time.deltaTime); + } + + if (Input.GetKey(KeyCode.S)){ + rg.ChangeRopeLength( Time.deltaTime); + } + + } +} + + diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RuntimeRopeGeneratorUse.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RuntimeRopeGeneratorUse.cs.meta new file mode 100644 index 000000000..84a66090a --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/RuntimeRopeGeneratorUse.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 5e7b946ba720c495a8ee7c1d3e903063 +labels: +- ObiRope +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/SnakeController.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/SnakeController.cs new file mode 100644 index 000000000..a3c89e008 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/SnakeController.cs @@ -0,0 +1,122 @@ +using UnityEngine; +using Obi; + +public class SnakeController : MonoBehaviour +{ + public Transform headReferenceFrame; + public float headSpeed = 20; + public float upSpeed = 40; + public float slitherSpeed = 10; + + private ObiRope rope; + private ObiSolver solver; + private float[] traction; + private Vector3[] surfaceNormal; + + private void Start() + { + rope = GetComponent(); + solver = rope.solver; + + // initialize traction array: + traction = new float[rope.activeParticleCount]; + surfaceNormal = new Vector3[rope.activeParticleCount]; + + // subscribe to solver events (to update surface information) + solver.OnBeginStep += ResetSurfaceInfo; + solver.OnCollision += AnalyzeContacts; + solver.OnParticleCollision += AnalyzeContacts; + } + + + private void OnDestroy() + { + solver.OnBeginStep -= ResetSurfaceInfo; + solver.OnCollision -= AnalyzeContacts; + solver.OnParticleCollision -= AnalyzeContacts; + } + + private void ResetSurfaceInfo(ObiSolver s, float stepTime) + { + // reset surface info: + for (int i = 0; i < traction.Length; ++i) + { + traction[i] = 0; + surfaceNormal[i] = Vector3.zero; + } + } + + private void AnalyzeContacts(object sender, ObiSolver.ObiCollisionEventArgs e) + { + // iterate trough all contacts: + for (int i = 0; i < e.contacts.Count; ++i) + { + var contact = e.contacts.Data[i]; + if (contact.distance < 0.005f) + { + int simplexIndex = solver.simplices[contact.bodyA]; + var particleInActor = solver.particleToActor[simplexIndex]; + + if (particleInActor.actor == rope) + { + // using 1 here, could calculate a traction value based on the type of terrain, friction, etc. + traction[particleInActor.indexInActor] = 1; + + // accumulate surface normal: + surfaceNormal[particleInActor.indexInActor] += (Vector3)contact.normal; + } + } + } + } + + public void Update() + { + if (Input.GetKey(KeyCode.J)) + { + for (int i = 1; i < rope.activeParticleCount; ++i) + { + int solverIndex = rope.solverIndices[i]; + int prevSolverIndex = rope.solverIndices[i - 1]; + + // direction from current particle to previous one, projected on the contact surface: + Vector4 dir = Vector3.ProjectOnPlane(solver.positions[prevSolverIndex] - solver.positions[solverIndex], surfaceNormal[i]).normalized; + + // move in that direction: + solver.velocities[solverIndex] += dir * traction[i] * slitherSpeed * Time.deltaTime; + } + } + + int headIndex = rope.solverIndices[0]; + + if (headReferenceFrame != null) + { + Vector3 direction = Vector3.zero; + + // Determine movement direction: + if (Input.GetKey(KeyCode.W)) + { + direction += headReferenceFrame.forward * headSpeed; + } + if (Input.GetKey(KeyCode.A)) + { + direction += -headReferenceFrame.right * headSpeed; + } + if (Input.GetKey(KeyCode.S)) + { + direction += -headReferenceFrame.forward * headSpeed; + } + if (Input.GetKey(KeyCode.D)) + { + direction += headReferenceFrame.right * headSpeed; + } + + // flatten out the direction so that it's parallel to the ground: + direction.y = 0; + + solver.velocities[headIndex] += (Vector4)direction * Time.deltaTime; + } + + if (Input.GetKey(KeyCode.Space)) + solver.velocities[headIndex] += (Vector4)Vector3.up * Time.deltaTime * upSpeed; + } +} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/SnakeController.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/SnakeController.cs.meta new file mode 100644 index 000000000..1a1733556 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/SnakeController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e5d46d2f0b9f9496f9ed59231aa6982d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/SpiralCurve.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/SpiralCurve.cs new file mode 100644 index 000000000..ae350d1bd --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/SpiralCurve.cs @@ -0,0 +1,50 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Obi; + +[ExecuteInEditMode] +public class SpiralCurve : MonoBehaviour { + + public float radius = 0.25f; + public float radialStep = 0.8f; + public float heightStep = 0.04f; + public float points = 30; + + public float rotationalMass = 1; + public float thickness = 1; + + void Awake () + { + Generate(); + } + + public void Generate() + { + var rod = GetComponent(); + if (rod == null) return; + + var blueprint = rod.sourceBlueprint as ObiRopeBlueprintBase; + if (blueprint == null) return; + + blueprint.path.Clear(); + + float ang = 0; + float height = 0; + + for (int i = 0; i < points; ++i) + { + Vector3 point = new Vector3(Mathf.Cos(ang) * radius, height, Mathf.Sin(ang) * radius); + + // optimal handle length for circle approximation: 4/3 tan(pi/(2n)) + Vector3 tangent = new Vector3(-point.z, heightStep, point.x).normalized * (4.0f / 3.0f) * Mathf.Tan(radialStep / 4.0f) * radius; + + blueprint.path.AddControlPoint(point, -tangent, tangent, Vector3.up, 1, rotationalMass, thickness, 1, Color.white, "control point " + i); + ang += radialStep; + height += heightStep; + } + + blueprint.path.FlushEvents(); + } + +} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/SpiralCurve.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/SpiralCurve.cs.meta new file mode 100644 index 000000000..2eb51c90b --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/SpiralCurve.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: e76488b5e11ef47ba9c0746db5c47115 +labels: +- ObiRope +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/WrapRopeGameController.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/WrapRopeGameController.cs new file mode 100644 index 000000000..3f51fcca5 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/WrapRopeGameController.cs @@ -0,0 +1,72 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Events; +using Obi; + +[RequireComponent(typeof(ObiSolver))] +public class WrapRopeGameController : MonoBehaviour +{ + + ObiSolver solver; + + public Wrappable[] wrappables; + public UnityEvent onFinish = new UnityEvent(); + + private void Awake() + { + solver = GetComponent(); + } + + // Start is called before the first frame update + void OnEnable() + { + solver.OnCollision += Solver_OnCollision; + } + + private void OnDisable() + { + solver.OnCollision -= Solver_OnCollision; + } + + private void Update() + { + bool allWrapped = true; + + // Test our win condition: all pegs must be wrapped. + foreach (var wrappable in wrappables) + { + if (!wrappable.IsWrapped()) + { + allWrapped = false; + break; + } + } + + if (allWrapped) + onFinish.Invoke(); + } + + private void Solver_OnCollision(ObiSolver s, ObiSolver.ObiCollisionEventArgs e) + { + // reset to unwrapped state: + foreach (var wrappable in wrappables) + wrappable.Reset(); + + var world = ObiColliderWorld.GetInstance(); + foreach (Oni.Contact contact in e.contacts) + { + // look for actual contacts only: + if (contact.distance < 0.025f) + { + var col = world.colliderHandles[contact.bodyB].owner; + if (col != null) + { + var wrappable = col.GetComponent(); + if (wrappable != null) + wrappable.SetWrapped(); + } + } + } + } +} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/WrapRopeGameController.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/WrapRopeGameController.cs.meta new file mode 100644 index 000000000..a1437745f --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/WrapRopeGameController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 92b1832c67f564e9fa43a180598111e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/WrapRopePlayerController.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/WrapRopePlayerController.cs new file mode 100644 index 000000000..306142cfd --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/WrapRopePlayerController.cs @@ -0,0 +1,42 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +[RequireComponent(typeof(Rigidbody))] +public class WrapRopePlayerController : MonoBehaviour +{ + public float acceleration = 50; + Rigidbody rb; + + void Awake() + { + rb = GetComponent(); + } + + // Update is called once per frame + void Update() + { + Vector3 direction = Vector3.zero; + + // Determine movement direction: + if (Input.GetKey(KeyCode.W)) + { + direction += Vector3.up * acceleration; + } + if (Input.GetKey(KeyCode.A)) + { + direction += Vector3.left * acceleration; + } + if (Input.GetKey(KeyCode.S)) + { + direction += Vector3.down * acceleration; + } + if (Input.GetKey(KeyCode.D)) + { + direction += Vector3.right * acceleration; + } + + rb.AddForce(direction.normalized * acceleration, ForceMode.Acceleration); + } + +} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/WrapRopePlayerController.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/WrapRopePlayerController.cs.meta new file mode 100644 index 000000000..a819f0c7e --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/WrapRopePlayerController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fdf58ad80e1cd4860aa12e8da0aa833c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/Wrappable.cs b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/Wrappable.cs new file mode 100644 index 000000000..4ed95690d --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/Wrappable.cs @@ -0,0 +1,41 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Wrappable : MonoBehaviour +{ + + private bool wrapped = false; + public Color normalColor = new Color(0.2f,0.2f,0.8f); + public Color wrappedColor = new Color(0.9f, 0.9f, 0.2f); + + Material localMaterial; + + public void Awake() + { + localMaterial = GetComponent().material; + } + + public void OnDestroy() + { + Destroy(localMaterial); + } + + public void Reset() + { + wrapped = false; + localMaterial.color = normalColor; + } + + public void SetWrapped() + { + wrapped = true; + localMaterial.color = wrappedColor; + } + + public bool IsWrapped() + { + return wrapped; + } + +} diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/Wrappable.cs.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/Wrappable.cs.meta new file mode 100644 index 000000000..1982e779b --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Scripts/Wrappable.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 39f0f8f454a2049f3af7bad3dda0481e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures.meta new file mode 100644 index 000000000..01e9927f1 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 538d3ea4a9f2b42c0b88206c340f4ab4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rod.png b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rod.png new file mode 100644 index 000000000..f33a031f9 Binary files /dev/null and b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rod.png differ diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rod.png.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rod.png.meta new file mode 100644 index 000000000..4dbd893f9 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rod.png.meta @@ -0,0 +1,123 @@ +fileFormatVersion: 2 +guid: 49dd156e3b48f41f791e9d75107f6b38 +labels: +- ObiRope +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: 10 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 1 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_NRM.png b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_NRM.png new file mode 100644 index 000000000..5979b81d7 Binary files /dev/null and b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_NRM.png differ diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_NRM.png.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_NRM.png.meta new file mode 100644 index 000000000..d7fc89aaf --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_NRM.png.meta @@ -0,0 +1,90 @@ +fileFormatVersion: 2 +guid: 1020609c9ac9f4a14a078c1afd37a75e +labels: +- ObiRope +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 1 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 1 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_OCC.png b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_OCC.png new file mode 100644 index 000000000..cb35a1ec3 Binary files /dev/null and b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_OCC.png differ diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_OCC.png.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_OCC.png.meta new file mode 100644 index 000000000..fc28463de --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_OCC.png.meta @@ -0,0 +1,90 @@ +fileFormatVersion: 2 +guid: 665db389e8f1e42acb689114a261cb06 +labels: +- ObiRope +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_red.png b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_red.png new file mode 100644 index 000000000..f900cb956 Binary files /dev/null and b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_red.png differ diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_red.png.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_red.png.meta new file mode 100644 index 000000000..63234a1da --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/Rope_red.png.meta @@ -0,0 +1,134 @@ +fileFormatVersion: 2 +guid: 61461ee4d289a4bc384e839abcf74473 +labels: +- ObiRope +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/cylinder_NRM.png b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/cylinder_NRM.png new file mode 100644 index 000000000..90ac43dcf Binary files /dev/null and b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/cylinder_NRM.png differ diff --git a/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/cylinder_NRM.png.meta b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/cylinder_NRM.png.meta new file mode 100644 index 000000000..194c30a16 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SampleResources/Textures/cylinder_NRM.png.meta @@ -0,0 +1,121 @@ +fileFormatVersion: 2 +guid: 7a6d7fa80b2a444089c9b87ba93966c7 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 1 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/Snake.unity b/Assets/Obi/Samples/RopeAndRod/Snake.unity new file mode 100644 index 000000000..fc7ad30cd --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/Snake.unity @@ -0,0 +1,2008 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: d0161a62cd1a2ca4c992ce3c509e4615, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &79931598 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 79931600} + - component: {fileID: 79931599} + m_Layer: 0 + m_Name: BurstCollisionWorld + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &79931599 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 79931598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1a161c4294214a4fbcb7e9e94800494, type: 3} + m_Name: + m_EditorClassIdentifier: + cellSpans: + m_AlignBytes: 16 +--- !u!4 &79931600 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 79931598} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &283647873 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 283647877} + - component: {fileID: 283647876} + - component: {fileID: 283647875} + - component: {fileID: 283647874} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &283647874 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283647873} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &283647875 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283647873} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &283647876 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283647873} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_UseReflectionProbes: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &283647877 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 283647873} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1660007474} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &421764872 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a0a5f9e13fa7c47f78547e54896609da, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459882} + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459883} + m_SourcePrefab: {fileID: 100100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!1 &506459881 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + m_PrefabInstance: {fileID: 421764872} + m_PrefabAsset: {fileID: 0} +--- !u!64 &506459882 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 4300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!114 &506459883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 11400000, guid: c73079cca10924a80871331c66b4ad4b, type: 2} + filter: -65535 + m_SourceCollider: {fileID: 506459882} + m_DistanceField: {fileID: 0} +--- !u!1 &667163001 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 667163002} + - component: {fileID: 667163005} + - component: {fileID: 667163004} + - component: {fileID: 667163003} + - component: {fileID: 667163006} + m_Layer: 0 + m_Name: Cylinder (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &667163002 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 667163001} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0.7071068, w: 0.7071068} + m_LocalPosition: {x: -0.5, y: 1.5, z: 0} + m_LocalScale: {x: 0.25, y: 1.5, z: 0.25} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 907464232} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90} +--- !u!136 &667163003 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 667163001} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5000001 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} +--- !u!23 &667163004 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 667163001} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &667163005 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 667163001} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &667163006 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 667163001} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 11400000, guid: 4c46db05afff546f8a9f9333946e9882, type: 2} + filter: -65535 + m_SourceCollider: {fileID: 667163003} + m_DistanceField: {fileID: 0} +--- !u!43 &827334315 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &907464231 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 907464232} + m_Layer: 0 + m_Name: BambooStructure + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &907464232 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 907464231} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1195412986} + - {fileID: 667163002} + - {fileID: 1298991847} + - {fileID: 2086948286} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1002464891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002464896} + - component: {fileID: 1002464895} + - component: {fileID: 1002464893} + - component: {fileID: 1002464892} + - component: {fileID: 1002464897} + - component: {fileID: 1002464894} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1002464892 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!124 &1002464893 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!114 &1002464894 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7118f3a432315464297cab517f322eca, type: 3} + m_Name: + m_EditorClassIdentifier: + target: {fileID: 1788698695} + extrapolation: 1 + smoothness: 0.995 + linearSpeed: 1 + rotationalSpeed: 1 + distanceFromTarget: 3 +--- !u!20 &1002464895 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 75 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1002464896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + serializedVersion: 2 + m_LocalRotation: {x: 0.15760262, y: 0, z: 0, w: 0.98750263} + m_LocalPosition: {x: 0, y: 3.84, z: -7.48} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1002464897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62e83a599724f45a4aa337d74764e572, type: 3} + m_Name: + m_EditorClassIdentifier: + skin: {fileID: 11400000, guid: b90d3c214c99743b0865fc0e0d1f1a15, type: 2} + threadColor: {r: 0, g: 1, b: 1, a: 1} + taskColor: {r: 0, g: 1, b: 0, a: 1} + parallelTaskColor: {r: 1, g: 0.8, b: 0.2, a: 1} + renderTaskColor: {r: 0.2, g: 0.7, b: 1, a: 1} + defaultTaskColor: {r: 1, g: 0.5, b: 0.2, a: 1} + showPercentages: 0 + profileThrottle: 30 +--- !u!1 &1175446144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1175446146} + - component: {fileID: 1175446145} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1175446145 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.03 + m_NormalBias: 0.01 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1175446146 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + serializedVersion: 2 + m_LocalRotation: {x: 0.41595167, y: -0.26247028, z: 0.26683384, w: 0.82879025} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 56.052002, y: -22.431002, z: 23.642} +--- !u!1 &1195412985 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1195412986} + - component: {fileID: 1195412989} + - component: {fileID: 1195412988} + - component: {fileID: 1195412987} + - component: {fileID: 1195412990} + m_Layer: 0 + m_Name: Cylinder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1195412986 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1195412985} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.5, y: 1.425, z: 0} + m_LocalScale: {x: 0.25, y: 1.5, z: 0.25} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 907464232} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!136 &1195412987 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1195412985} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5000001 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} +--- !u!23 &1195412988 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1195412985} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1195412989 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1195412985} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &1195412990 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1195412985} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 11400000, guid: 4c46db05afff546f8a9f9333946e9882, type: 2} + filter: -65535 + m_SourceCollider: {fileID: 1195412987} + m_DistanceField: {fileID: 0} +--- !u!1 &1298991846 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1298991847} + - component: {fileID: 1298991850} + - component: {fileID: 1298991849} + - component: {fileID: 1298991848} + - component: {fileID: 1298991851} + m_Layer: 0 + m_Name: Cylinder (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1298991847 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1298991846} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 2.6, z: 0} + m_LocalScale: {x: 0.25, y: 1.6327499, z: 0.25} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 907464232} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!136 &1298991848 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1298991846} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5000001 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} +--- !u!23 &1298991849 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1298991846} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1298991850 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1298991846} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &1298991851 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1298991846} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 11400000, guid: 4c46db05afff546f8a9f9333946e9882, type: 2} + filter: -65535 + m_SourceCollider: {fileID: 1298991848} + m_DistanceField: {fileID: 0} +--- !u!1 &1346965641 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1346965650} + - component: {fileID: 1346965645} + - component: {fileID: 1346965644} + - component: {fileID: 1346965642} + - component: {fileID: 1346965646} + - component: {fileID: 1346965643} + - component: {fileID: 1346965647} + m_Layer: 10 + m_Name: Snake + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1346965642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000490000004a0000004b0000004c0000004d0000004e0000004f000000500000005100000052000000530000005400000055000000560000005700000058000000590000005a0000005b0000005c0000005d0000005e0000005f000000600000006100000062000000630000006400000065000000660000006700000068000000690000006a0000006b0000006c0000006d0000006e0000006f000000700000007100000072000000730000007400000075000000760000007700000078000000790000007a0000007b0000007c0000007d0000007e000000 + m_CollisionMaterial: {fileID: 11400000, guid: dbf5bc78c024b4724bd8b2aaca1af0c2, type: 2} + m_SurfaceCollisions: 0 + m_SelfCollisions: 1 + restLength_: 4.1143684 + elements: + - particle1: 0 + particle2: 1 + restLength: 0.1524441 + constraintForce: 0 + tearResistance: 1 + - particle1: 1 + particle2: 2 + restLength: 0.15290284 + constraintForce: 0 + tearResistance: 1 + - particle1: 2 + particle2: 3 + restLength: 0.15289813 + constraintForce: 0 + tearResistance: 1 + - particle1: 3 + particle2: 4 + restLength: 0.15299127 + constraintForce: 0 + tearResistance: 1 + - particle1: 4 + particle2: 5 + restLength: 0.1531161 + constraintForce: 0 + tearResistance: 1 + - particle1: 5 + particle2: 6 + restLength: 0.15290153 + constraintForce: 0 + tearResistance: 1 + - particle1: 6 + particle2: 7 + restLength: 0.16036844 + constraintForce: 0 + tearResistance: 1 + - particle1: 7 + particle2: 8 + restLength: 0.15998638 + constraintForce: 0 + tearResistance: 1 + - particle1: 8 + particle2: 9 + restLength: 0.15956938 + constraintForce: 0 + tearResistance: 1 + - particle1: 9 + particle2: 10 + restLength: 0.15977395 + constraintForce: 0 + tearResistance: 1 + - particle1: 10 + particle2: 11 + restLength: 0.16026509 + constraintForce: 0 + tearResistance: 1 + - particle1: 11 + particle2: 12 + restLength: 0.15994787 + constraintForce: 0 + tearResistance: 1 + - particle1: 12 + particle2: 13 + restLength: 0.15964794 + constraintForce: 0 + tearResistance: 1 + - particle1: 13 + particle2: 14 + restLength: 0.15938759 + constraintForce: 0 + tearResistance: 1 + - particle1: 14 + particle2: 15 + restLength: 0.16015792 + constraintForce: 0 + tearResistance: 1 + - particle1: 15 + particle2: 16 + restLength: 0.16017342 + constraintForce: 0 + tearResistance: 1 + - particle1: 16 + particle2: 17 + restLength: 0.16003728 + constraintForce: 0 + tearResistance: 1 + - particle1: 17 + particle2: 18 + restLength: 0.15995121 + constraintForce: 0 + tearResistance: 1 + - particle1: 18 + particle2: 19 + restLength: 0.15990973 + constraintForce: 0 + tearResistance: 1 + - particle1: 19 + particle2: 20 + restLength: 0.15987158 + constraintForce: 0 + tearResistance: 1 + - particle1: 20 + particle2: 21 + restLength: 0.1597457 + constraintForce: 0 + tearResistance: 1 + - particle1: 21 + particle2: 22 + restLength: 0.15932155 + constraintForce: 0 + tearResistance: 1 + - particle1: 22 + particle2: 23 + restLength: 0.1603353 + constraintForce: 0 + tearResistance: 1 + - particle1: 23 + particle2: 24 + restLength: 0.16002035 + constraintForce: 0 + tearResistance: 1 + - particle1: 24 + particle2: 25 + restLength: 0.16021276 + constraintForce: 0 + tearResistance: 1 + - particle1: 25 + particle2: 26 + restLength: 0.15843129 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: 7cc7ef3c151f24a00a1fe338fa5f827c, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0.005 + _maxBending: 0.04 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &1346965643 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 3} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!23 &1346965644 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: dbda366779bfb4406b2c60e70986d306, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1346965645 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Mesh: {fileID: 827334315} +--- !u!114 &1346965646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 2 + twist: 0 +--- !u!114 &1346965647 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5d46d2f0b9f9496f9ed59231aa6982d, type: 3} + m_Name: + m_EditorClassIdentifier: + headReferenceFrame: {fileID: 1002464896} + headSpeed: 20 + upSpeed: 40 + slitherSpeed: 10 +--- !u!4 &1346965650 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1346965641} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068} + m_LocalPosition: {x: -0.9, y: 0.107, z: 0.53} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!1 &1660007473 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1660007474} + - component: {fileID: 1660007476} + - component: {fileID: 1660007475} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1660007474 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1660007473} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 283647877} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 108.20001, y: 39.100006} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1660007475 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1660007473} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Use WASD to orient the head. Use Space to lift up the head. Press J to + accelerate. +--- !u!222 &1660007476 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1660007473} + m_CullTransparentMesh: 0 +--- !u!1 &1788698691 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1788698695} + - component: {fileID: 1788698694} + - component: {fileID: 1788698693} + - component: {fileID: 1788698692} + m_Layer: 0 + m_Name: Cube (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1788698692 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1788698691} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 93cd44c04a2944349b4fe311545b7e05, type: 3} + m_Name: + m_EditorClassIdentifier: + smoother: {fileID: 1346965646} + m: 0 +--- !u!23 &1788698693 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1788698691} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e78e1b735e05b4dee88b279cb6997001, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1788698694 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1788698691} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1788698695 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1788698691} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.866, y: 0.164, z: 0.715} + m_LocalScale: {x: 0.19320247, y: 0.19320247, z: 0.36036125} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2086948285 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2086948286} + - component: {fileID: 2086948290} + - component: {fileID: 2086948289} + - component: {fileID: 2086948288} + - component: {fileID: 2086948287} + m_Layer: 0 + m_Name: Cylinder (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2086948286 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086948285} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0.7071068, w: 0.7071068} + m_LocalPosition: {x: -0.5, y: 2.5, z: 0} + m_LocalScale: {x: 0.25, y: 1.5, z: 0.25} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 907464232} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90} +--- !u!114 &2086948287 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086948285} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 11400000, guid: 4c46db05afff546f8a9f9333946e9882, type: 2} + filter: -65535 + m_SourceCollider: {fileID: 2086948288} + m_DistanceField: {fileID: 0} +--- !u!136 &2086948288 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086948285} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5000001 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} +--- !u!23 &2086948289 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086948285} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2086948290 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086948285} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2102841794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2102841797} + - component: {fileID: 2102841796} + - component: {fileID: 2102841795} + m_Layer: 0 + m_Name: Obi Solver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2102841795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d9704d540ac448439a425526f6b2986, type: 3} + m_Name: + m_EditorClassIdentifier: + solvers: + - {fileID: 2102841796} + substeps: 4 +--- !u!114 &2102841796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d174fab52f0c4b8399f25d5c3ea524c, type: 3} + m_Name: + m_EditorClassIdentifier: + simulateWhenInvisible: 1 + m_Backend: 1 + parameters: + mode: 0 + interpolation: 0 + gravity: {x: 0, y: -5, z: 0} + damping: 0.7 + maxAnisotropy: 3 + sleepThreshold: 0.001 + collisionMargin: 0.02 + maxDepenetration: 5 + continuousCollisionDetection: 1 + shockPropagation: 0 + surfaceCollisionIterations: 8 + surfaceCollisionTolerance: 0.005 + gravity: {x: 0, y: -5, z: 0} + gravitySpace: 1 + worldLinearInertiaScale: 0 + worldAngularInertiaScale: 0 + distanceConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 1 + bendingConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 1 + particleCollisionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + particleFrictionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + collisionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + frictionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + skinConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + volumeConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + shapeMatchingConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + tetherConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + pinConstraintParameters: + evaluationOrder: 1 + iterations: 10 + SORFactor: 1 + enabled: 0 + stitchConstraintParameters: + evaluationOrder: 1 + iterations: 5 + SORFactor: 1 + enabled: 0 + densityConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + stretchShearConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + bendTwistConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + chainConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 +--- !u!4 &2102841797 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1346965650} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1002464896} + - {fileID: 421764872} + - {fileID: 1175446146} + - {fileID: 2102841797} + - {fileID: 283647877} + - {fileID: 1788698695} + - {fileID: 907464232} + - {fileID: 79931600} diff --git a/Assets/Obi/Samples/RopeAndRod/Snake.unity.meta b/Assets/Obi/Samples/RopeAndRod/Snake.unity.meta new file mode 100644 index 000000000..b6344c063 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/Snake.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 20d1d83e4d4bd45e09d7f7c50d3b48bd +labels: +- ObiRope +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SnakeSettings.lighting b/Assets/Obi/Samples/RopeAndRod/SnakeSettings.lighting new file mode 100644 index 000000000..83d381467 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SnakeSettings.lighting @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SnakeSettings + serializedVersion: 10 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_LightmapPackingMode: 1 + m_LightmapPackingMethod: 0 + m_XAtlasPackingAttempts: 16384 + m_XAtlasBruteForce: 0 + m_XAtlasBlockAlign: 0 + m_XAtlasRepackUnderutilizedLightmaps: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/SnakeSettings.lighting.meta b/Assets/Obi/Samples/RopeAndRod/SnakeSettings.lighting.meta new file mode 100644 index 000000000..a96eee49c --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SnakeSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d0161a62cd1a2ca4c992ce3c509e4615 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SpringRod.unity b/Assets/Obi/Samples/RopeAndRod/SpringRod.unity new file mode 100644 index 000000000..f5ed5ebc0 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SpringRod.unity @@ -0,0 +1,1641 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: f801ec60d167b9b478060cf664dbe1aa, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &421764872 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalScale.x + value: 1.2 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalScale.y + value: 1.2 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalScale.z + value: 1.2 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a0a5f9e13fa7c47f78547e54896609da, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459882} + - targetCorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + insertIndex: -1 + addedObject: {fileID: 506459883} + m_SourcePrefab: {fileID: 100100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!1 &506459881 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 100000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} + m_PrefabInstance: {fileID: 421764872} + m_PrefabAsset: {fileID: 0} +--- !u!64 &506459882 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 4300000, guid: 64df75de10b494f109b074d28a8eade0, type: 3} +--- !u!114 &506459883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506459881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 11400000, guid: d368f2c47473d4bfb8dd9f08073cb403, type: 2} + filter: -65535 + m_SourceCollider: {fileID: 506459882} + m_DistanceField: {fileID: 0} +--- !u!1 &1002464891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002464896} + - component: {fileID: 1002464895} + - component: {fileID: 1002464893} + - component: {fileID: 1002464892} + - component: {fileID: 1002464897} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1002464892 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!124 &1002464893 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 +--- !u!20 &1002464895 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 75 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1002464896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + serializedVersion: 2 + m_LocalRotation: {x: 0.15760262, y: 0, z: 0, w: 0.98750263} + m_LocalPosition: {x: 0, y: 4.7, z: -5.62} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1002464897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002464891} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62e83a599724f45a4aa337d74764e572, type: 3} + m_Name: + m_EditorClassIdentifier: + skin: {fileID: 11400000, guid: b90d3c214c99743b0865fc0e0d1f1a15, type: 2} + threadColor: {r: 0, g: 1, b: 1, a: 1} + taskColor: {r: 0, g: 1, b: 0, a: 1} + parallelTaskColor: {r: 1, g: 0.8, b: 0.2, a: 1} + renderTaskColor: {r: 0.2, g: 0.7, b: 1, a: 1} + defaultTaskColor: {r: 1, g: 0.5, b: 0.2, a: 1} + showPercentages: 0 + profileThrottle: 30 +--- !u!1 &1105384629 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1105384642} + - component: {fileID: 1105384641} + - component: {fileID: 1105384640} + - component: {fileID: 1105384643} + - component: {fileID: 1105384633} + - component: {fileID: 1105384632} + - component: {fileID: 1105384631} + - component: {fileID: 1105384635} + - component: {fileID: 1105384636} + m_Layer: 0 + m_Name: Obi Rod + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1105384631 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105384629} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4747da60837c44f9ba4b4a86879bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 24} + normalizeV: 1 + section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + thicknessScale: 0.8 +--- !u!114 &1105384632 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105384629} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0 + smoothing: 1 + twist: 0 +--- !u!114 &1105384633 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105384629} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f2bc32c4faf04f039a86a6e3cea12a1, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 16.384266 + elements: + - particle1: 0 + particle2: 1 + restLength: 0.28248742 + constraintForce: 0 + tearResistance: 0 + - particle1: 1 + particle2: 2 + restLength: 0.28248742 + constraintForce: 0 + tearResistance: 0 + - particle1: 2 + particle2: 3 + restLength: 0.28248745 + constraintForce: 0 + tearResistance: 0 + - particle1: 3 + particle2: 4 + restLength: 0.28248745 + constraintForce: 0 + tearResistance: 0 + - particle1: 4 + particle2: 5 + restLength: 0.28248742 + constraintForce: 0 + tearResistance: 0 + - particle1: 5 + particle2: 6 + restLength: 0.28248748 + constraintForce: 0 + tearResistance: 0 + - particle1: 6 + particle2: 7 + restLength: 0.28248745 + constraintForce: 0 + tearResistance: 0 + - particle1: 7 + particle2: 8 + restLength: 0.28248742 + constraintForce: 0 + tearResistance: 0 + - particle1: 8 + particle2: 9 + restLength: 0.28248745 + constraintForce: 0 + tearResistance: 0 + - particle1: 9 + particle2: 10 + restLength: 0.28248742 + constraintForce: 0 + tearResistance: 0 + - particle1: 10 + particle2: 11 + restLength: 0.28248778 + constraintForce: 0 + tearResistance: 0 + - particle1: 11 + particle2: 12 + restLength: 0.28248727 + constraintForce: 0 + tearResistance: 0 + - particle1: 12 + particle2: 13 + restLength: 0.28248748 + constraintForce: 0 + tearResistance: 0 + - particle1: 13 + particle2: 14 + restLength: 0.28248754 + constraintForce: 0 + tearResistance: 0 + - particle1: 14 + particle2: 15 + restLength: 0.28248778 + constraintForce: 0 + tearResistance: 0 + - particle1: 15 + particle2: 16 + restLength: 0.28248724 + constraintForce: 0 + tearResistance: 0 + - particle1: 16 + particle2: 17 + restLength: 0.2824875 + constraintForce: 0 + tearResistance: 0 + - particle1: 17 + particle2: 18 + restLength: 0.2824875 + constraintForce: 0 + tearResistance: 0 + - particle1: 18 + particle2: 19 + restLength: 0.2824875 + constraintForce: 0 + tearResistance: 0 + - particle1: 19 + particle2: 20 + restLength: 0.2824875 + constraintForce: 0 + tearResistance: 0 + - particle1: 20 + particle2: 21 + restLength: 0.2824875 + constraintForce: 0 + tearResistance: 0 + - particle1: 21 + particle2: 22 + restLength: 0.28248748 + constraintForce: 0 + tearResistance: 0 + - particle1: 22 + particle2: 23 + restLength: 0.2824875 + constraintForce: 0 + tearResistance: 0 + - particle1: 23 + particle2: 24 + restLength: 0.28248754 + constraintForce: 0 + tearResistance: 0 + - particle1: 24 + particle2: 25 + restLength: 0.2824875 + constraintForce: 0 + tearResistance: 0 + - particle1: 25 + particle2: 26 + restLength: 0.2824875 + constraintForce: 0 + tearResistance: 0 + - particle1: 26 + particle2: 27 + restLength: 0.28248748 + constraintForce: 0 + tearResistance: 0 + - particle1: 27 + particle2: 28 + restLength: 0.2824875 + constraintForce: 0 + tearResistance: 0 + - particle1: 28 + particle2: 29 + restLength: 0.28248698 + constraintForce: 0 + tearResistance: 0 + - particle1: 29 + particle2: 30 + restLength: 0.28248748 + constraintForce: 0 + tearResistance: 0 + - particle1: 30 + particle2: 31 + restLength: 0.28248855 + constraintForce: 0 + tearResistance: 0 + - particle1: 31 + particle2: 32 + restLength: 0.28248698 + constraintForce: 0 + tearResistance: 0 + - particle1: 32 + particle2: 33 + restLength: 0.28248754 + constraintForce: 0 + tearResistance: 0 + - particle1: 33 + particle2: 34 + restLength: 0.2824875 + constraintForce: 0 + tearResistance: 0 + - particle1: 34 + particle2: 35 + restLength: 0.28248748 + constraintForce: 0 + tearResistance: 0 + - particle1: 35 + particle2: 36 + restLength: 0.28248748 + constraintForce: 0 + tearResistance: 0 + - particle1: 36 + particle2: 37 + restLength: 0.28248644 + constraintForce: 0 + tearResistance: 0 + - particle1: 37 + particle2: 38 + restLength: 0.28248855 + constraintForce: 0 + tearResistance: 0 + - particle1: 38 + particle2: 39 + restLength: 0.2824872 + constraintForce: 0 + tearResistance: 0 + - particle1: 39 + particle2: 40 + restLength: 0.28248718 + constraintForce: 0 + tearResistance: 0 + - particle1: 40 + particle2: 41 + restLength: 0.2824872 + constraintForce: 0 + tearResistance: 0 + - particle1: 41 + particle2: 42 + restLength: 0.2824872 + constraintForce: 0 + tearResistance: 0 + - particle1: 42 + particle2: 43 + restLength: 0.28248718 + constraintForce: 0 + tearResistance: 0 + - particle1: 43 + particle2: 44 + restLength: 0.2824872 + constraintForce: 0 + tearResistance: 0 + - particle1: 44 + particle2: 45 + restLength: 0.28248718 + constraintForce: 0 + tearResistance: 0 + - particle1: 45 + particle2: 46 + restLength: 0.28248718 + constraintForce: 0 + tearResistance: 0 + - particle1: 46 + particle2: 47 + restLength: 0.28248823 + constraintForce: 0 + tearResistance: 0 + - particle1: 47 + particle2: 48 + restLength: 0.2824861 + constraintForce: 0 + tearResistance: 0 + - particle1: 48 + particle2: 49 + restLength: 0.28248614 + constraintForce: 0 + tearResistance: 0 + - particle1: 49 + particle2: 50 + restLength: 0.28248826 + constraintForce: 0 + tearResistance: 0 + - particle1: 50 + particle2: 51 + restLength: 0.28248715 + constraintForce: 0 + tearResistance: 0 + - particle1: 51 + particle2: 52 + restLength: 0.2824872 + constraintForce: 0 + tearResistance: 0 + - particle1: 52 + particle2: 53 + restLength: 0.2824872 + constraintForce: 0 + tearResistance: 0 + - particle1: 53 + particle2: 54 + restLength: 0.2824872 + constraintForce: 0 + tearResistance: 0 + - particle1: 54 + particle2: 55 + restLength: 0.28248718 + constraintForce: 0 + tearResistance: 0 + - particle1: 55 + particle2: 56 + restLength: 0.28248718 + constraintForce: 0 + tearResistance: 0 + - particle1: 56 + particle2: 57 + restLength: 0.2824872 + constraintForce: 0 + tearResistance: 0 + - particle1: 57 + particle2: 58 + restLength: 0.28248715 + constraintForce: 0 + tearResistance: 0 + m_RodBlueprint: {fileID: 11400000, guid: b74d67cfe23804ec1b4f215ac5e3d500, type: 2} + _stretchShearConstraintsEnabled: 1 + _stretchCompliance: 0 + _shear1Compliance: 0 + _shear2Compliance: 0 + _bendTwistConstraintsEnabled: 1 + _torsionCompliance: 0 + _bend1Compliance: 0 + _bend2Compliance: 0 + _plasticYield: 0 + _plasticCreep: 0 + _chainConstraintsEnabled: 1 + _tightness: 1 +--- !u!114 &1105384635 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105384629} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1105384633} + m_Target: {fileID: 1105384642} + m_ParticleGroup: {fileID: 9190015862606898100, guid: b74d67cfe23804ec1b4f215ac5e3d500, type: 2} + m_AttachmentType: 0 + m_ConstrainOrientation: 1 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1105384636 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105384629} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1105384633} + m_Target: {fileID: 2086275157} + m_ParticleGroup: {fileID: -4518859148014644581, guid: b74d67cfe23804ec1b4f215ac5e3d500, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 1 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!23 &1105384640 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105384629} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9bc0d93bc33e445c7a765578064cdd1e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1105384641 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105384629} + m_Mesh: {fileID: 1722264741} +--- !u!4 &1105384642 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105384629} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 2.405, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2147243670} + m_Father: {fileID: 2102841797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!95 &1105384643 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105384629} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: f1d1c5155bab2402a9c25e0867b791ef, type: 2} + m_CullingMode: 0 + m_UpdateMode: 1 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 1 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!1 &1175446144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1175446146} + - component: {fileID: 1175446145} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1175446145 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.03 + m_NormalBias: 0.01 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1175446146 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175446144} + serializedVersion: 2 + m_LocalRotation: {x: 0.41595167, y: -0.26247028, z: 0.26683384, w: 0.82879025} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 56.052002, y: -22.431002, z: 23.642} +--- !u!1 &1529730626 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1529730628} + - component: {fileID: 1529730627} + m_Layer: 0 + m_Name: BurstCollisionWorld + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1529730627 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1529730626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1a161c4294214a4fbcb7e9e94800494, type: 3} + m_Name: + m_EditorClassIdentifier: + cellSpans: + m_AlignBytes: 16 +--- !u!4 &1529730628 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1529730626} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!43 &1722264741 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &2086275150 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2086275157} + - component: {fileID: 2086275156} + - component: {fileID: 2086275155} + - component: {fileID: 2086275154} + - component: {fileID: 2086275153} + - component: {fileID: 2086275152} + - component: {fileID: 2086275151} + m_Layer: 0 + m_Name: Load + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2086275151 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086275150} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &2086275152 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086275150} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 2086275154} + m_DistanceField: {fileID: 0} +--- !u!54 &2086275153 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086275150} + serializedVersion: 5 + m_Mass: 0.25 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &2086275154 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086275150} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &2086275155 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086275150} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2086275156 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086275150} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2086275157 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086275150} + serializedVersion: 2 + m_LocalRotation: {x: -0.045902487, y: 0.6368099, z: -0.08012669, w: 0.76547104} + m_LocalPosition: {x: 0.775, y: 2.334, z: -0.394} + m_LocalScale: {x: 0.79513997, y: 0.6594322, z: 0.7} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 1.8210001, y: 79.34901, z: -10.441001} +--- !u!1 &2102841794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2102841797} + - component: {fileID: 2102841796} + - component: {fileID: 2102841795} + m_Layer: 0 + m_Name: Obi Solver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2102841795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d9704d540ac448439a425526f6b2986, type: 3} + m_Name: + m_EditorClassIdentifier: + solvers: + - {fileID: 2102841796} + substeps: 3 +--- !u!114 &2102841796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d174fab52f0c4b8399f25d5c3ea524c, type: 3} + m_Name: + m_EditorClassIdentifier: + simulateWhenInvisible: 1 + m_Backend: 1 + parameters: + mode: 0 + interpolation: 0 + gravity: {x: 0, y: -9.81, z: 0} + damping: 0 + maxAnisotropy: 3 + sleepThreshold: 0.001 + collisionMargin: 0.02 + maxDepenetration: 5 + continuousCollisionDetection: 1 + shockPropagation: 0 + surfaceCollisionIterations: 8 + surfaceCollisionTolerance: 0.005 + gravity: {x: 0, y: -9.81, z: 0} + gravitySpace: 1 + worldLinearInertiaScale: 0 + worldAngularInertiaScale: 0 + distanceConstraintParameters: + evaluationOrder: 0 + iterations: 8 + SORFactor: 1 + enabled: 0 + bendingConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + particleCollisionConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + particleFrictionConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + collisionConstraintParameters: + evaluationOrder: 1 + iterations: 4 + SORFactor: 1 + enabled: 0 + frictionConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + skinConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + volumeConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + shapeMatchingConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + tetherConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + pinConstraintParameters: + evaluationOrder: 0 + iterations: 10 + SORFactor: 1 + enabled: 1 + stitchConstraintParameters: + evaluationOrder: 1 + iterations: 5 + SORFactor: 1 + enabled: 0 + densityConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + stretchShearConstraintParameters: + evaluationOrder: 0 + iterations: 10 + SORFactor: 1 + enabled: 1 + bendTwistConstraintParameters: + evaluationOrder: 0 + iterations: 20 + SORFactor: 1 + enabled: 1 + chainConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 1 +--- !u!4 &2102841797 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102841794} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1105384642} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2147243669 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2147243670} + - component: {fileID: 2147243673} + - component: {fileID: 2147243672} + - component: {fileID: 2147243671} + m_Layer: 0 + m_Name: Cylinder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2147243670 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2147243669} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.166, y: 2.879, z: -0.691} + m_LocalScale: {x: 0.43696082, y: 0.4369608, z: 0.4369608} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1105384642} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!136 &2147243671 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2147243669} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5000001 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} +--- !u!23 &2147243672 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2147243669} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2147243673 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2147243669} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1002464896} + - {fileID: 421764872} + - {fileID: 1175446146} + - {fileID: 2102841797} + - {fileID: 2086275157} + - {fileID: 1529730628} diff --git a/Assets/Obi/Samples/RopeAndRod/SpringRod.unity.meta b/Assets/Obi/Samples/RopeAndRod/SpringRod.unity.meta new file mode 100644 index 000000000..d25af1a9d --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SpringRod.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8fafd98b75e9b44ee8b37edf6f1adcd5 +labels: +- ObiRope +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/SpringRodSettings.lighting b/Assets/Obi/Samples/RopeAndRod/SpringRodSettings.lighting new file mode 100644 index 000000000..e0390e530 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SpringRodSettings.lighting @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SpringRodSettings + serializedVersion: 10 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_LightmapPackingMode: 1 + m_LightmapPackingMethod: 0 + m_XAtlasPackingAttempts: 16384 + m_XAtlasBruteForce: 0 + m_XAtlasBlockAlign: 0 + m_XAtlasRepackUnderutilizedLightmaps: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/SpringRodSettings.lighting.meta b/Assets/Obi/Samples/RopeAndRod/SpringRodSettings.lighting.meta new file mode 100644 index 000000000..cd76a999a --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/SpringRodSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f801ec60d167b9b478060cf664dbe1aa +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/WrapTheRope.unity b/Assets/Obi/Samples/RopeAndRod/WrapTheRope.unity new file mode 100644 index 000000000..d077589e3 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/WrapTheRope.unity @@ -0,0 +1,2982 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: 3ad92fcda35cc57409be1a1955ff97a7, type: 2} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &175885769 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3512526509595786538, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_Name + value: WrapPeg (3) + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.x + value: -3.0999997 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.y + value: 10.62 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.z + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.x + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} +--- !u!114 &175885770 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3433872735350211203, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + m_PrefabInstance: {fileID: 175885769} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 39f0f8f454a2049f3af7bad3dda0481e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &178620544 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 178620545} + - component: {fileID: 178620547} + - component: {fileID: 178620546} + m_Layer: 5 + m_Name: Instructions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &178620545 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178620544} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 876719296} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 142.57, y: 54.39} + m_SizeDelta: {x: 239.1437, y: 72.29023} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &178620546 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178620544} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 20 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Use WASD to move around. + + All pegs must be in contact with the rope!' +--- !u!222 &178620547 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178620544} + m_CullTransparentMesh: 0 +--- !u!1 &266503051 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 266503052} + - component: {fileID: 266503054} + - component: {fileID: 266503053} + - component: {fileID: 266503055} + m_Layer: 5 + m_Name: Finish + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &266503052 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 266503051} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1406884019} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 239.14368, y: 72.29022} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &266503053 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 266503051} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0.6415094, b: 0.035014484, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 50 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 50 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: DONE! +--- !u!222 &266503054 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 266503051} + m_CullTransparentMesh: 0 +--- !u!114 &266503055 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 266503051} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 2, y: -2} + m_UseGraphicAlpha: 1 +--- !u!1001 &334666148 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3512526509595786538, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_Name + value: WrapPeg (5) + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.x + value: -6.24 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.y + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.z + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.x + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} +--- !u!114 &334666149 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3433872735350211203, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + m_PrefabInstance: {fileID: 334666148} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 39f0f8f454a2049f3af7bad3dda0481e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &599321983 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 599321989} + - component: {fileID: 599321988} + - component: {fileID: 599321987} + - component: {fileID: 599321986} + - component: {fileID: 599321985} + - component: {fileID: 599321984} + - component: {fileID: 599321990} + - component: {fileID: 599321991} + m_Layer: 0 + m_Name: RopeTenser + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!54 &599321984 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 599321983} + serializedVersion: 5 + m_Mass: 1 + m_LinearDamping: 3 + m_AngularDamping: 0 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 122 + m_CollisionDetection: 0 +--- !u!114 &599321985 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 599321983} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 599321986} + m_DistanceField: {fileID: 0} +--- !u!65 &599321986 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 599321983} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &599321987 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 599321983} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &599321988 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 599321983} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &599321989 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 599321983} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -80, z: -0.5} + m_LocalScale: {x: 3.0698, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &599321990 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 599321983} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &599321991 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 599321983} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6a01ab42f187a43818168cd1cd11d3cf, type: 3} + m_Name: + m_EditorClassIdentifier: + force: 400 +--- !u!1 &615688258 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 615688260} + - component: {fileID: 615688259} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &615688259 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 615688258} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &615688260 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 615688258} + serializedVersion: 2 + m_LocalRotation: {x: 0.17818838, y: -0.24294695, z: 0.23929165, w: 0.92301965} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 26.437002, y: -23.931002, z: 23.368002} +--- !u!43 &646258623 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: extrudedMesh + serializedVersion: 12 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 0 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 0 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: + m_VertexData: + serializedVersion: 3 + m_VertexCount: 0 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 0 + _typelessdata: + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: + m_MeshLodInfo: + serializedVersion: 2 + m_LodSelectionCurve: + serializedVersion: 1 + m_LodSlope: 0 + m_LodBias: 0 + m_NumLevels: 1 + m_SubMeshes: + - serializedVersion: 2 + m_Levels: + - serializedVersion: 1 + m_IndexStart: 0 + m_IndexCount: 0 +--- !u!1 &862377248 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 862377252} + - component: {fileID: 862377251} + - component: {fileID: 862377250} + - component: {fileID: 862377253} + - component: {fileID: 862377254} + - component: {fileID: 862377255} + - component: {fileID: 862377256} + - component: {fileID: 862377249} + m_Layer: 0 + m_Name: Player + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &862377249 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 862377248} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &862377250 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 862377248} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: edc856900ac3941a98996e21e91e215e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &862377251 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 862377248} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &862377252 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 862377248} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.5, z: -0.5} + m_LocalScale: {x: 1.5, y: 1.5, z: 1.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &862377253 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 862377248} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0 + material: {fileID: 0} + filter: -131071 + m_SourceCollider: {fileID: 862377249} + m_DistanceField: {fileID: 0} +--- !u!54 &862377254 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 862377248} + serializedVersion: 5 + m_Mass: 30 + m_LinearDamping: 5 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 120 + m_CollisionDetection: 0 +--- !u!114 &862377255 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 862377248} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62359d80fdc0e4315ab6331b78ec5b90, type: 3} + m_Name: + m_EditorClassIdentifier: + kinematicForParticles: 0 +--- !u!114 &862377256 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 862377248} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fdf58ad80e1cd4860aa12e8da0aa833c, type: 3} + m_Name: + m_EditorClassIdentifier: + acceleration: 50 +--- !u!1 &876719292 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 876719296} + - component: {fileID: 876719295} + - component: {fileID: 876719294} + - component: {fileID: 876719293} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &876719293 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 876719292} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &876719294 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 876719292} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &876719295 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 876719292} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_UseReflectionProbes: 0 + m_AdditionalShaderChannelsFlag: 1 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &876719296 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 876719292} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 178620545} + - {fileID: 1406884019} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1015286417 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3512526509595786538, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_Name + value: WrapPeg + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.x + value: -3.0921412 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.y + value: 3.5687833 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.z + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.x + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} +--- !u!114 &1015286418 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3433872735350211203, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + m_PrefabInstance: {fileID: 1015286417} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 39f0f8f454a2049f3af7bad3dda0481e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1276486554 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1276486558} + - component: {fileID: 1276486557} + - component: {fileID: 1276486556} + - component: {fileID: 1276486561} + - component: {fileID: 1276486560} + - component: {fileID: 1276486559} + - component: {fileID: 1276486555} + m_Layer: 0 + m_Name: RopeSource + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1276486555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276486554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0.05 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 1276486560} + m_DistanceField: {fileID: 0} +--- !u!23 &1276486556 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276486554} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: edc856900ac3941a98996e21e91e215e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1276486557 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276486554} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1276486558 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276486554} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -8, z: 0} + m_LocalScale: {x: 2.5, y: 2.5, z: 2.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1276486559 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276486554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6757b231cedd544c583ef8aeaf773b2a, type: 3} + m_Name: + m_EditorClassIdentifier: + thickness: 0.05 + material: {fileID: 0} + filter: -65535 + m_SourceCollider: {fileID: 1276486561} + m_DistanceField: {fileID: 0} +--- !u!65 &1276486560 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276486554} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 10, y: 2, z: 1.0000002} + m_Center: {x: -5.2, y: 0, z: 0} +--- !u!65 &1276486561 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276486554} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 10, y: 2, z: 1.0000002} + m_Center: {x: 5.2, y: 0, z: 0} +--- !u!1 &1406884018 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1406884019} + m_Layer: 5 + m_Name: FinishMessage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1406884019 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1406884018} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 266503052} + m_Father: {fileID: 876719296} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 824, y: 590} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1001 &1430085410 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3512526509595786538, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_Name + value: WrapPeg (4) + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.x + value: 3.1000004 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.y + value: 10.62 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.z + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.x + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} +--- !u!114 &1430085411 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3433872735350211203, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + m_PrefabInstance: {fileID: 1430085410} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 39f0f8f454a2049f3af7bad3dda0481e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1595626174 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3512526509595786538, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_Name + value: WrapPeg (1) + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.x + value: 3.6800003 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.y + value: 3.5687833 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.z + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.x + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} +--- !u!114 &1595626175 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3433872735350211203, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + m_PrefabInstance: {fileID: 1595626174} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 39f0f8f454a2049f3af7bad3dda0481e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1612476492 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1612476495} + - component: {fileID: 1612476494} + - component: {fileID: 1612476493} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1612476493 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1612476492} + m_Enabled: 1 +--- !u!20 &1612476494 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1612476492} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1612476495 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1612476492} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3, z: -20} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1663334039 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3512526509595786538, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_Name + value: WrapPeg (2) + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.x + value: 0.68 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.y + value: 6.41 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.z + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.x + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} +--- !u!114 &1663334040 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3433872735350211203, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + m_PrefabInstance: {fileID: 1663334039} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 39f0f8f454a2049f3af7bad3dda0481e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1686434325 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1686434327} + - component: {fileID: 1686434326} + m_Layer: 0 + m_Name: BurstCollisionWorld + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1686434326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1686434325} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1a161c4294214a4fbcb7e9e94800494, type: 3} + m_Name: + m_EditorClassIdentifier: + cellSpans: + m_AlignBytes: 16 +--- !u!4 &1686434327 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1686434325} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1717570096 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3512526509595786538, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_Name + value: WrapPeg (6) + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_RootOrder + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.x + value: 6.9300003 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.y + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalPosition.z + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.x + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512526509595786583, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} +--- !u!114 &1717570097 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3433872735350211203, guid: 88eb4cec0c7324e51bf5e7e1342370e3, type: 3} + m_PrefabInstance: {fileID: 1717570096} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 39f0f8f454a2049f3af7bad3dda0481e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1780856014 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1780856015} + - component: {fileID: 1780856020} + - component: {fileID: 1780856019} + - component: {fileID: 1780856018} + - component: {fileID: 1780856017} + - component: {fileID: 1780856021} + - component: {fileID: 1780856022} + - component: {fileID: 1780856016} + - component: {fileID: 1780856023} + m_Layer: 0 + m_Name: Obi Rope + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1780856015 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1780856014} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_LocalPosition: {x: 0, y: -1.5, z: -0.35} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1882120510} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} +--- !u!114 &1780856016 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1780856014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 18f853588397d4a80a561203ed92fc8a, type: 3} + m_Name: + m_EditorClassIdentifier: + uvAnchor: 0 + uvScale: {x: 1, y: 30} + normalizeV: 1 + thicknessScale: 0.8 +--- !u!114 &1780856017 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1780856014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 958c969cfb16745f192d4d7bd28b7178, type: 3} + m_Name: + m_EditorClassIdentifier: + decimation: 0.5 + smoothing: 0 + twist: 0 +--- !u!33 &1780856018 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1780856014} + m_Mesh: {fileID: 646258623} +--- !u!23 &1780856019 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1780856014} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 03019be2b7a654429bf322c3ca0c7a0e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &1780856020 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1780856014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61104f33a3f344db9b7e0d0cda41a9fb, type: 3} + m_Name: + m_EditorClassIdentifier: + solverIndices: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000400000004100000042000000430000004400000045000000460000004700000048000000490000004a0000004b0000004c0000004d0000004e0000004f000000500000005100000052000000530000005400000055000000560000005700000058000000590000005a0000005b0000005c0000005d0000005e0000005f000000600000006100000062000000630000006400000065000000660000006700000068000000690000006a0000006b0000006c0000006d0000006e0000006f0000007000000071000000 + m_CollisionMaterial: {fileID: 0} + m_SurfaceCollisions: 0 + m_SelfCollisions: 0 + restLength_: 78.96037 + elements: + - particle1: 0 + particle2: 1 + restLength: 0.657959 + constraintForce: 0 + tearResistance: 1 + - particle1: 1 + particle2: 2 + restLength: 0.6274185 + constraintForce: 0 + tearResistance: 1 + - particle1: 2 + particle2: 3 + restLength: 0.80545807 + constraintForce: 0 + tearResistance: 1 + - particle1: 3 + particle2: 4 + restLength: 0.6171951 + constraintForce: 0 + tearResistance: 1 + - particle1: 4 + particle2: 5 + restLength: 0.6890564 + constraintForce: 0 + tearResistance: 1 + - particle1: 5 + particle2: 6 + restLength: 0.7583618 + constraintForce: 0 + tearResistance: 1 + - particle1: 6 + particle2: 7 + restLength: 0.6914139 + constraintForce: 0 + tearResistance: 1 + - particle1: 7 + particle2: 8 + restLength: 0.6603241 + constraintForce: 0 + tearResistance: 1 + - particle1: 8 + particle2: 9 + restLength: 0.6962509 + constraintForce: 0 + tearResistance: 1 + - particle1: 9 + particle2: 10 + restLength: 0.73104095 + constraintForce: 0 + tearResistance: 1 + - particle1: 10 + particle2: 11 + restLength: 0.7430115 + constraintForce: 0 + tearResistance: 1 + - particle1: 11 + particle2: 12 + restLength: 0.65579224 + constraintForce: 0 + tearResistance: 1 + - particle1: 12 + particle2: 13 + restLength: 0.6773987 + constraintForce: 0 + tearResistance: 1 + - particle1: 13 + particle2: 14 + restLength: 0.6984024 + constraintForce: 0 + tearResistance: 1 + - particle1: 14 + particle2: 15 + restLength: 0.7187271 + constraintForce: 0 + tearResistance: 1 + - particle1: 15 + particle2: 16 + restLength: 0.7384491 + constraintForce: 0 + tearResistance: 1 + - particle1: 16 + particle2: 17 + restLength: 0.68582153 + constraintForce: 0 + tearResistance: 1 + - particle1: 17 + particle2: 18 + restLength: 0.6740875 + constraintForce: 0 + tearResistance: 1 + - particle1: 18 + particle2: 19 + restLength: 0.6877136 + constraintForce: 0 + tearResistance: 1 + - particle1: 19 + particle2: 20 + restLength: 0.70095825 + constraintForce: 0 + tearResistance: 1 + - particle1: 20 + particle2: 21 + restLength: 0.7137718 + constraintForce: 0 + tearResistance: 1 + - particle1: 21 + particle2: 22 + restLength: 0.7261467 + constraintForce: 0 + tearResistance: 1 + - particle1: 22 + particle2: 23 + restLength: 0.70257187 + constraintForce: 0 + tearResistance: 1 + - particle1: 23 + particle2: 24 + restLength: 0.6775856 + constraintForce: 0 + tearResistance: 1 + - particle1: 24 + particle2: 25 + restLength: 0.6867447 + constraintForce: 0 + tearResistance: 1 + - particle1: 25 + particle2: 26 + restLength: 0.6955986 + constraintForce: 0 + tearResistance: 1 + - particle1: 26 + particle2: 27 + restLength: 0.70415497 + constraintForce: 0 + tearResistance: 1 + - particle1: 27 + particle2: 28 + restLength: 0.71237564 + constraintForce: 0 + tearResistance: 1 + - particle1: 28 + particle2: 29 + restLength: 0.72029877 + constraintForce: 0 + tearResistance: 1 + - particle1: 29 + particle2: 30 + restLength: 0.69654083 + constraintForce: 0 + tearResistance: 1 + - particle1: 30 + particle2: 31 + restLength: 0.6841812 + constraintForce: 0 + tearResistance: 1 + - particle1: 31 + particle2: 32 + restLength: 0.69026566 + constraintForce: 0 + tearResistance: 1 + - particle1: 32 + particle2: 33 + restLength: 0.6961212 + constraintForce: 0 + tearResistance: 1 + - particle1: 33 + particle2: 34 + restLength: 0.7017021 + constraintForce: 0 + tearResistance: 1 + - particle1: 34 + particle2: 35 + restLength: 0.70703506 + constraintForce: 0 + tearResistance: 1 + - particle1: 35 + particle2: 36 + restLength: 0.7121277 + constraintForce: 0 + tearResistance: 1 + - particle1: 36 + particle2: 37 + restLength: 0.70897675 + constraintForce: 0 + tearResistance: 1 + - particle1: 37 + particle2: 38 + restLength: 0.68764114 + constraintForce: 0 + tearResistance: 1 + - particle1: 38 + particle2: 39 + restLength: 0.69158936 + constraintForce: 0 + tearResistance: 1 + - particle1: 39 + particle2: 40 + restLength: 0.6953201 + constraintForce: 0 + tearResistance: 1 + - particle1: 40 + particle2: 41 + restLength: 0.6988373 + constraintForce: 0 + tearResistance: 1 + - particle1: 41 + particle2: 42 + restLength: 0.7021179 + constraintForce: 0 + tearResistance: 1 + - particle1: 42 + particle2: 43 + restLength: 0.70521927 + constraintForce: 0 + tearResistance: 1 + - particle1: 43 + particle2: 44 + restLength: 0.7080574 + constraintForce: 0 + tearResistance: 1 + - particle1: 44 + particle2: 45 + restLength: 0.70124435 + constraintForce: 0 + tearResistance: 1 + - particle1: 45 + particle2: 46 + restLength: 0.6936035 + constraintForce: 0 + tearResistance: 1 + - particle1: 46 + particle2: 47 + restLength: 0.6956978 + constraintForce: 0 + tearResistance: 1 + - particle1: 47 + particle2: 48 + restLength: 0.6975975 + constraintForce: 0 + tearResistance: 1 + - particle1: 48 + particle2: 49 + restLength: 0.6992912 + constraintForce: 0 + tearResistance: 1 + - particle1: 49 + particle2: 50 + restLength: 0.7007866 + constraintForce: 0 + tearResistance: 1 + - particle1: 50 + particle2: 51 + restLength: 0.7020836 + constraintForce: 0 + tearResistance: 1 + - particle1: 51 + particle2: 52 + restLength: 0.7031746 + constraintForce: 0 + tearResistance: 1 + - particle1: 52 + particle2: 53 + restLength: 0.70077133 + constraintForce: 0 + tearResistance: 1 + - particle1: 53 + particle2: 54 + restLength: 0.6984062 + constraintForce: 0 + tearResistance: 1 + - particle1: 54 + particle2: 55 + restLength: 0.6988945 + constraintForce: 0 + tearResistance: 1 + - particle1: 55 + particle2: 56 + restLength: 0.6991768 + constraintForce: 0 + tearResistance: 1 + - particle1: 56 + particle2: 57 + restLength: 0.6992874 + constraintForce: 0 + tearResistance: 1 + - particle1: 57 + particle2: 58 + restLength: 0.6991844 + constraintForce: 0 + tearResistance: 1 + - particle1: 58 + particle2: 59 + restLength: 0.6988869 + constraintForce: 0 + tearResistance: 1 + - particle1: 59 + particle2: 60 + restLength: 0.6983986 + constraintForce: 0 + tearResistance: 1 + - particle1: 60 + particle2: 61 + restLength: 0.70077133 + constraintForce: 0 + tearResistance: 1 + - particle1: 61 + particle2: 62 + restLength: 0.7031784 + constraintForce: 0 + tearResistance: 1 + - particle1: 62 + particle2: 63 + restLength: 0.7020798 + constraintForce: 0 + tearResistance: 1 + - particle1: 63 + particle2: 64 + restLength: 0.7007942 + constraintForce: 0 + tearResistance: 1 + - particle1: 64 + particle2: 65 + restLength: 0.6992912 + constraintForce: 0 + tearResistance: 1 + - particle1: 65 + particle2: 66 + restLength: 0.6975956 + constraintForce: 0 + tearResistance: 1 + - particle1: 66 + particle2: 67 + restLength: 0.6956997 + constraintForce: 0 + tearResistance: 1 + - particle1: 67 + particle2: 68 + restLength: 0.6936035 + constraintForce: 0 + tearResistance: 1 + - particle1: 68 + particle2: 69 + restLength: 0.70124245 + constraintForce: 0 + tearResistance: 1 + - particle1: 69 + particle2: 70 + restLength: 0.7080612 + constraintForce: 0 + tearResistance: 1 + - particle1: 70 + particle2: 71 + restLength: 0.7052078 + constraintForce: 0 + tearResistance: 1 + - particle1: 71 + particle2: 72 + restLength: 0.70212936 + constraintForce: 0 + tearResistance: 1 + - particle1: 72 + particle2: 73 + restLength: 0.69883347 + constraintForce: 0 + tearResistance: 1 + - particle1: 73 + particle2: 74 + restLength: 0.6953201 + constraintForce: 0 + tearResistance: 1 + - particle1: 74 + particle2: 75 + restLength: 0.69158363 + constraintForce: 0 + tearResistance: 1 + - particle1: 75 + particle2: 76 + restLength: 0.68763924 + constraintForce: 0 + tearResistance: 1 + - particle1: 76 + particle2: 77 + restLength: 0.7089863 + constraintForce: 0 + tearResistance: 1 + - particle1: 77 + particle2: 78 + restLength: 0.71212196 + constraintForce: 0 + tearResistance: 1 + - particle1: 78 + particle2: 79 + restLength: 0.7070408 + constraintForce: 0 + tearResistance: 1 + - particle1: 79 + particle2: 80 + restLength: 0.7016964 + constraintForce: 0 + tearResistance: 1 + - particle1: 80 + particle2: 81 + restLength: 0.6961155 + constraintForce: 0 + tearResistance: 1 + - particle1: 81 + particle2: 82 + restLength: 0.6902695 + constraintForce: 0 + tearResistance: 1 + - particle1: 82 + particle2: 83 + restLength: 0.6841831 + constraintForce: 0 + tearResistance: 1 + - particle1: 83 + particle2: 84 + restLength: 0.6965389 + constraintForce: 0 + tearResistance: 1 + - particle1: 84 + particle2: 85 + restLength: 0.7203064 + constraintForce: 0 + tearResistance: 1 + - particle1: 85 + particle2: 86 + restLength: 0.71237946 + constraintForce: 0 + tearResistance: 1 + - particle1: 86 + particle2: 87 + restLength: 0.70414543 + constraintForce: 0 + tearResistance: 1 + - particle1: 87 + particle2: 88 + restLength: 0.6955986 + constraintForce: 0 + tearResistance: 1 + - particle1: 88 + particle2: 89 + restLength: 0.6867504 + constraintForce: 0 + tearResistance: 1 + - particle1: 89 + particle2: 90 + restLength: 0.67757607 + constraintForce: 0 + tearResistance: 1 + - particle1: 90 + particle2: 91 + restLength: 0.7025757 + constraintForce: 0 + tearResistance: 1 + - particle1: 91 + particle2: 92 + restLength: 0.72615623 + constraintForce: 0 + tearResistance: 1 + - particle1: 92 + particle2: 93 + restLength: 0.7137613 + constraintForce: 0 + tearResistance: 1 + - particle1: 93 + particle2: 94 + restLength: 0.70095825 + constraintForce: 0 + tearResistance: 1 + - particle1: 94 + particle2: 95 + restLength: 0.6877241 + constraintForce: 0 + tearResistance: 1 + - particle1: 95 + particle2: 96 + restLength: 0.67408085 + constraintForce: 0 + tearResistance: 1 + - particle1: 96 + particle2: 97 + restLength: 0.68582535 + constraintForce: 0 + tearResistance: 1 + - particle1: 97 + particle2: 98 + restLength: 0.73844147 + constraintForce: 0 + tearResistance: 1 + - particle1: 98 + particle2: 99 + restLength: 0.71873474 + constraintForce: 0 + tearResistance: 1 + - particle1: 99 + particle2: 100 + restLength: 0.69838905 + constraintForce: 0 + tearResistance: 1 + - particle1: 100 + particle2: 101 + restLength: 0.6774101 + constraintForce: 0 + tearResistance: 1 + - particle1: 101 + particle2: 102 + restLength: 0.65579367 + constraintForce: 0 + tearResistance: 1 + - particle1: 102 + particle2: 103 + restLength: 0.74301386 + constraintForce: 0 + tearResistance: 1 + - particle1: 103 + particle2: 104 + restLength: 0.73103285 + constraintForce: 0 + tearResistance: 1 + - particle1: 104 + particle2: 105 + restLength: 0.69625187 + constraintForce: 0 + tearResistance: 1 + - particle1: 105 + particle2: 106 + restLength: 0.6603303 + constraintForce: 0 + tearResistance: 1 + - particle1: 106 + particle2: 107 + restLength: 0.6914048 + constraintForce: 0 + tearResistance: 1 + - particle1: 107 + particle2: 108 + restLength: 0.7583585 + constraintForce: 0 + tearResistance: 1 + - particle1: 108 + particle2: 109 + restLength: 0.68906343 + constraintForce: 0 + tearResistance: 1 + - particle1: 109 + particle2: 110 + restLength: 0.61720514 + constraintForce: 0 + tearResistance: 1 + - particle1: 110 + particle2: 111 + restLength: 0.80545086 + constraintForce: 0 + tearResistance: 1 + - particle1: 111 + particle2: 112 + restLength: 0.6274201 + constraintForce: 0 + tearResistance: 1 + - particle1: 112 + particle2: 113 + restLength: 0.657958 + constraintForce: 0 + tearResistance: 1 + m_RopeBlueprint: {fileID: 11400000, guid: 4d31372b30ca34527b534f09a803ab15, type: 2} + tearingEnabled: 0 + tearResistanceMultiplier: 1000 + tearRate: 1 + _distanceConstraintsEnabled: 1 + _stretchingScale: 1 + _stretchCompliance: 0 + _maxCompression: 0 + _bendConstraintsEnabled: 1 + _bendCompliance: 0.01 + _maxBending: 0.025 + _plasticYield: 0 + _plasticCreep: 0 +--- !u!114 &1780856021 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1780856014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1780856020} + m_Target: {fileID: 862377252} + m_ParticleGroup: {fileID: 870036912147276740, guid: 4d31372b30ca34527b534f09a803ab15, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1780856022 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1780856014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d03c9194b7ab4aaba4dfa5afec22c69, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actor: {fileID: 1780856020} + m_Target: {fileID: 599321989} + m_ParticleGroup: {fileID: -5578146735436999353, guid: 4d31372b30ca34527b534f09a803ab15, type: 2} + m_AttachmentType: 1 + m_ConstrainOrientation: 0 + m_Compliance: 0 + m_BreakThreshold: Infinity +--- !u!114 &1780856023 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1780856014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 51f5e34b2316b45c6bdf971b375b5f2e, type: 3} + m_Name: + m_EditorClassIdentifier: + minTension: 0 + maxTension: 0.05 + normalColor: {r: 0.22921856, g: 0.9528302, b: 0.40241542, a: 1} + tensionColor: {r: 1, g: 0, b: 0, a: 1} + tenser: {fileID: 599321991} + tenserThreshold: -13 + tenserMax: 1 +--- !u!1 &1882120507 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1882120510} + - component: {fileID: 1882120509} + - component: {fileID: 1882120508} + - component: {fileID: 1882120511} + m_Layer: 0 + m_Name: Obi Solver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1882120508 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1882120507} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d9704d540ac448439a425526f6b2986, type: 3} + m_Name: + m_EditorClassIdentifier: + solvers: + - {fileID: 1882120509} + substeps: 6 +--- !u!114 &1882120509 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1882120507} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d174fab52f0c4b8399f25d5c3ea524c, type: 3} + m_Name: + m_EditorClassIdentifier: + simulateWhenInvisible: 1 + m_Backend: 1 + parameters: + mode: 1 + interpolation: 0 + gravity: {x: 0, y: 0, z: 0} + damping: 0.1 + maxAnisotropy: 3 + sleepThreshold: 0.0001 + collisionMargin: 0.05 + maxDepenetration: 50 + continuousCollisionDetection: 1 + shockPropagation: 0 + surfaceCollisionIterations: 16 + surfaceCollisionTolerance: 0.001 + gravity: {x: 0, y: -9.81, z: 0} + gravitySpace: 1 + worldLinearInertiaScale: 0 + worldAngularInertiaScale: 0 + distanceConstraintParameters: + evaluationOrder: 0 + iterations: 4 + SORFactor: 1 + enabled: 1 + bendingConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 1 + particleCollisionConstraintParameters: + evaluationOrder: 0 + iterations: 2 + SORFactor: 1 + enabled: 0 + particleFrictionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 0 + collisionConstraintParameters: + evaluationOrder: 0 + iterations: 4 + SORFactor: 1 + enabled: 1 + frictionConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 0 + skinConstraintParameters: + evaluationOrder: 0 + iterations: 1 + SORFactor: 1 + enabled: 0 + volumeConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + shapeMatchingConstraintParameters: + evaluationOrder: 1 + iterations: 3 + SORFactor: 1 + enabled: 0 + tetherConstraintParameters: + evaluationOrder: 1 + iterations: 1 + SORFactor: 1 + enabled: 0 + pinConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 1 + stitchConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + densityConstraintParameters: + evaluationOrder: 1 + iterations: 2 + SORFactor: 1 + enabled: 0 + stretchShearConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + bendTwistConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 + chainConstraintParameters: + evaluationOrder: 0 + iterations: 3 + SORFactor: 1 + enabled: 0 +--- !u!4 &1882120510 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1882120507} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1780856015} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1882120511 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1882120507} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92b1832c67f564e9fa43a180598111e8, type: 3} + m_Name: + m_EditorClassIdentifier: + wrappables: + - {fileID: 1015286418} + - {fileID: 1595626175} + - {fileID: 1663334040} + - {fileID: 175885770} + - {fileID: 1430085411} + - {fileID: 334666149} + - {fileID: 1717570097} + onFinish: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1406884018} + m_TargetAssemblyTypeName: + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 +--- !u!1 &1919818295 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1919818299} + - component: {fileID: 1919818298} + - component: {fileID: 1919818297} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1919818297 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1919818295} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 359ef2e4b09204eeab112e419c308068, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1919818298 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1919818295} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1919818299 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1919818295} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1612476495} + - {fileID: 615688260} + - {fileID: 1919818299} + - {fileID: 1015286417} + - {fileID: 1595626174} + - {fileID: 1663334039} + - {fileID: 175885769} + - {fileID: 1430085410} + - {fileID: 334666148} + - {fileID: 1717570096} + - {fileID: 862377252} + - {fileID: 1276486558} + - {fileID: 1882120510} + - {fileID: 599321989} + - {fileID: 876719296} + - {fileID: 1686434327} diff --git a/Assets/Obi/Samples/RopeAndRod/WrapTheRope.unity.meta b/Assets/Obi/Samples/RopeAndRod/WrapTheRope.unity.meta new file mode 100644 index 000000000..e62a89f3f --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/WrapTheRope.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fc2b8ae2ba09f45b7be65218f74cd121 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Samples/RopeAndRod/WrapTheRopeSettings.lighting b/Assets/Obi/Samples/RopeAndRod/WrapTheRopeSettings.lighting new file mode 100644 index 000000000..fdaeb0a73 --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/WrapTheRopeSettings.lighting @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: WrapTheRopeSettings + serializedVersion: 10 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_LightmapPackingMode: 1 + m_LightmapPackingMethod: 0 + m_XAtlasPackingAttempts: 16384 + m_XAtlasBruteForce: 0 + m_XAtlasBlockAlign: 0 + m_XAtlasRepackUnderutilizedLightmaps: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 1 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Obi/Samples/RopeAndRod/WrapTheRopeSettings.lighting.meta b/Assets/Obi/Samples/RopeAndRod/WrapTheRopeSettings.lighting.meta new file mode 100644 index 000000000..c14ed465e --- /dev/null +++ b/Assets/Obi/Samples/RopeAndRod/WrapTheRopeSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3ad92fcda35cc57409be1a1955ff97a7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts.meta b/Assets/Obi/Scripts.meta new file mode 100644 index 000000000..3253a175d --- /dev/null +++ b/Assets/Obi/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7dc12f70242e74cd485e5ba96559b3ec +folderAsset: yes +timeCreated: 1435569421 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common.meta b/Assets/Obi/Scripts/Common.meta new file mode 100644 index 000000000..60bb6b90f --- /dev/null +++ b/Assets/Obi/Scripts/Common.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e288a2209cca94fbfaf8c2fb1c51506b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Actors.meta b/Assets/Obi/Scripts/Common/Actors.meta new file mode 100644 index 000000000..8cccbdd58 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Actors.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: df93aa6716fd8485b9e0d6e29b00d432 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Actors/IObiParticleCollection.cs b/Assets/Obi/Scripts/Common/Actors/IObiParticleCollection.cs new file mode 100644 index 000000000..59bb0dd8a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Actors/IObiParticleCollection.cs @@ -0,0 +1,20 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + // Interface for classes that hold a collection of particles. Contains method to get common particle properties. + public interface IObiParticleCollection + { + int particleCount { get; } + int activeParticleCount { get; } + bool usesOrientedParticles { get; } + + int GetParticleRuntimeIndex(int index); // returns solver or blueprint index, depending on implementation. + Vector3 GetParticlePosition(int index); + Quaternion GetParticleOrientation(int index); + void GetParticleAnisotropy(int index, ref Vector4 b1, ref Vector4 b2, ref Vector4 b3); + float GetParticleMaxRadius(int index); + Color GetParticleColor(int index); + } +} diff --git a/Assets/Obi/Scripts/Common/Actors/IObiParticleCollection.cs.meta b/Assets/Obi/Scripts/Common/Actors/IObiParticleCollection.cs.meta new file mode 100644 index 000000000..ec362ee05 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Actors/IObiParticleCollection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0281a989d5aa445b0bcb43597806adf7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Actors/ObiActor.cs b/Assets/Obi/Scripts/Common/Actors/ObiActor.cs new file mode 100644 index 000000000..38e59f1a7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Actors/ObiActor.cs @@ -0,0 +1,1233 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + + +namespace Obi +{ + + /** + * Represents a group of related particles. ObiActor does not make + * any assumptions about the relationship between these particles, except that they get allocated + * and released together. + */ + [ExecuteInEditMode] + [DisallowMultipleComponent] + public abstract class ObiActor : MonoBehaviour, IObiParticleCollection + { + public class ObiActorSolverArgs : System.EventArgs + { + public ObiSolver solver { get; } + + public ObiActorSolverArgs(ObiSolver solver) + { + this.solver = solver; + } + } + + public delegate void ActorCallback(ObiActor actor); + public delegate void ActorStepCallback(ObiActor actor,float stepTime); + public delegate void ActorBlueprintCallback(ObiActor actor,ObiActorBlueprint blueprint); + + /// + /// Called when the actor blueprint has been loaded into the solver. + /// + public event ActorBlueprintCallback OnBlueprintLoaded; + + /// + /// Called when the actor blueprint has been unloaded from the solver. + /// + public event ActorBlueprintCallback OnBlueprintUnloaded; + + /// + /// Called at the start of the solver's FixedUpdate (for Fixed and LateFixed updaters) or the solver's Update (for Late updaters) + /// + public event ActorCallback OnPrepareFrame; + + /// + /// Called at the beginning of a time step, before dirty constraints and active particles have been updated. + /// + public event ActorStepCallback OnPrepareStep; + + /// + /// Called at the beginning of a time step, after dirty constraints and active particles have been updated. + /// + public event ActorStepCallback OnBeginStep; + + /// + /// Called at the beginning of each substep. + /// + public event ActorStepCallback OnSubstep; + + /// + /// Called at the end of a timestep, after external forces have been reset and collision callbacks called. + /// + public event ActorStepCallback OnEndStep; + + /// + /// Called at the end of each frame. + /// + public event ActorCallback OnInterpolate; + + [HideInInspector] protected int m_ActiveParticleCount = 0; + + /// + /// Index of each one of the actor's particles in the solver. + /// + [HideInInspector] public int[] solverIndices; + + /// + /// For each of the actor's constraint types, offset of every batch in the solver. + /// + [HideInInspector] public List[] solverBatchOffsets; + + protected ObiSolver m_Solver; + protected bool m_Loaded = false; + + private ObiActorBlueprint state; + private ObiActorBlueprint m_BlueprintInstance; + private ObiPinConstraintsData m_PinConstraints; + [SerializeField][HideInInspector] protected ObiCollisionMaterial m_CollisionMaterial; + [SerializeField][HideInInspector] protected bool m_SurfaceCollisions = false; + + /// + /// The solver in charge of simulating this actor. + /// + /// This is the first ObiSlver component found up the actor's hierarchy. + public ObiSolver solver + { + get { return m_Solver; } + } + + /// + /// True if the actor blueprint has been loaded into a solver. + /// If true, it guarantees actor.solver, actor.solverIndices and actor.solverBatchOffsets won't be null. + /// + public bool isLoaded + { + get { return m_Loaded; } + } + + /// + /// The collision material being used by this actor. + /// + public ObiCollisionMaterial collisionMaterial + { + get + { + return m_CollisionMaterial; + } + set + { + if (m_CollisionMaterial != value) + { + m_CollisionMaterial = value; + UpdateCollisionMaterials(); + } + } + } + + /// + /// Whether to use simplices (triangles, edges) for contact generation. + /// + public virtual bool surfaceCollisions + { + get + { + return m_SurfaceCollisions; + } + set + { + if (value != m_SurfaceCollisions) + { + m_SurfaceCollisions = value; + if (m_Solver != null) + m_Solver.dirtySimplices = true; + } + } + } + + /// + /// Amount of particles allocated by this actor. + /// + public int particleCount + { + get + { + return sourceBlueprint != null ? sourceBlueprint.particleCount : 0; + } + } + + /// + /// Amount of particles in use by this actor. + /// + /// This will always be equal to or smaller than . + public int activeParticleCount + { + get + { + return m_ActiveParticleCount; + } + } + + /// + /// Whether this actors makes use of particle orientations or not. + /// + public bool usesOrientedParticles + { + get + { + return sourceBlueprint != null && + sourceBlueprint.invRotationalMasses != null && sourceBlueprint.invRotationalMasses.Length > 0 && + sourceBlueprint.orientations != null && sourceBlueprint.orientations.Length > 0 && + sourceBlueprint.restOrientations != null && sourceBlueprint.restOrientations.Length > 0; + } + } + + /// + /// If true, it means particles may not be completely spherical, but ellipsoidal. + /// + public virtual bool usesAnisotropicParticles + { + get + { + return false; + } + } + + /// + /// If true, it means external forces aren't applied to the particles directly. + /// + /// For instance, cloth uses aerodynamic constraints to do so, and fluid uses drag. + public virtual bool usesCustomExternalForces + { + get { return false; } + } + + /// + /// Matrix that transforms from the actor's local space to the solver's local space. + /// + /// If there's no solver present, this is the same as the actor's local to world matrix. + public Matrix4x4 actorLocalToSolverMatrix + { + get + { + if (m_Solver != null) + return m_Solver.transform.worldToLocalMatrix * transform.localToWorldMatrix; + else + return transform.localToWorldMatrix; + } + } + + /// + /// Matrix that transforms from the solver's local space to the actor's local space. + /// + /// If there's no solver present, this is the same as the actor's world to local matrix. + /// This is always the same as the inverse of . + public Matrix4x4 actorSolverToLocalMatrix + { + get + { + if (m_Solver != null) + return transform.worldToLocalMatrix * m_Solver.transform.localToWorldMatrix; + else + return transform.worldToLocalMatrix; + } + } + + /// + /// Reference to the blueprint asset used by this actor. + /// + public abstract ObiActorBlueprint sourceBlueprint + { + get; + } + + /// + /// Reference to the blueprint in use by this actor. + /// + /// If you haven't called before, this will be the same as . + /// If you have called before, it will be the same as . + public ObiActorBlueprint sharedBlueprint + { + get + { + if (m_BlueprintInstance != null) + return m_BlueprintInstance; + return sourceBlueprint; + } + } + + /// + /// Returns a unique instance of this actor's . + /// + /// This is mostly used when the actor needs to change some blueprint data at runtime, + /// and you don't want to change the blueprint asset as this would affect all other actors using it. Tearable cloth and ropes + /// make use of this. + public ObiActorBlueprint blueprint + { + get + { + if (m_BlueprintInstance == null && sourceBlueprint != null) + m_BlueprintInstance = Instantiate(sourceBlueprint); + + return m_BlueprintInstance; + } + } + + protected virtual void Awake() + { +#if UNITY_EDITOR + + // Check if this script's GameObject is in a PrefabStage +#if UNITY_2021_2_OR_NEWER + var prefabStage = UnityEditor.SceneManagement.PrefabStageUtility.GetPrefabStage(gameObject); +#else + var prefabStage = UnityEditor.Experimental.SceneManagement.PrefabStageUtility.GetPrefabStage(gameObject); +#endif + + if (prefabStage != null) + { + // Only create a solver if there's not one up our hierarchy. + if (GetComponentInParent() == null) + { + // Add our own environment root and move it to the PrefabStage scene + var newParent = new GameObject("ObiSolver (Environment)", typeof(ObiSolver), typeof(ObiLateFixedUpdater)); + newParent.GetComponent().solvers.Add(newParent.GetComponent()); + UnityEngine.SceneManagement.SceneManager.MoveGameObjectToScene(newParent, gameObject.scene); + transform.root.parent = newParent.transform; + } + } +#endif + } + + protected virtual void OnDestroy() + { + if (m_BlueprintInstance != null) + DestroyImmediate(m_BlueprintInstance); + } + + protected virtual void OnEnable() + { + solverBatchOffsets = new List[Oni.ConstraintTypeCount]; + for (int i = 0; i < solverBatchOffsets.Length; ++i) + solverBatchOffsets[i] = new List(); + + m_PinConstraints = new ObiPinConstraintsData(); + + // when an actor is enabled, grabs the first solver up its hierarchy, + // initializes it (if not initialized) and gets added to it. + m_Solver = GetComponentInParent(); + + AddToSolver(); + } + + protected virtual void OnDisable() + { + RemoveFromSolver(); + } + + protected virtual void OnValidate() + { + } + + private void OnTransformParentChanged() + { + if (isActiveAndEnabled) + SetSolver(GetComponentInParent()); + } + + /// + /// Adds this actor to its solver, if any. Automatically called by . + /// + public void AddToSolver() + { + if (m_Solver != null) + { + if (!m_Solver.AddActor(this)) + m_Solver = null; + else if (sourceBlueprint != null) + sourceBlueprint.OnBlueprintGenerate += OnBlueprintRegenerate; + } + } + + /// + /// Remove this actor from its solver, if any. Automatically called by . + /// + public void RemoveFromSolver() + { + if (m_Solver != null) + { + m_Solver.RemoveActor(this); + if (sourceBlueprint != null) + sourceBlueprint.OnBlueprintGenerate -= OnBlueprintRegenerate; + } + } + + /// + /// Forcibly changed the solver in charge of this actor + /// + /// The solver we want to put in charge of this actor. + /// First it removes the actor from its current solver, then changes the actor's current solver and then readds it to this new solver. + protected void SetSolver(ObiSolver newSolver) + { + // In case the first solver up our hierarchy is not the one we're currently in, change solver. + if (newSolver != m_Solver) + { + RemoveFromSolver(); + + m_Solver = newSolver; + + AddToSolver(); + } + } + + protected virtual void OnBlueprintRegenerate(ObiActorBlueprint blueprint) + { + // Reload: + RemoveFromSolver(); + AddToSolver(); + } + + protected void UpdateCollisionMaterials() + { + if (m_Solver != null && solverIndices != null) + { + int index = m_CollisionMaterial != null ? m_CollisionMaterial.handle.index : -1; + for (int i = 0; i < solverIndices.Length; i++) + solver.collisionMaterials[solverIndices[i]] = index; + } + } + + /// + /// Copies all data (position, velocity, phase, etc) from one particle to another one. + /// + /// Index in the actor arrays of the particle we will copy data from. + /// Index in the actor arrays of the particle we will copy data to. + /// + /// Whether the indices passed are within actor bounds. + /// + /// Extend this method to implement copying your own custom particle data in custom actors. + public virtual bool CopyParticle(int actorSourceIndex, int actorDestIndex) + { + if (!isLoaded || + actorSourceIndex < 0 || actorSourceIndex >= solverIndices.Length || + actorDestIndex < 0 || actorDestIndex >= solverIndices.Length) + return false; + + int sourceIndex = solverIndices[actorSourceIndex]; + int destIndex = solverIndices[actorDestIndex]; + + // Copy solver data: + m_Solver.prevPositions[destIndex] = m_Solver.prevPositions[sourceIndex]; + m_Solver.renderablePositions[destIndex] = m_Solver.renderablePositions[sourceIndex]; + m_Solver.startPositions[destIndex] = m_Solver.positions[destIndex] = m_Solver.positions[sourceIndex]; + m_Solver.startOrientations[destIndex] = m_Solver.orientations[destIndex] = m_Solver.orientations[sourceIndex]; + m_Solver.restPositions[destIndex] = m_Solver.restPositions[sourceIndex]; + m_Solver.restOrientations[destIndex] = m_Solver.restOrientations[sourceIndex]; + m_Solver.velocities[destIndex] = m_Solver.velocities[sourceIndex]; + m_Solver.angularVelocities[destIndex] = m_Solver.velocities[sourceIndex]; + m_Solver.invMasses[destIndex] = m_Solver.invMasses[sourceIndex]; + m_Solver.invRotationalMasses[destIndex] = m_Solver.invRotationalMasses[sourceIndex]; + m_Solver.principalRadii[destIndex] = m_Solver.principalRadii[sourceIndex]; + m_Solver.phases[destIndex] = m_Solver.phases[sourceIndex]; + m_Solver.filters[destIndex] = m_Solver.filters[sourceIndex]; + m_Solver.colors[destIndex] = m_Solver.colors[sourceIndex]; + + return true; + } + + /// + /// Teleports one actor particle to a certain position in solver space. + /// + /// Index in the actor arrays of the particle we will teeleport. + /// Position to teleport the particle to, expressed in solver space. + public void TeleportParticle(int actorIndex, Vector3 position) + { + if (!isLoaded || actorIndex < 0 || actorIndex >= solverIndices.Length) + return; + + int solverIndex = solverIndices[actorIndex]; + + Vector4 delta = (Vector4)position - m_Solver.positions[solverIndex]; + m_Solver.positions[solverIndex] += delta; + m_Solver.prevPositions[solverIndex] += delta; + m_Solver.renderablePositions[solverIndex] += delta; + m_Solver.startPositions[solverIndex] += delta; + + } + + /// + /// Teleports the entire actor to a new location / orientation. + /// + /// World space position to teleport the actor to. + /// World space rotation to teleport the actor to. + public virtual void Teleport(Vector3 position, Quaternion rotation) + { + if (!isLoaded) + return; + + // Subtract current transform position/rotation, then add new world space position/rotation. + // Lastly, set the transform to the new position/rotation. + Matrix4x4 offset = solver.transform.worldToLocalMatrix * + Matrix4x4.TRS(position, Quaternion.identity, Vector3.one) * + Matrix4x4.TRS(Vector3.zero, rotation, Vector3.one) * + Matrix4x4.TRS(Vector3.zero, Quaternion.Inverse(transform.rotation), Vector3.one) * + Matrix4x4.TRS(-transform.position, Quaternion.identity, Vector3.one) * + solver.transform.localToWorldMatrix; + + Quaternion rotOffset = offset.rotation; + + for (int i = 0; i < solverIndices.Length; i++) + { + int solverIndex = solverIndices[i]; + + m_Solver.positions[solverIndex] = + m_Solver.prevPositions[solverIndex] = + m_Solver.renderablePositions[solverIndex] = + m_Solver.startPositions[solverIndex] = offset.MultiplyPoint3x4(m_Solver.positions[solverIndex]); + + m_Solver.orientations[solverIndex] = + m_Solver.prevOrientations[solverIndex] = + m_Solver.renderableOrientations[solverIndex] = + m_Solver.startOrientations[solverIndex] = rotOffset * m_Solver.orientations[solverIndex]; + + m_Solver.velocities[solverIndex] = Vector4.zero; + m_Solver.angularVelocities[solverIndex] = Vector4.zero; + } + + transform.position = position; + transform.rotation = rotation; + + } + + protected virtual void SwapWithFirstInactiveParticle(int actorIndex) + { + // update solver indices: + m_Solver.particleToActor[solverIndices[actorIndex]].indexInActor = m_ActiveParticleCount; + m_Solver.particleToActor[solverIndices[m_ActiveParticleCount]].indexInActor = actorIndex; + + solverIndices.Swap(actorIndex, m_ActiveParticleCount); + } + + /// + /// Activates one particle. + /// + /// Index in the actor arrays of the particle we will activate. + /// + /// True if the particle was inactive. False if the particle was already active. + /// + /// This operation preserves the relative order of all particles. + public bool ActivateParticle(int actorIndex) + { + if (IsParticleActive(actorIndex)) + return false; + + SwapWithFirstInactiveParticle(actorIndex); + m_ActiveParticleCount++; + m_Solver.dirtyActiveParticles = true; + + return true; + } + + /// + /// Deactivates one particle. + /// + /// Index in the actor arrays of the particle we will deactivate. + /// + /// True if the particle was active. False if the particle was already inactive. + /// + /// This operation does not preserve the relative order of other particles, because the last active particle will + /// swap positions with the particle being deactivated. + public bool DeactivateParticle(int actorIndex) + { + if (!IsParticleActive(actorIndex)) + return false; + + m_ActiveParticleCount--; + SwapWithFirstInactiveParticle(actorIndex); + m_Solver.dirtyActiveParticles = true; + + return true; + } + + /// + /// Returns whether a given particle is active. + /// + /// Index in the actor arrays of the particle. + /// + /// True if the particle is active. False if the particle is inactive. + /// + public bool IsParticleActive(int actorIndex) + { + return actorIndex < m_ActiveParticleCount; + } + + /// + /// Updates particle phases in the solver at runtime, including or removing the self-collision flag. + /// + public virtual void SetSelfCollisions(bool selfCollisions) + { + if (m_Solver != null && Application.isPlaying && isLoaded) + { + for (int i = 0; i < particleCount; i++) + { + if (selfCollisions) + m_Solver.phases[solverIndices[i]] |= (int)ObiUtils.ParticleFlags.SelfCollide; + else + m_Solver.phases[solverIndices[i]] &= ~(int)ObiUtils.ParticleFlags.SelfCollide; + } + } + } + + /// + /// Updates particle phases in the solver at runtime, including or removing the one-sided flag. + /// + public virtual void SetOneSided(bool oneSided) + { + if (m_Solver != null && Application.isPlaying && isLoaded) + { + for (int i = 0; i < particleCount; i++) + { + if (oneSided) + m_Solver.phases[solverIndices[i]] |= (int)ObiUtils.ParticleFlags.OneSided; + else + m_Solver.phases[solverIndices[i]] &= ~(int)ObiUtils.ParticleFlags.OneSided; + } + } + } + + /// + /// Marks simplices dirty. + /// + public void SetSimplicesDirty() + { + if (m_Solver != null) + m_Solver.dirtySimplices = true; + } + + /// + /// Marks a given constraint type as dirty. + /// + /// Type of the constraints that need re-creation. + /// This will cause the solver to perform a constraint re-creation at the start of the next step. Needed when the constraint data in an actor changes at runtime, + /// as a result of changing topology (torn cloth or ropes), or changes in internal constraint parameters such as compliance values. This is a relatively expensive operation, + /// so it's best to amortize as many constraint modification operations as possible in a single step. + public void SetConstraintsDirty(Oni.ConstraintType constraintType) + { + if (m_Solver != null) + m_Solver.dirtyConstraints |= (1 << (int)constraintType); + } + + /// + /// Returns the data representation of constraints of a given type being simulated by this solver. + /// + /// Type of the constraints that will be returned by this method. + /// + /// The runtime constraints of the type speficied. Most constraints are stored in the blueprint, with a couple notable exceptions: pin and stitch constraints + /// are always created at runtime, so they're not stored in the blueprint but in the actor itself. + /// + public IObiConstraints GetConstraintsByType(Oni.ConstraintType type) + { + // pin constraints are a special case, because they're not stored in a blueprint. They are created at runtime at stored in the actor itself. + if (type == Oni.ConstraintType.Pin) + return m_PinConstraints; + + if (sharedBlueprint != null) + return sharedBlueprint.GetConstraintsByType(type); + + return null; + } + + + + /// + /// Call when some particle properties have been modified and need updating. + /// + /// Does not do anything by default. Call when manually modifying particle properties in the solver, should the actor need to do some book keeping. + /// For softbodies, updates their rest state. + public virtual void UpdateParticleProperties() + { + } + + /// + /// Returns the index of this particle in the solver arrays. + /// + /// Index of the particle in the actor arrays. + /// + /// The index of a given particle in the solver arrays. + /// + /// At runtime when the blueprint is loaded, this is the same as calling actor.solverIndices[solverIndex]. + /// If the blueprint is not loaded it will return the same index passed to it: actorIndex. + /// Note that this function does not perform any range checking. + public int GetParticleRuntimeIndex(int actorIndex) + { + if (isLoaded) + return solverIndices[actorIndex]; + return actorIndex; + } + + + /// + /// Given a solver particle index, returns the position of that particle in world space. + /// + /// Index of the particle in the solver arrays. + /// + /// The position of a given particle in world space. + /// + public Vector3 GetParticlePosition(int solverIndex) + { + if (isLoaded) + return m_Solver.transform.TransformPoint(m_Solver.renderablePositions[solverIndex]); + return Vector3.zero; + } + + /// + /// Given a solver particle index, returns the orientation of that particle in world space. + /// + /// Index of the particle in the solver arrays. + /// + /// The orientation of a given particle in world space. + /// + public Quaternion GetParticleOrientation(int solverIndex) + { + if (isLoaded) + return m_Solver.transform.rotation * m_Solver.renderableOrientations[solverIndex]; + return Quaternion.identity; + } + + /** + * + */ + + /// + /// Given a solver particle index, returns the anisotropic frame of that particle in world space. + /// + /// Index of the particle in the solver arrays. + /// First basis vector of the frame. Contains particle radius along this axis in the 4th position. + /// Second basis vector of the frame. Contains particle radius along this axis in the 4th position.. + /// Third basis vector of the frame. Contains particle radius along this axis in the 4th position. + public void GetParticleAnisotropy(int solverIndex, ref Vector4 b1, ref Vector4 b2, ref Vector4 b3) + { + if (isLoaded && usesAnisotropicParticles) + { + int baseIndex = solverIndex * 3; + + b1 = m_Solver.transform.TransformDirection(m_Solver.anisotropies[baseIndex]); + b2 = m_Solver.transform.TransformDirection(m_Solver.anisotropies[baseIndex + 1]); + b3 = m_Solver.transform.TransformDirection(m_Solver.anisotropies[baseIndex + 2]); + + b1[3] = m_Solver.maxScale * m_Solver.anisotropies[baseIndex][3]; + b2[3] = m_Solver.maxScale * m_Solver.anisotropies[baseIndex + 1][3]; + b3[3] = m_Solver.maxScale * m_Solver.anisotropies[baseIndex + 2][3]; + } + else + { + b1[3] = b2[3] = b3[3] = m_Solver.maxScale * m_Solver.principalRadii[solverIndex][0]; + } + } + + /// + /// Given a solver particle index, returns the maximum world space radius of that particle, in any axis. + /// + /// Index of the particle in the solver arrays. + /// + /// The maximum radius of a given particle in world space. + /// + public float GetParticleMaxRadius(int solverIndex) + { + if (isLoaded) + return m_Solver.maxScale * m_Solver.principalRadii[solverIndex][0]; + return 0; + } + + + /// + /// Given a solver particle index, returns the color of that particle. + /// + /// Index of the particle in the solver arrays. + /// + /// The color of the particle. + /// + public Color GetParticleColor(int solverIndex) + { + if (isLoaded) + return m_Solver.colors[solverIndex]; + return Color.white; + } + + /// + /// Sets a given category value for all particles in the actor. + /// + /// Category value. + public void SetFilterCategory(int newCategory) + { + newCategory = Mathf.Clamp(newCategory, ObiUtils.MinCategory, ObiUtils.MaxCategory); + + for (int i = 0; i < particleCount; ++i) + { + int solverIndex = solverIndices[i]; + var mask = ObiUtils.GetMaskFromFilter(solver.filters[solverIndex]); + solver.filters[solverIndex] = ObiUtils.MakeFilter(mask, newCategory); + } + } + + /// + /// Sets a given mask value for all particles in the actor. + /// + /// Mask value. + public void SetFilterMask(int newMask) + { + newMask = Mathf.Clamp(newMask, ObiUtils.CollideWithNothing, ObiUtils.CollideWithEverything); + + for (int i = 0; i < particleCount; ++i) + { + int solverIndex = solverIndices[i]; + var category = ObiUtils.GetCategoryFromFilter(solver.filters[solverIndex]); + solver.filters[solverIndex] = ObiUtils.MakeFilter(newMask, category); + } + } + + /// + /// Sets the inverse mass of each particle so that the total actor mass matches the one passed by parameter. + /// + /// The actor's total mass. + public void SetMass(float mass) + { + if (Application.isPlaying && isLoaded && activeParticleCount > 0) + { + float invMass = 1.0f / (mass / activeParticleCount); + + for (int i = 0; i < activeParticleCount; ++i) + { + int solverIndex = solverIndices[i]; + m_Solver.invMasses[solverIndex] = invMass; + m_Solver.invRotationalMasses[solverIndex] = invMass; + } + } + } + + /// + /// Returns the actor's mass (sum of all particle masses), and the position of its center of mass. + /// + /// The actor's center of mass, expressed in solver space. + /// Particles with infinite mass (invMass = 0) are ignored. + public float GetMass(out Vector3 com) + { + + float actorMass = 0; + com = Vector3.zero; + + if (Application.isPlaying && isLoaded && activeParticleCount > 0) + { + Vector4 com4 = Vector4.zero; + + for (int i = 0; i < activeParticleCount; ++i) + { + if (m_Solver.invMasses[solverIndices[i]] > 0) + { + float mass = 1.0f / m_Solver.invMasses[solverIndices[i]]; + actorMass += mass; + com4 += m_Solver.positions[solverIndices[i]] * mass; + } + } + + com = com4; + if (actorMass > float.Epsilon) + com /= actorMass; + } + + return actorMass; + } + + /// + ///Adds an external force to all particles in the actor. + /// + /// Value expressed in solver space. + /// Type of "force" applied. + public void AddForce(Vector3 force, ForceMode forceMode) + { + + Vector3 com; + float mass = GetMass(out com); + + if (!float.IsInfinity(mass)) + { + + Vector4 bodyForce = force; + + switch (forceMode) + { + case ForceMode.Force: + { + + bodyForce /= mass; + + for (int i = 0; i < solverIndices.Length; ++i) + m_Solver.externalForces[solverIndices[i]] += bodyForce / m_Solver.invMasses[solverIndices[i]]; + + } + break; + case ForceMode.Acceleration: + { + + for (int i = 0; i < solverIndices.Length; ++i) + m_Solver.externalForces[solverIndices[i]] += bodyForce / m_Solver.invMasses[solverIndices[i]]; + + } + break; + case ForceMode.Impulse: + { + + bodyForce /= mass; + + for (int i = 0; i < solverIndices.Length; ++i) + m_Solver.externalForces[solverIndices[i]] += bodyForce / m_Solver.invMasses[solverIndices[i]] / Time.fixedDeltaTime; + + } + break; + case ForceMode.VelocityChange: + { + + for (int i = 0; i < solverIndices.Length; ++i) + m_Solver.externalForces[solverIndices[i]] += bodyForce / m_Solver.invMasses[solverIndices[i]] / Time.fixedDeltaTime; + + } + break; + } + } + } + + /// + /// Adds a torque to the actor. + /// + /// Value expressed in solver space. + /// Type of "torque" applied. + public void AddTorque(Vector3 force, ForceMode forceMode) + { + + Vector3 com; + float mass = GetMass(out com); + + if (!float.IsInfinity(mass)) + { + + Vector3 bodyForce = force; + + switch (forceMode) + { + case ForceMode.Force: + { + + bodyForce /= mass; + + for (int i = 0; i < solverIndices.Length; ++i) + { + + Vector3 v = Vector3.Cross(bodyForce / m_Solver.invMasses[solverIndices[i]], (Vector3)m_Solver.positions[solverIndices[i]] - com); + m_Solver.externalForces[solverIndices[i]] += new Vector4(v.x, v.y, v.z, 0); + } + + } + break; + case ForceMode.Acceleration: + { + + for (int i = 0; i < solverIndices.Length; ++i) + { + + Vector3 v = Vector3.Cross(bodyForce / m_Solver.invMasses[solverIndices[i]], (Vector3)m_Solver.positions[solverIndices[i]] - com); + m_Solver.externalForces[solverIndices[i]] += new Vector4(v.x, v.y, v.z, 0); + } + + } + break; + case ForceMode.Impulse: + { + + bodyForce /= mass; + + for (int i = 0; i < solverIndices.Length; ++i) + { + + Vector3 v = Vector3.Cross(bodyForce / m_Solver.invMasses[solverIndices[i]] / Time.fixedDeltaTime, (Vector3)m_Solver.positions[solverIndices[i]] - com); + m_Solver.externalForces[solverIndices[i]] += new Vector4(v.x, v.y, v.z, 0); + } + + } + break; + case ForceMode.VelocityChange: + { + + for (int i = 0; i < solverIndices.Length; ++i) + { + + Vector3 v = Vector3.Cross(bodyForce / m_Solver.invMasses[solverIndices[i]] / Time.fixedDeltaTime, (Vector3)m_Solver.positions[solverIndices[i]] - com); + m_Solver.externalForces[solverIndices[i]] += new Vector4(v.x, v.y, v.z, 0); + } + + } + break; + } + } + } + + #region Blueprints + + private void LoadBlueprintParticles(ObiActorBlueprint bp, int groupID) + { + + Matrix4x4 l2sTransform = actorLocalToSolverMatrix; + Quaternion l2sRotation = l2sTransform.rotation; + + for (int i = 0; i < solverIndices.Length; i++) + { + int k = solverIndices[i]; + + if (bp.positions != null && i < bp.positions.Length) + { + m_Solver.startPositions[k] = m_Solver.prevPositions[k] = m_Solver.positions[k] = l2sTransform.MultiplyPoint3x4(bp.positions[i]); + m_Solver.renderablePositions[k] = l2sTransform.MultiplyPoint3x4(bp.positions[i]); + } + + if (bp.orientations != null && i < bp.orientations.Length) + { + m_Solver.startOrientations[k] = m_Solver.prevOrientations[k] = m_Solver.orientations[k] = l2sRotation * bp.orientations[i]; + m_Solver.renderableOrientations[k] = l2sRotation * bp.orientations[i]; + } + + if (bp.restPositions != null && i < bp.restPositions.Length) + m_Solver.restPositions[k] = bp.restPositions[i]; + + if (bp.restOrientations != null && i < bp.restOrientations.Length) + m_Solver.restOrientations[k] = bp.restOrientations[i]; + + if (bp.velocities != null && i < bp.velocities.Length) + m_Solver.velocities[k] = l2sTransform.MultiplyVector(bp.velocities[i]); + + if (bp.angularVelocities != null && i < bp.angularVelocities.Length) + m_Solver.angularVelocities[k] = l2sTransform.MultiplyVector(bp.angularVelocities[i]); + + if (bp.invMasses != null && i < bp.invMasses.Length) + m_Solver.invMasses[k] = bp.invMasses[i]; + + if (bp.invRotationalMasses != null && i < bp.invRotationalMasses.Length) + m_Solver.invRotationalMasses[k] = bp.invRotationalMasses[i]; + + if (bp.principalRadii != null && i < bp.principalRadii.Length) + m_Solver.principalRadii[k] = bp.principalRadii[i]; + + if (bp.filters != null && i < bp.filters.Length) + m_Solver.filters[k] = bp.filters[i]; + + if (bp.colors != null && i < bp.colors.Length) + m_Solver.colors[k] = bp.colors[i]; + + m_Solver.phases[k] = ObiUtils.MakePhase(groupID, 0); + } + + m_ActiveParticleCount = sourceBlueprint.activeParticleCount; + m_Solver.dirtyActiveParticles = true; + m_Solver.dirtySimplices = true; + + // Push collision materials: + UpdateCollisionMaterials(); + + } + + private void UnloadBlueprintParticles() + { + // Update active particles. + m_ActiveParticleCount = 0; + m_Solver.dirtyActiveParticles = true; + m_Solver.dirtySimplices = true; + } + + /// + /// Resets the position and velocity of all particles, to the values stored in the blueprint. + /// + /// Note however + /// that this does not affect constraints, so if you've torn a cloth/rope or resized a rope, calling ResetParticles won't restore + /// the initial topology of the actor. + public void ResetParticles() + { + if (isLoaded) + { + Matrix4x4 l2sTransform = actorLocalToSolverMatrix; + Quaternion l2sRotation = l2sTransform.rotation; + + for (int i = 0; i < particleCount; ++i) + { + int solverIndex = solverIndices[i]; + + solver.renderablePositions[solverIndex] = solver.positions[solverIndex] = l2sTransform.MultiplyPoint3x4(sourceBlueprint.positions[i]); + solver.velocities[solverIndex] = l2sTransform.MultiplyVector(sourceBlueprint.velocities[i]); + + if (usesOrientedParticles) + { + solver.renderableOrientations[solverIndex] = solver.orientations[solverIndex] = l2sRotation * sourceBlueprint.orientations[i]; + solver.angularVelocities[solverIndex] = l2sTransform.MultiplyVector(sourceBlueprint.angularVelocities[i]); + } + } + } + } + + #endregion + + #region State + + + /// + /// Resets the position and velocity of all particles, to the values stored in the blueprint. + /// + /// The blueprint that we want to fill with current particle data. + /// Note that this will not resize the blueprint's data arrays, and that it does not perform range checking. For this reason, + /// you must supply a blueprint large enough to store all particles' data. + public void SaveStateToBlueprint(ObiActorBlueprint bp) + { + if (bp == null) + return; + + Matrix4x4 l2sTransform = actorLocalToSolverMatrix.inverse; + Quaternion l2sRotation = l2sTransform.rotation; + + for (int i = 0; i < solverIndices.Length; i++) + { + int k = solverIndices[i]; + + if (m_Solver.positions != null && k < m_Solver.positions.count) + bp.positions[i] = l2sTransform.MultiplyPoint3x4(m_Solver.positions[k]); + + if (m_Solver.velocities != null && k < m_Solver.velocities.count) + bp.velocities[i] = l2sTransform.MultiplyVector(m_Solver.velocities[k]); + } + } + + protected void StoreState() + { + DestroyImmediate(state); + state = Instantiate(sourceBlueprint); + SaveStateToBlueprint(state); + } + + public void ClearState() + { + DestroyImmediate(state); + } + + #endregion + + #region Solver callbacks + + /// + /// Loads this actor's blueprint into a given solver. Automatically called by . + /// + public virtual void LoadBlueprint(ObiSolver solver) + { + var bp = sharedBlueprint; + + // in case we have temporary state, load that instead of the original blueprint. + if (Application.isPlaying) + { + bp = state != null ? state : sourceBlueprint; + } + + m_Loaded = true; + + LoadBlueprintParticles(bp, solver.actors.Count); + solver.dirtyConstraints |= ~0; + + if (OnBlueprintLoaded != null) + OnBlueprintLoaded(this, null); + } + + /// + /// Unloads this actor's blueprint from a given solver. Automatically called by . + /// + public virtual void UnloadBlueprint(ObiSolver solver) + { + // instantiate blueprint and store current state in the instance: + if (Application.isPlaying) + { + StoreState(); + } + + m_Loaded = false; + + // unload the blueprint. + solver.dirtyConstraints |= ~0; + UnloadBlueprintParticles(); + + if (OnBlueprintUnloaded != null) + OnBlueprintUnloaded(this, null); + } + + public virtual void PrepareFrame() + { + if (OnPrepareFrame != null) + OnPrepareFrame(this); + } + + public virtual void PrepareStep(float stepTime) + { + if (OnPrepareStep != null) + OnPrepareStep(this, stepTime); + } + + public virtual void BeginStep(float stepTime) + { + if (OnBeginStep != null) + OnBeginStep(this,stepTime); + } + + public virtual void Substep(float substepTime) + { + if (OnSubstep != null) + OnSubstep(this,substepTime); + } + + public virtual void EndStep(float substepTime) + { + if (OnEndStep != null) + OnEndStep(this,substepTime); + } + + public virtual void Interpolate() + { + // Update particle renderable positions/orientations in the solver: + if (!Application.isPlaying && isLoaded) + { + Matrix4x4 l2sTransform = actorLocalToSolverMatrix; + Quaternion l2sRotation = l2sTransform.rotation; + + for (int i = 0; i < solverIndices.Length; i++) + { + int k = solverIndices[i]; + + if (sourceBlueprint.positions != null && i < sourceBlueprint.positions.Length) + { + m_Solver.renderablePositions[k] = l2sTransform.MultiplyPoint3x4(sourceBlueprint.positions[i]); + } + + if (sourceBlueprint.orientations != null && i < sourceBlueprint.orientations.Length) + { + m_Solver.renderableOrientations[k] = l2sRotation * sourceBlueprint.orientations[i]; + } + } + } + + if (OnInterpolate != null) + OnInterpolate(this); + } + + public virtual void OnSolverVisibilityChanged(bool visible) + { + } + + #endregion + + + } +} + diff --git a/Assets/Obi/Scripts/Common/Actors/ObiActor.cs.meta b/Assets/Obi/Scripts/Common/Actors/ObiActor.cs.meta new file mode 100644 index 000000000..2030a7c5a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Actors/ObiActor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4602f0908b7ed409dbe198de06df8955 +timeCreated: 1449041314 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends.meta b/Assets/Obi/Scripts/Common/Backends.meta new file mode 100644 index 000000000..22ad70e37 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c24459c92f72479e883a382c415ea21 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst.meta b/Assets/Obi/Scripts/Common/Backends/Burst.meta new file mode 100644 index 000000000..018fd9d48 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0ccea30afd7eb40d988c19314f42b11c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/BurstBackend.cs b/Assets/Obi/Scripts/Common/Backends/Burst/BurstBackend.cs new file mode 100644 index 000000000..0c4b373cb --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/BurstBackend.cs @@ -0,0 +1,27 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Mathematics; +using Unity.Collections; +using System; +using System.Collections; + +namespace Obi +{ + public class BurstBackend : IObiBackend + { +#region Solver + public ISolverImpl CreateSolver(ObiSolver solver, int capacity) + { + return new BurstSolverImpl(solver); + } + public void DestroySolver(ISolverImpl solver) + { + if (solver != null) + solver.Destroy(); + } +#endregion + + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/BurstBackend.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/BurstBackend.cs.meta new file mode 100644 index 000000000..0fa2befc2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/BurstBackend.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3c1f86ca79494b9198874007d195a38 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/BurstIntegration.cs b/Assets/Obi/Scripts/Common/Backends/Burst/BurstIntegration.cs new file mode 100644 index 000000000..d25a5ba29 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/BurstIntegration.cs @@ -0,0 +1,46 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) + +using Unity.Mathematics; +using System.Runtime.CompilerServices; + +namespace Obi +{ + public static class BurstIntegration + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 IntegrateLinear(float4 position, float4 velocity, float dt) + { + return position + velocity * dt; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 DifferentiateLinear(float4 position, float4 prevPosition, float dt) + { + return (position - prevPosition) / dt; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion AngularVelocityToSpinQuaternion(quaternion rotation, float4 angularVelocity, float dt) + { + var delta = new quaternion(angularVelocity.x, + angularVelocity.y, + angularVelocity.z, 0); + + return new quaternion(0.5f * math.mul(delta,rotation).value * dt); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion IntegrateAngular(quaternion rotation, float4 angularVelocity, float dt) + { + rotation.value += AngularVelocityToSpinQuaternion(rotation,angularVelocity, dt).value; + return math.normalize(rotation); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 DifferentiateAngular(quaternion rotation, quaternion prevRotation, float dt) + { + return new float4((math.mul(rotation, math.inverse(prevRotation)).value * 2.0f / dt).xyz, 0); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/BurstIntegration.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/BurstIntegration.cs.meta new file mode 100644 index 000000000..a4dbd1145 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/BurstIntegration.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ba69cdb85ae0f4523810cb349ded03d5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/BurstJobHandle.cs b/Assets/Obi/Scripts/Common/Backends/Burst/BurstJobHandle.cs new file mode 100644 index 000000000..189ccdd8b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/BurstJobHandle.cs @@ -0,0 +1,28 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Jobs; + +namespace Obi +{ + public class BurstJobHandle : IObiJobHandle + { + private JobHandle handle = new JobHandle(); + + public BurstJobHandle SetHandle(JobHandle newHandle) + { + handle = newHandle; + return this; + } + + public void Complete() + { + handle.Complete(); + } + + public void Release() + { + handle = new JobHandle(); + } + } +} +#endif + diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/BurstJobHandle.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/BurstJobHandle.cs.meta new file mode 100644 index 000000000..dc7d643a0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/BurstJobHandle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dc827231eb963458fad0d395a186f910 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/BurstMath.cs b/Assets/Obi/Scripts/Common/Backends/Burst/BurstMath.cs new file mode 100644 index 000000000..e333ae55d --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/BurstMath.cs @@ -0,0 +1,706 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; +using System.Collections.Generic; +using UnityEngine; +using Unity.Collections; +using Unity.Jobs; +using Unity.Mathematics; +using Unity.Burst; +using System.Runtime.CompilerServices; +using Unity.Collections.LowLevel.Unsafe; + +namespace Obi +{ + public static class BurstMath + { + + public const float epsilon = 0.0000001f; + public const float zero = 0; + public const float one = 1; + public static readonly float golden = (math.sqrt(5.0f) + 1) / 2.0f; + + // multiplies a column vector by a row vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 multrnsp(float4 column, float4 row) + { + return new float3x3(column[0] * row[0], column[0] * row[1], column[0] * row[2], + column[1] * row[0], column[1] * row[1], column[1] * row[2], + column[2] * row[0], column[2] * row[1], column[2] * row[2]); + } + + // multiplies a column vector by a row vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 multrnsp4(float4 column, float4 row) + { + return new float4x4(column[0] * row[0], column[0] * row[1], column[0] * row[2], 0, + column[1] * row[0], column[1] * row[1], column[1] * row[2], 0, + column[2] * row[0], column[2] * row[1], column[2] * row[2], 0, + 0, 0, 0, 1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 project(this float4 vector, float4 onto) + { + float len = math.lengthsq(onto); + if (len < epsilon) + return float4.zero; + return math.dot(onto, vector) * onto / len; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 TransformInertiaTensor(float4 tensor, quaternion rotation) + { + float4x4 rotMatrix = rotation.toMatrix(); + return math.mul(rotMatrix, math.mul(tensor.asDiagonal(), math.transpose(rotMatrix))); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float RotationalInvMass(float4x4 inverseInertiaTensor, float4 point, float4 direction) + { + float4 cr = math.mul(inverseInertiaTensor, new float4(math.cross(point.xyz, direction.xyz), 0)); + return math.dot(math.cross(cr.xyz, point.xyz), direction.xyz); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 GetParticleVelocityAtPoint(float4 position, float4 prevPosition, float4 point, float dt) + { + // no angular velocity, so calculate and return linear velocity only: + return BurstIntegration.DifferentiateLinear(position, prevPosition, dt); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 GetParticleVelocityAtPoint(float4 position, float4 prevPosition, quaternion orientation, quaternion prevOrientation, float4 point, float dt) + { + // calculate both linear and angular velocities: + float4 linearVelocity = BurstIntegration.DifferentiateLinear(position, prevPosition, dt); + float4 angularVelocity = BurstIntegration.DifferentiateAngular(orientation, prevOrientation, dt); + return linearVelocity + new float4(math.cross(angularVelocity.xyz, (point - prevPosition).xyz), 0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 GetRigidbodyVelocityAtPoint(int rigidbodyIndex, + float4 point, + NativeArray rigidbodies, + NativeArray linearDeltas, + NativeArray angularDeltas, + BurstAffineTransform solverToWorld) + { + float4 linear = rigidbodies[rigidbodyIndex].velocity + linearDeltas[rigidbodyIndex]; + float4 angular = rigidbodies[rigidbodyIndex].angularVelocity + angularDeltas[rigidbodyIndex]; + float4 r = solverToWorld.TransformPoint(point) - rigidbodies[rigidbodyIndex].com; + + // Point is assumed to be expressed in solver space. Since rigidbodies are expressed in world space, we need to convert the + // point to world space, and convert the resulting velocity back to solver space. + return solverToWorld.InverseTransformVector(linear + new float4(math.cross(angular.xyz, r.xyz), 0)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 GetRigidbodyVelocityAtPoint(int rigidbodyIndex, + float4 point, + NativeArray rigidbodies, + BurstAffineTransform solverToWorld) + { + float4 linear = rigidbodies[rigidbodyIndex].velocity; + float4 angular = rigidbodies[rigidbodyIndex].angularVelocity; + float4 r = solverToWorld.TransformPoint(point) - rigidbodies[rigidbodyIndex].com; + + // Point is assumed to be expressed in solver space. Since rigidbodies are expressed in world space, we need to convert the + // point to world space, and convert the resulting velocity back to solver space. + return solverToWorld.InverseTransformVector(linear + new float4(math.cross(angular.xyz, r.xyz), 0)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void ApplyImpulse(int rigidbodyIndex, + float4 impulse, + float4 point, + NativeArray rigidbodies, + NativeArray linearDeltas, + NativeArray angularDeltas, + BurstAffineTransform solverToWorld) + { + float4 impulseWS = solverToWorld.TransformVector(impulse); + float4 r = solverToWorld.TransformPoint(point) - rigidbodies[rigidbodyIndex].com; + linearDeltas[rigidbodyIndex] += rigidbodies[rigidbodyIndex].inverseMass * impulseWS; + angularDeltas[rigidbodyIndex] += math.mul(rigidbodies[rigidbodyIndex].inverseInertiaTensor, new float4(math.cross(r.xyz, impulseWS.xyz), 0)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void ApplyDeltaQuaternion(int rigidbodyIndex, + quaternion rotation, + quaternion delta, + NativeArray angularDeltas, + BurstAffineTransform solverToWorld, + float dt) + { + quaternion rotationWS = math.mul(solverToWorld.rotation, rotation); + quaternion deltaWS = math.mul(solverToWorld.rotation, delta); + + // convert quaternion delta to angular acceleration: + quaternion newRotation = math.normalize(new quaternion(rotationWS.value + deltaWS.value)); + angularDeltas[rigidbodyIndex] += BurstIntegration.DifferentiateAngular(newRotation, rotationWS, dt); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void OneSidedNormal(float4 forward, ref float4 normal) + { + float dot = math.dot(normal.xyz, forward.xyz); + if (dot < 0) normal -= 2 * dot * forward; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float EllipsoidRadius(float4 normSolverDirection, quaternion orientation, float3 radii) + { + float3 localDir = math.mul(math.conjugate(orientation), normSolverDirection.xyz); + float sqrNorm = math.lengthsq(localDir / radii); + return sqrNorm > epsilon ? math.sqrt(1 / sqrNorm) : radii.x; + } + + public static quaternion ExtractRotation(float4x4 matrix, quaternion rotation, int iterations) + { + float4x4 R; + for (int i = 0; i < iterations; ++i) + { + R = rotation.toMatrix(); + float3 omega = (math.cross(R.c0.xyz, matrix.c0.xyz) + math.cross(R.c1.xyz, matrix.c1.xyz) + math.cross(R.c2.xyz, matrix.c2.xyz)) / + (math.abs(math.dot(R.c0.xyz, matrix.c0.xyz) + math.dot(R.c1.xyz, matrix.c1.xyz) + math.dot(R.c2.xyz, matrix.c2.xyz)) + BurstMath.epsilon); + + float w = math.length(omega); + if (w < BurstMath.epsilon) + break; + + rotation = math.normalize(math.mul(quaternion.AxisAngle((1.0f / w) * omega, w), rotation)); + } + return rotation; + } + + // decomposes a quaternion in swing and twist around a given axis: + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void SwingTwist(quaternion q, float3 twistAxis, out quaternion swing, out quaternion twist) + { + float dot = math.dot(q.value.xyz, twistAxis); + float3 p = twistAxis * dot; + twist = math.normalizesafe(new quaternion(p[0], p[1], p[2], q.value.w)); + swing = math.mul(q, math.conjugate(twist)); + } + + public static float4x4 toMatrix(this quaternion q) + { + float xx = q.value.x * q.value.x; + float xy = q.value.x * q.value.y; + float xz = q.value.x * q.value.z; + float xw = q.value.x * q.value.w; + + float yy = q.value.y * q.value.y; + float yz = q.value.y * q.value.z; + float yw = q.value.y * q.value.w; + + float zz = q.value.z * q.value.z; + float zw = q.value.z * q.value.w; + + return new float4x4(1 - 2 * (yy + zz), 2 * (xy - zw), 2 * (xz + yw), 0, + 2 * (xy + zw), 1 - 2 * (xx + zz), 2 * (yz - xw), 0, + 2 * (xz - yw), 2 * (yz + xw), 1 - 2 * (xx + yy), 0, + 0, 0, 0, 1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 asDiagonal(this float4 v) + { + return new float4x4(v.x, 0, 0, 0, + 0, v.y, 0, 0, + 0, 0, v.z, 0, + 0, 0, 0, v.w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 diagonal(this float4x4 value) + { + return new float4(value.c0[0], value.c1[1], value.c2[2], value.c3[3]); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float frobeniusNorm(this float4x4 m) + { + return math.sqrt(math.lengthsq(m.c0) + math.lengthsq(m.c1) + math.lengthsq(m.c2) + math.lengthsq(m.c3)); + } + + public static void EigenSolve(float3x3 D, out float3 S, out float3x3 V) + { + // D is symmetric + // S is a vector whose elements are eigenvalues + // V is a matrix whose columns are eigenvectors + S = EigenValues(D); + float3 V0, V1, V2; + + if (S[0] - S[1] > S[1] - S[2]) + { + V0 = EigenVector(D, S[0]); + if (S[1] - S[2] < math.FLT_MIN_NORMAL) + { + V2 = V0.unitOrthogonal(); + } + else + { + V2 = EigenVector(D, S[2]); V2 -= V0 * math.dot(V0, V2); V2 = math.normalize(V2); + } + V1 = math.cross(V2, V0); + } + else + { + V2 = EigenVector(D, S[2]); + if (S[0] - S[1] < math.FLT_MIN_NORMAL) + { + V1 = V2.unitOrthogonal(); + } + else + { + V1 = EigenVector(D, S[1]); V1 -= V2 * math.dot(V2, V1); V1 = math.normalize(V1); + } + V0 = math.cross(V1, V2); + } + + V.c0 = V0; + V.c1 = V1; + V.c2 = V2; + } + + static float3 unitOrthogonal(this float3 input) + { + // Find a vector to cross() the input with. + if (!(input.x < input.z * epsilon) + || !(input.y < input.z * epsilon)) + { + float invnm = 1 / math.length(input.xy); + return new float3(-input.y * invnm, input.x * invnm, 0); + } + else + { + float invnm = 1 / math.length(input.yz); + return new float3(0, -input.z * invnm, input.y * invnm); + } + } + + // D is symmetric, S is an eigen value + static float3 EigenVector(float3x3 D, float S) + { + // Compute a cofactor matrix of D - sI. + float3 c0 = D.c0; c0[0] -= S; + float3 c1 = D.c1; c1[1] -= S; + float3 c2 = D.c2; c2[2] -= S; + + // Upper triangular matrix + float3 c0p = new float3(c1[1] * c2[2] - c2[1] * c2[1], 0, 0); + float3 c1p = new float3(c2[1] * c2[0] - c1[0] * c2[2], c0[0] * c2[2] - c2[0] * c2[0], 0); + float3 c2p = new float3(c1[0] * c2[1] - c1[1] * c2[0], c1[0] * c2[0] - c0[0] * c2[1], c0[0] * c1[1] - c1[0] * c1[0]); + + // Get a column vector with a largest norm (non-zero). + float C01s = c1p[0] * c1p[0]; + float C02s = c2p[0] * c2p[0]; + float C12s = c2p[1] * c2p[1]; + float3 norm = new float3(c0p[0] * c0p[0] + C01s + C02s, + C01s + c1p[1] * c1p[1] + C12s, + C02s + C12s + c2p[2] * c2p[2]); + + // index of largest: + int index = 0; + if (norm[0] > norm[1] && norm[0] > norm[2]) + index = 0; + else if (norm[1] > norm[0] && norm[1] > norm[2]) + index = 1; + else + index = 2; + + float3 V = float3.zero; + + // special case + if (norm[index] < math.FLT_MIN_NORMAL) + { + V[0] = 1; return V; + } + else if (index == 0) + { + V[0] = c0p[0]; V[1] = c1p[0]; V[2] = c2p[0]; + } + else if (index == 1) + { + V[0] = c1p[0]; V[1] = c1p[1]; V[2] = c2p[1]; + } + else + { + V = c2p; + } + return math.normalize(V); + } + + static float3 EigenValues(float3x3 D) + { + float one_third = 1 / 3.0f; + float one_sixth = 1 / 6.0f; + float three_sqrt = math.sqrt(3.0f); + + float3 c0 = D.c0; + float3 c1 = D.c1; + float3 c2 = D.c2; + + float m = one_third * (c0[0] + c1[1] + c2[2]); + + // K is D - I*diag(S) + float K00 = c0[0] - m; + float K11 = c1[1] - m; + float K22 = c2[2] - m; + + float K01s = c1[0] * c1[0]; + float K02s = c2[0] * c2[0]; + float K12s = c2[1] * c2[1]; + + float q = 0.5f * (K00 * (K11 * K22 - K12s) - K22 * K01s - K11 * K02s) + c1[0] * c2[1] * c0[2]; + float p = one_sixth * (K00 * K00 + K11 * K11 + K22 * K22 + 2 * (K01s + K02s + K12s)); + + float p_sqrt = math.sqrt(p); + + float tmp = p * p * p - q * q; + float phi = one_third * math.atan2(math.sqrt(math.max(0, tmp)), q); + float phi_c = math.cos(phi); + float phi_s = math.sin(phi); + float sqrt_p_c_phi = p_sqrt * phi_c; + float sqrt_p_3_s_phi = p_sqrt * three_sqrt * phi_s; + + float e0 = m + 2 * sqrt_p_c_phi; + float e1 = m - sqrt_p_c_phi - sqrt_p_3_s_phi; + float e2 = m - sqrt_p_c_phi + sqrt_p_3_s_phi; + + float aux; + if (e0 > e1) + { + aux = e0; + e0 = e1; + e1 = aux; + } + if (e0 > e2) + { + aux = e0; + e0 = e2; + e2 = aux; + } + if (e1 > e2) + { + aux = e1; + e1 = e2; + e2 = aux; + } + + return new float3(e2, e1, e0); + } + + public struct CachedTri + { + public float4 vertex; + public float4 edge0; + public float4 edge1; + public float4 data; + + public void Cache(float4 v1, + float4 v2, + float4 v3) + { + vertex = v1; + edge0 = v2 - v1; + edge1 = v3 - v1; + data = float4.zero; + data[0] = math.dot(edge0, edge0); + data[1] = math.dot(edge0, edge1); + data[2] = math.dot(edge1, edge1); + data[3] = data[0] * data[2] - data[1] * data[1]; + } + } + + public static float4 NearestPointOnTri(in CachedTri tri, + float4 p, + out float4 bary) + { + float4 v0 = tri.vertex - p; + float b0 = math.dot(tri.edge0, v0); + float b1 = math.dot(tri.edge1, v0); + float t0 = tri.data[1] * b1 - tri.data[2] * b0; + float t1 = tri.data[1] * b0 - tri.data[0] * b1; + + if (t0 + t1 <= tri.data[3]) + { + if (t0 < zero) + { + if (t1 < zero) // region 4 + { + if (b0 < zero) + { + t1 = zero; + if (-b0 >= tri.data[0]) // V0 + t0 = one; + else // E01 + t0 = -b0 / tri.data[0]; + } + else + { + t0 = zero; + if (b1 >= zero) // V0 + t1 = zero; + else if (-b1 >= tri.data[2]) // V2 + t1 = one; + else // E20 + t1 = -b1 / tri.data[2]; + } + } + else // region 3 + { + t0 = zero; + if (b1 >= zero) // V0 + t1 = zero; + else if (-b1 >= tri.data[2]) // V2 + t1 = one; + else // E20 + t1 = -b1 / tri.data[2]; + } + } + else if (t1 < zero) // region 5 + { + t1 = zero; + if (b0 >= zero) // V0 + t0 = zero; + else if (-b0 >= tri.data[0]) // V1 + t0 = one; + else // E01 + t0 = -b0 / tri.data[0]; + } + else // region 0, interior + { + float invDet = one / tri.data[3]; + t0 *= invDet; + t1 *= invDet; + } + } + else + { + float tmp0, tmp1, numer, denom; + + if (t0 < zero) // region 2 + { + tmp0 = tri.data[1] + b0; + tmp1 = tri.data[2] + b1; + if (tmp1 > tmp0) + { + numer = tmp1 - tmp0; + denom = tri.data[0] - 2 * tri.data[1] + tri.data[2]; + if (numer >= denom) // V1 + { + t0 = one; + t1 = zero; + } + else // E12 + { + t0 = numer / denom; + t1 = one - t0; + } + } + else + { + t0 = zero; + if (tmp1 <= zero) // V2 + t1 = one; + else if (b1 >= zero) // V0 + t1 = zero; + else // E20 + t1 = -b1 / tri.data[2]; + } + } + else if (t1 < zero) // region 6 + { + tmp0 = tri.data[1] + b1; + tmp1 = tri.data[0] + b0; + if (tmp1 > tmp0) + { + numer = tmp1 - tmp0; + denom = tri.data[0] - 2 * tri.data[1] + tri.data[2]; + if (numer >= denom) // V2 + { + t1 = one; + t0 = zero; + } + else // E12 + { + t1 = numer / denom; + t0 = one - t1; + } + } + else + { + t1 = zero; + if (tmp1 <= zero) // V1 + t0 = one; + else if (b0 >= zero) // V0 + t0 = zero; + else // E01 + t0 = -b0 / tri.data[0]; + } + } + else // region 1 + { + numer = tri.data[2] + b1 - tri.data[1] - b0; + if (numer <= zero) // V2 + { + t0 = zero; + t1 = one; + } + else + { + denom = tri.data[0] - 2 * tri.data[1] + tri.data[2]; + if (numer >= denom) // V1 + { + t0 = one; + t1 = zero; + } + else // 12 + { + t0 = numer / denom; + t1 = one - t0; + } + } + } + } + + bary = new float4(1 - (t0 + t1), t0, t1,0); + return tri.vertex + t0 * tri.edge0 + t1 * tri.edge1; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 NearestPointOnEdge(float4 a, float4 b, float4 p, out float mu, bool clampToSegment = true) + { + float4 ap = p - a; + float4 ab = b - a; + + mu = math.dot(ap, ab) / math.dot(ab, ab); + + if (clampToSegment) + mu = math.saturate(mu); + + return a + ab * mu; + } + + public static float4 NearestPointsTwoEdges(float4 a, float4 b, float4 c, float4 d, out float mu1, out float mu2) + { + float4 dc = d - c; + float lineDirSqrMag = math.dot(dc, dc); + float4 inPlaneA = a - (math.dot(a - c, dc) / lineDirSqrMag * dc); + float4 inPlaneB = b - (math.dot(b - c, dc) / lineDirSqrMag * dc); + + float4 inPlaneBA = inPlaneB - inPlaneA; + float t = math.dot(c - inPlaneA, inPlaneBA) / math.dot(inPlaneBA, inPlaneBA); + + //t = (inPlaneA != inPlaneB) ? t : 0f; // Zero's t if parallel + float4 segABtoLineCD = math.lerp(a, b, math.saturate(t)); + + float4 segCDtoSegAB = NearestPointOnEdge(c, d, segABtoLineCD, out mu1); + float4 segABtoSegCD = NearestPointOnEdge(a, b, segCDtoSegAB, out mu2); + + return segCDtoSegAB; + } + + public static float4 BaryCoords(in float4 A, + in float4 B, + in float4 C, + in float4 P) + { + + // Compute vectors + float4 v0 = C - A; + float4 v1 = B - A; + float4 v2 = P - A; + + // Compute dot products + float dot00 = math.dot(v0, v0); + float dot01 = math.dot(v0, v1); + float dot02 = math.dot(v0, v2); + float dot11 = math.dot(v1, v1); + float dot12 = math.dot(v1, v2); + + // Compute barycentric coordinates + float det = dot00 * dot11 - dot01 * dot01; + if (math.abs(det) > epsilon) + { + float u = (dot11 * dot02 - dot01 * dot12) / det; + float v = (dot00 * dot12 - dot01 * dot02) / det; + return new float4(1 - u - v, v, u, 0); + } + return float4.zero; + + } + + public static float4 BaryCoords2(in float4 A, + in float4 B, + in float4 P) + { + float4 v0 = P - A; + float4 v1 = B - A; + float y = math.sqrt(math.dot(v0, v0) / (math.dot(v1, v1) + epsilon)); + return new float4(1 - y, y, 0, 0); + } + + public static float4 BaryIntrpl(in float4 p1, in float4 p2, in float4 p3, in float4 coords) + { + return coords[0] * p1 + coords[1] * p2 + coords[2] * p3; + } + + public static float4 BaryIntrpl(in float4 p1, in float4 p2, in float4 coords) + { + return coords[0] * p1 + coords[1] * p2; + } + + public static float BaryIntrpl(float p1, float p2, float p3, float4 coords) + { + return coords[0] * p1 + coords[1] * p2 + coords[2] * p3; + } + + public static float BaryIntrpl(float p1, float p2, float4 coords) + { + return coords[0] * p1 + coords[1] * p2; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float BaryScale(float4 coords) + { + return 1.0f / math.dot(coords, coords); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 BarycenterForSimplexOfSize(int simplexSize) + { + float value = 1f / simplexSize; + float4 center = float4.zero; + for (int i = 0; i < simplexSize; ++i) + center[i] = value; + return center; + } + + public static unsafe void RemoveRangeBurst(this NativeList list, int index, int count) + where T : unmanaged + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= (uint)list.Length) + { + throw new IndexOutOfRangeException( + $"Index {index} is out of range in NativeList of '{list.Length}' Length."); + } +#endif + + int elemSize = UnsafeUtility.SizeOf(); + byte* basePtr = (byte*)list.GetUnsafePtr(); + + UnsafeUtility.MemMove(basePtr + (index * elemSize), basePtr + ((index + count) * elemSize), elemSize * (list.Length - count - index)); + + // No easy way to change length so we just loop this unfortunately. + for (var i = 0; i < count; i++) + { + list.RemoveAtSwapBack(list.Length - 1); + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/BurstMath.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/BurstMath.cs.meta new file mode 100644 index 000000000..5b662b682 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/BurstMath.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1cc365339e47244d7b217576a7d95ca8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions.meta new file mode 100644 index 000000000..7f66f5927 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 71085a94c3367475ab31b12e483c6479 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstBox.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstBox.cs new file mode 100644 index 000000000..e5e2cf7d7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstBox.cs @@ -0,0 +1,93 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Collections; +using Unity.Mathematics; + +namespace Obi +{ + public struct BurstBox : BurstLocalOptimization.IDistanceFunction, IBurstCollider + { + public BurstColliderShape shape; + public BurstAffineTransform colliderToSolver; + public float dt; + + public void Evaluate(float4 point, float4 radii, quaternion orientation, ref BurstLocalOptimization.SurfacePoint projectedPoint) + { + float4 center = shape.center * colliderToSolver.scale; + float4 size = shape.size * colliderToSolver.scale * 0.5f; + + // clamp the point to the surface of the box: + point = colliderToSolver.InverseTransformPointUnscaled(point) - center; + + if (shape.is2D != 0) + point[2] = 0; + + // get minimum distance for each axis: + float4 distances = size - math.abs(point); + + if (distances.x >= 0 && distances.y >= 0 && distances.z >= 0) + { + // find minimum distance in all three axes and the axis index: + float min = float.MaxValue; + int axis = 0; + + for (int i = 0; i < 3; ++i) + { + if (distances[i] < min) + { + min = distances[i]; + axis = i; + } + } + + projectedPoint.normal = float4.zero; + projectedPoint.point = point; + + projectedPoint.normal[axis] = point[axis] > 0 ? 1 : -1; + projectedPoint.point[axis] = size[axis] * projectedPoint.normal[axis]; + } + else + { + projectedPoint.point = math.clamp(point, -size, size); + projectedPoint.normal = math.normalizesafe(point - projectedPoint.point); + } + + projectedPoint.point = colliderToSolver.TransformPointUnscaled(projectedPoint.point + center + projectedPoint.normal * shape.contactOffset); + projectedPoint.normal = colliderToSolver.TransformDirection(projectedPoint.normal); + } + + public void Contacts(int colliderIndex, + int rigidbodyIndex, + NativeArray rigidbodies, + + NativeArray positions, + NativeArray orientations, + NativeArray velocities, + NativeArray radii, + + NativeArray simplices, + in BurstAabb simplexBounds, + int simplexIndex, + int simplexStart, + int simplexSize, + + NativeQueue.ParallelWriter contacts, + int optimizationIterations, + float optimizationTolerance) + { + var co = new BurstContact() { bodyA = simplexIndex, bodyB = colliderIndex }; + float4 simplexBary = BurstMath.BarycenterForSimplexOfSize(simplexSize); + + var colliderPoint = BurstLocalOptimization.Optimize(ref this, positions, orientations, radii, simplices, simplexStart, simplexSize, + ref simplexBary, out float4 convexPoint, optimizationIterations, optimizationTolerance); + + co.pointB = colliderPoint.point; + co.normal = colliderPoint.normal; + co.pointA = simplexBary; + + contacts.Enqueue(co); + } + + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstBox.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstBox.cs.meta new file mode 100644 index 000000000..5a84d9cd3 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstBox.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f09926d9bc8604475a3bce5e593165b4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstCapsule.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstCapsule.cs new file mode 100644 index 000000000..e23c0b11b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstCapsule.cs @@ -0,0 +1,73 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Collections; +using Unity.Mathematics; + +namespace Obi +{ + public struct BurstCapsule : BurstLocalOptimization.IDistanceFunction, IBurstCollider + { + public BurstColliderShape shape; + public BurstAffineTransform colliderToSolver; + public float dt; + + public void Evaluate(float4 point, float4 radii, quaternion orientation, ref BurstLocalOptimization.SurfacePoint projectedPoint) + { + float4 center = shape.center * colliderToSolver.scale; + point = colliderToSolver.InverseTransformPointUnscaled(point) - center; + + if (shape.is2D != 0) + point[2] = 0; + + int direction = (int)shape.size.z; + float radius = shape.size.x * math.max(colliderToSolver.scale[(direction + 1) % 3], + colliderToSolver.scale[(direction + 2) % 3]); + + float height = math.max(radius, shape.size.y * 0.5f * colliderToSolver.scale[direction]); + float4 halfVector = float4.zero; + halfVector[direction] = height - radius; + + float4 centerLine = BurstMath.NearestPointOnEdge(-halfVector, halfVector, point, out float mu); + float4 centerToPoint = point - centerLine; + float distanceToCenter = math.length(centerToPoint); + + float4 normal = centerToPoint / (distanceToCenter + BurstMath.epsilon); + + projectedPoint.point = colliderToSolver.TransformPointUnscaled(center + centerLine + normal * (radius + shape.contactOffset)); + projectedPoint.normal = colliderToSolver.TransformDirection(normal); + } + + public void Contacts(int colliderIndex, + int rigidbodyIndex, + NativeArray rigidbodies, + + NativeArray positions, + NativeArray orientations, + NativeArray velocities, + NativeArray radii, + + NativeArray simplices, + in BurstAabb simplexBounds, + int simplexIndex, + int simplexStart, + int simplexSize, + + NativeQueue.ParallelWriter contacts, + int optimizationIterations, + float optimizationTolerance) + { + var co = new BurstContact() { bodyA = simplexIndex, bodyB = colliderIndex }; + float4 simplexBary = BurstMath.BarycenterForSimplexOfSize(simplexSize); + + var colliderPoint = BurstLocalOptimization.Optimize(ref this, positions, orientations, radii, simplices, simplexStart, simplexSize, + ref simplexBary, out float4 convexPoint, optimizationIterations, optimizationTolerance); + + co.pointB = colliderPoint.point; + co.normal = colliderPoint.normal; + co.pointA = simplexBary; + + contacts.Enqueue(co); + } + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstCapsule.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstCapsule.cs.meta new file mode 100644 index 000000000..e75f16760 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstCapsule.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 30a6f80040171467eb7e40b869d0aa44 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstColliderShape.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstColliderShape.cs new file mode 100644 index 000000000..af31c7a9d --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstColliderShape.cs @@ -0,0 +1,25 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Mathematics; + +namespace Obi +{ + + public struct BurstColliderShape + { + public float4 center; + public float4 size; /**< box: size of the box in each axis. + sphere: radius of sphere (x,y,z), + capsule: radius (x), height(y), direction (z, can be 0, 1 or 2). + heightmap: width (x axis), height (y axis) and depth (z axis) in world units.*/ + + public ColliderShape.ShapeType type; + public float contactOffset; + public int dataIndex; + public int rigidbodyIndex; // index of the associated rigidbody in the collision world. + public int materialIndex; // index of the associated material in the collision world. + public int filter; + public int flags; // for now, only used for trigger (1) or regular collider (0). + public int is2D; // whether the collider is 2D (1) or 3D (0). + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstColliderShape.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstColliderShape.cs.meta new file mode 100644 index 000000000..362c07aef --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstColliderShape.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 707535693276c450e8ba4504defa09eb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstColliderWorld.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstColliderWorld.cs new file mode 100644 index 000000000..97736248e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstColliderWorld.cs @@ -0,0 +1,552 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Collections; +using Unity.Jobs; +using Unity.Mathematics; +using Unity.Burst; + +namespace Obi +{ + + + public class BurstColliderWorld : MonoBehaviour, IColliderWorldImpl + { + struct MovingCollider + { + public BurstCellSpan oldSpan; + public BurstCellSpan newSpan; + public int entity; + } + + private int refCount = 0; + private int colliderCount = 0; + + private NativeMultilevelGrid grid; + private NativeQueue movingColliders; + public NativeQueue colliderContactQueue; + + public ObiNativeCellSpanList cellSpans; + + public int referenceCount { get { return refCount; } } + + public void Awake() + { + + this.grid = new NativeMultilevelGrid(1000, Allocator.Persistent); + this.movingColliders = new NativeQueue(Allocator.Persistent); + this.colliderContactQueue = new NativeQueue(Allocator.Persistent); + + this.cellSpans = new ObiNativeCellSpanList(); + + ObiColliderWorld.GetInstance().RegisterImplementation(this); + } + + public void OnDestroy() + { + ObiColliderWorld.GetInstance().UnregisterImplementation(this); + + grid.Dispose(); + movingColliders.Dispose(); + colliderContactQueue.Dispose(); + cellSpans.Dispose(); + } + + public void IncreaseReferenceCount() + { + refCount++; + } + public void DecreaseReferenceCount() + { + if (--refCount <= 0 && gameObject != null) + DestroyImmediate(gameObject); + } + + public void SetColliders(ObiNativeColliderShapeList shapes, ObiNativeAabbList bounds, ObiNativeAffineTransformList transforms, int count) + { + colliderCount = count; + + // insert new empty cellspans at the end if needed: + while (colliderCount > cellSpans.count) + cellSpans.Add(new CellSpan(new VInt4(10000), new VInt4(10000))); + } + + public void SetRigidbodies(ObiNativeRigidbodyList rigidbody) + { + } + + public void SetCollisionMaterials(ObiNativeCollisionMaterialList materials) + { + + } + + public void SetTriangleMeshData(ObiNativeTriangleMeshHeaderList headers, ObiNativeBIHNodeList nodes, ObiNativeTriangleList triangles, ObiNativeVector3List vertices) + { + } + + public void SetEdgeMeshData(ObiNativeEdgeMeshHeaderList headers, ObiNativeBIHNodeList nodes, ObiNativeEdgeList edges, ObiNativeVector2List vertices) + { + } + + public void SetDistanceFieldData(ObiNativeDistanceFieldHeaderList headers, ObiNativeDFNodeList nodes) { } + public void SetHeightFieldData(ObiNativeHeightFieldHeaderList headers, ObiNativeFloatList samples) { } + + public void UpdateWorld(float deltaTime) + { + var world = ObiColliderWorld.GetInstance(); + + var identifyMoving = new IdentifyMovingColliders + { + movingColliders = movingColliders.AsParallelWriter(), + shapes = world.colliderShapes.AsNativeArray(cellSpans.count), + rigidbodies = world.rigidbodies.AsNativeArray(), + collisionMaterials = world.collisionMaterials.AsNativeArray(), + bounds = world.colliderAabbs.AsNativeArray(cellSpans.count), + cellIndices = cellSpans.AsNativeArray(), + colliderCount = colliderCount, + dt = deltaTime + }; + JobHandle movingHandle = identifyMoving.Schedule(cellSpans.count, 128); + + var updateMoving = new UpdateMovingColliders + { + movingColliders = movingColliders, + grid = grid, + colliderCount = colliderCount + }; + + updateMoving.Schedule(movingHandle).Complete(); + + // remove tail from the current spans array: + if (colliderCount < cellSpans.count) + cellSpans.count -= cellSpans.count - colliderCount; + } + + [BurstCompile] + struct IdentifyMovingColliders : IJobParallelFor + { + [WriteOnly] + [NativeDisableParallelForRestriction] + public NativeQueue.ParallelWriter movingColliders; + + [ReadOnly] public NativeArray shapes; + [ReadOnly] public NativeArray rigidbodies; + [ReadOnly] public NativeArray collisionMaterials; + public NativeArray bounds; + + public NativeArray cellIndices; + [ReadOnly] public int colliderCount; + [ReadOnly] public float dt; + + // Iterate over all colliders and store those whose cell span has changed. + public void Execute(int i) + { + BurstAabb velocityBounds = bounds[i]; + + int rb = shapes[i].rigidbodyIndex; + + // Expand bounds by rigidbody's linear velocity + // (check against out of bounds rigidbody access, can happen when a destroyed collider references a rigidbody that has just been destroyed too) + if (rb >= 0 && rb < rigidbodies.Length) + velocityBounds.Sweep(rigidbodies[rb].velocity * dt); + + // Expand bounds by collision material's stick distance: + if (shapes[i].materialIndex >= 0) + velocityBounds.Expand(collisionMaterials[shapes[i].materialIndex].stickDistance); + + float size = velocityBounds.AverageAxisLength(); + int level = NativeMultilevelGrid.GridLevelForSize(size); + float cellSize = NativeMultilevelGrid.CellSizeOfLevel(level); + + // get new collider bounds cell coordinates: + BurstCellSpan newSpan = new BurstCellSpan(new int4(GridHash.Quantize(velocityBounds.min.xyz, cellSize), level), + new int4(GridHash.Quantize(velocityBounds.max.xyz, cellSize), level)); + + // if the collider is 2D, project it to the z = 0 cells. + if (shapes[i].is2D != 0) + { + newSpan.min[2] = 0; + newSpan.max[2] = 0; + } + + // if the collider is at the tail (removed), we will only remove it from its current cellspan. + // if the new cellspan and the current one are different, we must remove it from its current cellspan and add it to its new one. + if (i >= colliderCount || cellIndices[i] != newSpan) + { + // Add the collider to the list of moving colliders: + movingColliders.Enqueue(new MovingCollider() + { + oldSpan = cellIndices[i], + newSpan = newSpan, + entity = i + }); + + // Update previous coords: + cellIndices[i] = newSpan; + } + + } + } + + [BurstCompile] + struct UpdateMovingColliders : IJob + { + public NativeQueue movingColliders; + public NativeMultilevelGrid grid; + [ReadOnly] public int colliderCount; + + public void Execute() + { + while (movingColliders.Count > 0) + { + MovingCollider movingCollider = movingColliders.Dequeue(); + + // remove from old cells: + grid.RemoveFromCells(movingCollider.oldSpan, movingCollider.entity); + + // insert in new cells, as long as the index is below the amount of colliders. + // otherwise, the collider is at the "tail" and there's no need to add it back. + if (movingCollider.entity < colliderCount) + grid.AddToCells(movingCollider.newSpan, movingCollider.entity); + } + + // remove all empty cells from the grid: + grid.RemoveEmpty(); + } + } + + [BurstCompile] + unsafe struct GenerateContactsJob : IJobParallelFor + { + //collider grid: + [ReadOnly] public NativeMultilevelGrid colliderGrid; + + [DeallocateOnJobCompletion] + [ReadOnly] public NativeArray gridLevels; + + // particle arrays: + [ReadOnly] public NativeArray velocities; + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray orientations; + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray radii; + [ReadOnly] public NativeArray filters; + + // simplex arrays: + [ReadOnly] public NativeArray simplices; + [ReadOnly] public SimplexCounts simplexCounts; + [ReadOnly] public NativeArray simplexBounds; + + // collider arrays: + [ReadOnly] public NativeArray transforms; + [ReadOnly] public NativeArray shapes; + [ReadOnly] public NativeArray collisionMaterials; + [ReadOnly] public NativeArray rigidbodies; + [ReadOnly] public NativeArray bounds; + + // distance field data: + [ReadOnly] public NativeArray distanceFieldHeaders; + [ReadOnly] public NativeArray distanceFieldNodes; + + // triangle mesh data: + [ReadOnly] public NativeArray triangleMeshHeaders; + [ReadOnly] public NativeArray bihNodes; + [ReadOnly] public NativeArray triangles; + [ReadOnly] public NativeArray vertices; + + // edge mesh data: + [ReadOnly] public NativeArray edgeMeshHeaders; + [ReadOnly] public NativeArray edgeBihNodes; + [ReadOnly] public NativeArray edges; + [ReadOnly] public NativeArray edgeVertices; + + // height field data: + [ReadOnly] public NativeArray heightFieldHeaders; + [ReadOnly] public NativeArray heightFieldSamples; + + // output contacts queue: + [WriteOnly] + [NativeDisableParallelForRestriction] + public NativeQueue.ParallelWriter contactsQueue; + + // auxiliar data: + [ReadOnly] public BurstAffineTransform solverToWorld; + [ReadOnly] public BurstAffineTransform worldToSolver; + [ReadOnly] public float deltaTime; + [ReadOnly] public Oni.SolverParameters parameters; + + public void Execute(int i) + { + int simplexStart = simplexCounts.GetSimplexStartAndSize(i, out int simplexSize); + BurstAabb simplexBoundsSS = simplexBounds[i]; + + // get all colliders overlapped by the cell bounds, in all grid levels: + BurstAabb simplexBoundsWS = simplexBoundsSS.Transformed(solverToWorld); + NativeList candidates = new NativeList(16,Allocator.Temp); + + // max size of the particle bounds in cells: + int3 maxSize = new int3(10); + bool is2D = parameters.mode == Oni.SolverParameters.Mode.Mode2D; + + for (int l = 0; l < gridLevels.Length; ++l) + { + float cellSize = NativeMultilevelGrid.CellSizeOfLevel(gridLevels[l]); + + int3 minCell = GridHash.Quantize(simplexBoundsWS.min.xyz, cellSize); + int3 maxCell = GridHash.Quantize(simplexBoundsWS.max.xyz, cellSize); + maxCell = minCell + math.min(maxCell - minCell, maxSize); + + for (int x = minCell[0]; x <= maxCell[0]; ++x) + { + for (int y = minCell[1]; y <= maxCell[1]; ++y) + { + // for 2D mode, project each cell at z == 0 and check them too. This way we ensure 2D colliders + // (which are inserted in cells with z == 0) are accounted for in the broadphase. + if (is2D) + { + if (colliderGrid.TryGetCellIndex(new int4(x, y, 0, gridLevels[l]), out int cellIndex)) + { + var colliderCell = colliderGrid.usedCells[cellIndex]; + candidates.AddRange(colliderCell.ContentsPointer, colliderCell.Length); + } + } + + for (int z = minCell[2]; z <= maxCell[2]; ++z) + { + if (colliderGrid.TryGetCellIndex(new int4(x, y, z, gridLevels[l]), out int cellIndex)) + { + var colliderCell = colliderGrid.usedCells[cellIndex]; + candidates.AddRange(colliderCell.ContentsPointer, colliderCell.Length); + } + } + } + } + } + + if (candidates.Length > 0) + { + // make sure each candidate collider only shows up once in the array: + NativeArray uniqueCandidates = candidates.AsArray(); + uniqueCandidates.Sort(); + int uniqueCount = uniqueCandidates.Unique(); + + // iterate over candidate colliders, generating contacts for each one + for (int k = 0; k < uniqueCount; ++k) + { + int c = uniqueCandidates[k]; + if (c < shapes.Length) + { + BurstColliderShape shape = shapes[c]; + BurstAabb colliderBoundsWS = bounds[c]; + int rb = shape.rigidbodyIndex; + + // Expand bounds by rigidbody's linear velocity: + if (rb >= 0) + colliderBoundsWS.Sweep(rigidbodies[rb].velocity * deltaTime); + + // Expand bounds by collision material's stick distance: + if (shape.materialIndex >= 0) + colliderBoundsWS.Expand(collisionMaterials[shape.materialIndex].stickDistance); + + // check if any simplex particle and the collider should collide: + bool shouldCollide = false; + var colliderCategory = shape.filter & ObiUtils.FilterCategoryBitmask; + var colliderMask = (shape.filter & ObiUtils.FilterMaskBitmask) >> 16; + for (int j = 0; j < simplexSize; ++j) + { + var simplexCategory = filters[simplices[simplexStart + j]] & ObiUtils.FilterCategoryBitmask; + var simplexMask = (filters[simplices[simplexStart + j]] & ObiUtils.FilterMaskBitmask) >> 16; + shouldCollide |= (simplexCategory & colliderMask) != 0 && (simplexMask & colliderCategory) != 0; + } + + if (shouldCollide && simplexBoundsWS.IntersectsAabb(in colliderBoundsWS, is2D)) + { + // generate contacts for the collider: + BurstAffineTransform colliderToSolver = worldToSolver * transforms[c]; + GenerateContacts(in shape, in colliderToSolver, c, rb, i, simplexStart, simplexSize, simplexBoundsSS); + } + } + } + } + } + + private void GenerateContacts(in BurstColliderShape shape, + in BurstAffineTransform colliderToSolver, + int colliderIndex, + int rigidbodyIndex, + int simplexIndex, + int simplexStart, + int simplexSize, + in BurstAabb simplexBoundsSS) + { + float4x4 solverToCollider; + BurstAabb simplexBoundsCS; + + switch (shape.type) + { + case ColliderShape.ShapeType.Sphere: + BurstSphere sphereShape = new BurstSphere() { colliderToSolver = colliderToSolver, shape = shape, dt = deltaTime }; + sphereShape.Contacts(colliderIndex, rigidbodyIndex, rigidbodies, positions, orientations, velocities, radii, simplices, in simplexBoundsSS, + simplexIndex, simplexStart, simplexSize, contactsQueue, parameters.surfaceCollisionIterations, parameters.surfaceCollisionTolerance); + break; + case ColliderShape.ShapeType.Box: + BurstBox boxShape = new BurstBox() { colliderToSolver = colliderToSolver, shape = shape, dt = deltaTime }; + boxShape.Contacts(colliderIndex, rigidbodyIndex, rigidbodies, positions, orientations, velocities, radii, simplices, in simplexBoundsSS, + simplexIndex, simplexStart, simplexSize, contactsQueue, parameters.surfaceCollisionIterations, parameters.surfaceCollisionTolerance); + break; + case ColliderShape.ShapeType.Capsule: + BurstCapsule capsuleShape = new BurstCapsule(){colliderToSolver = colliderToSolver,shape = shape, dt = deltaTime }; + capsuleShape.Contacts(colliderIndex, rigidbodyIndex, rigidbodies, positions, orientations, velocities, radii, simplices, in simplexBoundsSS, + simplexIndex, simplexStart, simplexSize, contactsQueue, parameters.surfaceCollisionIterations, parameters.surfaceCollisionTolerance); + break; + case ColliderShape.ShapeType.SignedDistanceField: + + if (shape.dataIndex < 0) return; + + BurstDistanceField distanceFieldShape = new BurstDistanceField() + { + colliderToSolver = colliderToSolver, + solverToWorld = solverToWorld, + shape = shape, + distanceFieldHeaders = distanceFieldHeaders, + dfNodes = distanceFieldNodes, + dt = deltaTime, + collisionMargin = parameters.collisionMargin + }; + + distanceFieldShape.Contacts(colliderIndex, rigidbodyIndex, rigidbodies, positions, orientations, velocities, radii, simplices, in simplexBoundsSS, + simplexIndex, simplexStart, simplexSize, contactsQueue, parameters.surfaceCollisionIterations, parameters.surfaceCollisionTolerance); + + break; + case ColliderShape.ShapeType.Heightmap: + + if (shape.dataIndex < 0) return; + + // invert a full matrix here to accurately represent collider bounds scale. + solverToCollider = math.inverse(float4x4.TRS(colliderToSolver.translation.xyz, colliderToSolver.rotation, colliderToSolver.scale.xyz)); + simplexBoundsCS = simplexBoundsSS.Transformed(solverToCollider); + + BurstHeightField heightmapShape = new BurstHeightField() + { + colliderToSolver = colliderToSolver, + solverToWorld = solverToWorld, + shape = shape, + header = heightFieldHeaders[shape.dataIndex], + heightFieldSamples = heightFieldSamples, + collisionMargin = parameters.collisionMargin, + dt = deltaTime + }; + + heightmapShape.Contacts(colliderIndex, rigidbodyIndex, rigidbodies, positions, orientations, velocities, radii, simplices, in simplexBoundsCS, + simplexIndex, simplexStart, simplexSize, contactsQueue, parameters.surfaceCollisionIterations, parameters.surfaceCollisionTolerance); + + break; + case ColliderShape.ShapeType.TriangleMesh: + + if (shape.dataIndex < 0) return; + + // invert a full matrix here to accurately represent collider bounds scale. + solverToCollider = math.inverse(float4x4.TRS(colliderToSolver.translation.xyz, colliderToSolver.rotation, colliderToSolver.scale.xyz)); + simplexBoundsCS = simplexBoundsSS.Transformed(solverToCollider); + + BurstTriangleMesh triangleMeshShape = new BurstTriangleMesh() + { + colliderToSolver = colliderToSolver, + solverToWorld = solverToWorld, + shape = shape, + header = triangleMeshHeaders[shape.dataIndex], + bihNodes = bihNodes, + triangles = triangles, + vertices = vertices, + collisionMargin = parameters.collisionMargin, + dt = deltaTime + }; + + triangleMeshShape.Contacts(colliderIndex, rigidbodyIndex, rigidbodies, positions, orientations, velocities, radii, simplices, in simplexBoundsCS, + simplexIndex, simplexStart, simplexSize, contactsQueue, parameters.surfaceCollisionIterations, parameters.surfaceCollisionTolerance); + + break; + case ColliderShape.ShapeType.EdgeMesh: + + if (shape.dataIndex < 0) return; + + // invert a full matrix here to accurately represent collider bounds scale. + solverToCollider = math.inverse(float4x4.TRS(colliderToSolver.translation.xyz, colliderToSolver.rotation, colliderToSolver.scale.xyz)); + simplexBoundsCS = simplexBoundsSS.Transformed(solverToCollider); + + BurstEdgeMesh edgeMeshShape = new BurstEdgeMesh() + { + colliderToSolver = colliderToSolver, + shape = shape, + header = edgeMeshHeaders[shape.dataIndex], + edgeBihNodes = edgeBihNodes, + edges = edges, + vertices = edgeVertices, + dt = deltaTime + }; + + edgeMeshShape.Contacts(colliderIndex, rigidbodyIndex, rigidbodies, positions, orientations, velocities, radii, simplices, in simplexBoundsCS, + simplexIndex, simplexStart, simplexSize, contactsQueue, parameters.surfaceCollisionIterations, parameters.surfaceCollisionTolerance); + + break; + } + } + + } + + + public JobHandle GenerateContacts(BurstSolverImpl solver, float deltaTime, JobHandle inputDeps) + { + var world = ObiColliderWorld.GetInstance(); + + var generateColliderContactsJob = new GenerateContactsJob + { + colliderGrid = grid, + gridLevels = grid.populatedLevels.GetKeyArray(Allocator.TempJob), + + positions = solver.positions, + orientations = solver.orientations, + velocities = solver.velocities, + invMasses = solver.invMasses, + radii = solver.principalRadii, + filters = solver.filters, + + simplices = solver.simplices, + simplexCounts = solver.simplexCounts, + simplexBounds = solver.simplexBounds, + + transforms = world.colliderTransforms.AsNativeArray(), + shapes = world.colliderShapes.AsNativeArray(), + rigidbodies = world.rigidbodies.AsNativeArray(), + collisionMaterials = world.collisionMaterials.AsNativeArray(), + bounds = world.colliderAabbs.AsNativeArray(), + + distanceFieldHeaders = world.distanceFieldContainer.headers.AsNativeArray(), + distanceFieldNodes = world.distanceFieldContainer.dfNodes.AsNativeArray(), + + triangleMeshHeaders = world.triangleMeshContainer.headers.AsNativeArray(), + bihNodes = world.triangleMeshContainer.bihNodes.AsNativeArray(), + triangles = world.triangleMeshContainer.triangles.AsNativeArray(), + vertices = world.triangleMeshContainer.vertices.AsNativeArray(), + + edgeMeshHeaders = world.edgeMeshContainer.headers.AsNativeArray(), + edgeBihNodes = world.edgeMeshContainer.bihNodes.AsNativeArray(), + edges = world.edgeMeshContainer.edges.AsNativeArray(), + edgeVertices = world.edgeMeshContainer.vertices.AsNativeArray(), + + heightFieldHeaders = world.heightFieldContainer.headers.AsNativeArray(), + heightFieldSamples = world.heightFieldContainer.samples.AsNativeArray(), + + contactsQueue = colliderContactQueue.AsParallelWriter(), + solverToWorld = solver.solverToWorld, + worldToSolver = solver.worldToSolver, + deltaTime = deltaTime, + parameters = solver.abstraction.parameters + }; + + return generateColliderContactsJob.Schedule(solver.simplexCounts.simplexCount, 16, inputDeps); + + } + + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstColliderWorld.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstColliderWorld.cs.meta new file mode 100644 index 000000000..8c04e4b67 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstColliderWorld.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f1a161c4294214a4fbcb7e9e94800494 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstDFNode.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstDFNode.cs new file mode 100644 index 000000000..f4d7a54a0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstDFNode.cs @@ -0,0 +1,65 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; +using System.Runtime.InteropServices; +using UnityEngine; +using Unity.Mathematics; + +namespace Obi +{ + public struct BurstDFNode + { + public float4 distancesA; + public float4 distancesB; + public float4 center; + public int firstChild; + + // add 12 bytes of padding to ensure correct memory alignment: + private int pad0; + private int pad1; + private int pad2; + + public float4 SampleWithGradient(float4 position) + { + float4 nPos = GetNormalizedPos(position); + + // trilinear interpolation of distance: + float4 x = distancesA + (distancesB - distancesA) * nPos[0]; + float2 y = x.xy + (x.zw - x.xy) * nPos[1]; + float distance = y[0] + (y[1] - y[0]) * nPos[2]; + + // gradient estimation: + // x == 0 + float2 a = distancesA.xy + (distancesA.zw - distancesA.xy) * nPos[1]; + float x0 = a[0] + (a[1] - a[0]) * nPos[2]; + + // x == 1 + a = distancesB.xy + (distancesB.zw - distancesB.xy) * nPos[1]; + float x1 = a[0] + (a[1] - a[0]) * nPos[2]; + + // y == 0 + float y0 = x[0] + (x[1] - x[0]) * nPos[2]; + + // y == 1 + float y1 = x[2] + (x[3] - x[2]) * nPos[2]; + + return new float4(x1 - x0, y1 - y0, y[1] - y[0], distance); + + } + + public float4 GetNormalizedPos(float4 position) + { + float4 corner = center - new float4(center[3]); + return (position - corner) / (center[3] * 2); + } + + public int GetOctant(float4 position) + { + int index = 0; + if (position[0] > center[0]) index |= 4; + if (position[1] > center[1]) index |= 2; + if (position[2] > center[2]) index |= 1; + return index; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstDFNode.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstDFNode.cs.meta new file mode 100644 index 000000000..3ab35ee48 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstDFNode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b5a1060edd11d4d268313295cdfe778b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstDistanceField.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstDistanceField.cs new file mode 100644 index 000000000..613303262 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstDistanceField.cs @@ -0,0 +1,107 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Collections; +using Unity.Mathematics; + +namespace Obi +{ + public struct BurstDistanceField : BurstLocalOptimization.IDistanceFunction, IBurstCollider + { + public BurstColliderShape shape; + public BurstAffineTransform colliderToSolver; + public BurstAffineTransform solverToWorld; + + public float dt; + public float collisionMargin; + + public NativeArray distanceFieldHeaders; + public NativeArray dfNodes; + + public void Evaluate(float4 point, float4 radii, quaternion orientation, ref BurstLocalOptimization.SurfacePoint projectedPoint) + { + point = colliderToSolver.InverseTransformPoint(point); + + if (shape.is2D != 0) + point[2] = 0; + + var header = distanceFieldHeaders[shape.dataIndex]; + float4 sample = DFTraverse(point, 0, in header, in dfNodes); + float4 normal = new float4(math.normalize(sample.xyz), 0); + + projectedPoint.point = colliderToSolver.TransformPoint(point - normal * (sample[3] - shape.contactOffset)); + projectedPoint.normal = colliderToSolver.TransformDirection(normal); + } + + public void Contacts(int colliderIndex, + int rigidbodyIndex, + NativeArray rigidbodies, + + NativeArray positions, + NativeArray orientations, + NativeArray velocities, + NativeArray radii, + + NativeArray simplices, + in BurstAabb simplexBounds, + int simplexIndex, + int simplexStart, + int simplexSize, + + NativeQueue.ParallelWriter contacts, + int optimizationIterations, + float optimizationTolerance) + { + if (shape.dataIndex < 0) return; + + var co = new BurstContact() { bodyA = simplexIndex, bodyB = colliderIndex }; + float4 simplexBary = BurstMath.BarycenterForSimplexOfSize(simplexSize); + + var colliderPoint = BurstLocalOptimization.Optimize(ref this, positions, orientations, radii, simplices, simplexStart, simplexSize, + ref simplexBary, out float4 simplexPoint, optimizationIterations, optimizationTolerance); + + co.pointB = colliderPoint.point; + co.normal = colliderPoint.normal; + co.pointA = simplexBary; + + float4 velocity = float4.zero; + float simplexRadius = 0; + for (int j = 0; j < simplexSize; ++j) + { + int particleIndex = simplices[simplexStart + j]; + simplexRadius += radii[particleIndex].x * simplexBary[j]; + velocity += velocities[particleIndex] * simplexBary[j]; + } + + float4 rbVelocity = float4.zero; + if (rigidbodyIndex >= 0) + rbVelocity = BurstMath.GetRigidbodyVelocityAtPoint(rigidbodyIndex, colliderPoint.point, rigidbodies, solverToWorld); + + float dAB = math.dot(simplexPoint - colliderPoint.point, colliderPoint.normal); + float vel = math.dot(velocity - rbVelocity, colliderPoint.normal); + + if (vel * dt + dAB <= simplexRadius + shape.contactOffset + collisionMargin) + contacts.Enqueue(co); + } + + private static float4 DFTraverse(float4 particlePosition, + int nodeIndex, + in DistanceFieldHeader header, + in NativeArray dfNodes) + { + var node = dfNodes[header.firstNode + nodeIndex]; + + // if the child node exists, recurse down the df octree: + if (node.firstChild >= 0) + { + int octant = node.GetOctant(particlePosition); + return DFTraverse(particlePosition, node.firstChild + octant, in header, in dfNodes); + } + else + { + return node.SampleWithGradient(particlePosition); + } + } + + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstDistanceField.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstDistanceField.cs.meta new file mode 100644 index 000000000..3d2205825 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstDistanceField.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 965f98194011e4cd9b8c1400b59565d8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstEdgeMesh.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstEdgeMesh.cs new file mode 100644 index 000000000..026d6fd5a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstEdgeMesh.cs @@ -0,0 +1,125 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Collections; +using Unity.Mathematics; + +namespace Obi +{ + public struct BurstEdgeMesh : BurstLocalOptimization.IDistanceFunction, IBurstCollider + { + + public BurstColliderShape shape; + public BurstAffineTransform colliderToSolver; + public int dataOffset; + public float dt; + + public EdgeMeshHeader header; + public NativeArray edgeBihNodes; + public NativeArray edges; + public NativeArray vertices; + + public void Evaluate(float4 point, float4 radii, quaternion orientation, ref BurstLocalOptimization.SurfacePoint projectedPoint) + { + point = colliderToSolver.InverseTransformPointUnscaled(point); + + if (shape.is2D != 0) + point[2] = 0; + + Edge t = edges[header.firstEdge + dataOffset]; + float4 v1 = (new float4(vertices[header.firstVertex + t.i1], 0) + shape.center) * colliderToSolver.scale; + float4 v2 = (new float4(vertices[header.firstVertex + t.i2], 0) + shape.center) * colliderToSolver.scale; + + float4 nearestPoint = BurstMath.NearestPointOnEdge(v1, v2, point, out float mu); + float4 normal = math.normalizesafe(point - nearestPoint); + + projectedPoint.normal = colliderToSolver.TransformDirection(normal); + projectedPoint.point = colliderToSolver.TransformPointUnscaled(nearestPoint + normal * shape.contactOffset); + } + + + public void Contacts(int colliderIndex, + int rigidbodyIndex, + NativeArray rigidbodies, + + NativeArray positions, + NativeArray orientations, + NativeArray velocities, + NativeArray radii, + + NativeArray simplices, + in BurstAabb simplexBounds, + int simplexIndex, + int simplexStart, + int simplexSize, + + NativeQueue.ParallelWriter contacts, + int optimizationIterations, + float optimizationTolerance) + { + if (shape.dataIndex < 0) return; + + BIHTraverse(colliderIndex, simplexIndex, simplexStart, simplexSize, + positions, orientations, radii, simplices, in simplexBounds, 0, contacts, optimizationIterations, optimizationTolerance); + } + + private void BIHTraverse(int colliderIndex, + int simplexIndex, + int simplexStart, + int simplexSize, + NativeArray positions, + NativeArray orientations, + NativeArray radii, + NativeArray simplices, + in BurstAabb simplexBounds, + int nodeIndex, + NativeQueue.ParallelWriter contacts, + int optimizationIterations, + float optimizationTolerance) + { + var node = edgeBihNodes[header.firstNode + nodeIndex]; + + if (node.firstChild >= 0) + { + // visit min node: + if (simplexBounds.min[node.axis] <= node.min + shape.center[node.axis]) + BIHTraverse(colliderIndex, simplexIndex, simplexStart, simplexSize, + positions, orientations, radii, simplices, in simplexBounds, + node.firstChild, contacts, optimizationIterations, optimizationTolerance); + + // visit max node: + if (simplexBounds.max[node.axis] >= node.max + shape.center[node.axis]) + BIHTraverse(colliderIndex, simplexIndex, simplexStart, simplexSize, + positions, orientations, radii, simplices, in simplexBounds, + node.firstChild + 1, contacts, optimizationIterations, optimizationTolerance); + } + else + { + // check for contact against all triangles: + for (dataOffset = node.start; dataOffset < node.start + node.count; ++dataOffset) + { + Edge t = edges[header.firstEdge + dataOffset]; + float4 v1 = new float4(vertices[header.firstVertex + t.i1], 0) + shape.center; + float4 v2 = new float4(vertices[header.firstVertex + t.i2], 0) + shape.center; + BurstAabb edgeBounds = new BurstAabb(v1, v2, shape.contactOffset + 0.01f); + + if (edgeBounds.IntersectsAabb(simplexBounds, shape.is2D != 0)) + { + var co = new BurstContact() { bodyA = simplexIndex, bodyB = colliderIndex }; + float4 simplexBary = BurstMath.BarycenterForSimplexOfSize(simplexSize); + + var colliderPoint = BurstLocalOptimization.Optimize(ref this, positions, orientations, radii, simplices, simplexStart, simplexSize, + ref simplexBary, out float4 convexPoint, optimizationIterations, optimizationTolerance); + + co.pointB = colliderPoint.point; + co.normal = colliderPoint.normal; + co.pointA = simplexBary; + + contacts.Enqueue(co); + } + } + } + } + + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstEdgeMesh.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstEdgeMesh.cs.meta new file mode 100644 index 000000000..bda2d5b6a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstEdgeMesh.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 91bd73e80795e494292d0b2fbf2e5e7f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstHeightField.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstHeightField.cs new file mode 100644 index 000000000..31f46c182 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstHeightField.cs @@ -0,0 +1,184 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Collections; +using Unity.Mathematics; + +namespace Obi +{ + public struct BurstHeightField : BurstLocalOptimization.IDistanceFunction, IBurstCollider + { + + public BurstColliderShape shape; + public BurstAffineTransform colliderToSolver; + public BurstAffineTransform solverToWorld; + public float dt; + public float collisionMargin; + + public BurstMath.CachedTri tri; + public float4 triNormal; + + public HeightFieldHeader header; + public NativeArray heightFieldSamples; + + public void Evaluate(float4 point, float4 radii, quaternion orientation, ref BurstLocalOptimization.SurfacePoint projectedPoint) + { + point = colliderToSolver.InverseTransformPoint(point); + + float4 nearestPoint = BurstMath.NearestPointOnTri(tri, point, out float4 bary); + float4 normal = math.normalizesafe(point - nearestPoint); + + // flip the contact normal if it points below ground: (doesn't work with holes) + //BurstMath.OneSidedNormal(triNormal, ref normal); + + projectedPoint.point = colliderToSolver.TransformPoint(nearestPoint + normal * shape.contactOffset); + projectedPoint.normal = colliderToSolver.TransformDirection(normal); + } + + public void Contacts(int colliderIndex, + int rigidbodyIndex, + NativeArray rigidbodies, + + NativeArray positions, + NativeArray orientations, + NativeArray velocities, + NativeArray radii, + + NativeArray simplices, + in BurstAabb simplexBounds, + int simplexIndex, + int simplexStart, + int simplexSize, + + NativeQueue.ParallelWriter contacts, + int optimizationIterations, + float optimizationTolerance) + { + if (shape.dataIndex < 0) return; + + triNormal = float4.zero; + + var co = new BurstContact() { bodyA = simplexIndex, bodyB = colliderIndex }; + + int resolutionU = (int)shape.center.x; + int resolutionV = (int)shape.center.y; + + // calculate terrain cell size: + float cellWidth = shape.size.x / (resolutionU - 1); + float cellHeight = shape.size.z / (resolutionV - 1); + + // calculate particle bounds min/max cells: + int2 min = new int2((int)math.floor(simplexBounds.min[0] / cellWidth), (int)math.floor(simplexBounds.min[2] / cellHeight)); + int2 max = new int2((int)math.floor(simplexBounds.max[0] / cellWidth), (int)math.floor(simplexBounds.max[2] / cellHeight)); + + for (int su = min[0]; su <= max[0]; ++su) + { + if (su >= 0 && su < resolutionU - 1) + { + for (int sv = min[1]; sv <= max[1]; ++sv) + { + if (sv >= 0 && sv < resolutionV - 1) + { + // calculate neighbor sample indices: + int csu1 = math.clamp(su + 1, 0, resolutionU - 1); + int csv1 = math.clamp(sv + 1, 0, resolutionV - 1); + + // sample heights: + float h1 = heightFieldSamples[header.firstSample + sv * resolutionU + su] * shape.size.y; + float h2 = heightFieldSamples[header.firstSample + sv * resolutionU + csu1] * shape.size.y; + float h3 = heightFieldSamples[header.firstSample + csv1 * resolutionU + su] * shape.size.y; + float h4 = heightFieldSamples[header.firstSample + csv1 * resolutionU + csu1] * shape.size.y; + + if (h1 < 0) continue; + h1 = math.abs(h1); + h2 = math.abs(h2); + h3 = math.abs(h3); + h4 = math.abs(h4); + + float min_x = su * shape.size.x / (resolutionU - 1); + float max_x = csu1 * shape.size.x / (resolutionU - 1); + float min_z = sv * shape.size.z / (resolutionV - 1); + float max_z = csv1 * shape.size.z / (resolutionV - 1); + + float4 convexPoint; + float4 simplexBary = BurstMath.BarycenterForSimplexOfSize(simplexSize); + + // ------contact against the first triangle------: + float4 v1 = new float4(min_x, h3, max_z, 0); + float4 v2 = new float4(max_x, h4, max_z, 0); + float4 v3 = new float4(min_x, h1, min_z, 0); + + tri.Cache(v1, v2, v3); + triNormal.xyz = math.normalizesafe(math.cross((v2 - v1).xyz, (v3 - v1).xyz)); + + var colliderPoint = BurstLocalOptimization.Optimize(ref this, positions, orientations, radii, simplices, simplexStart, simplexSize, + ref simplexBary, out convexPoint, optimizationIterations, optimizationTolerance); + + float4 velocity = float4.zero; + float simplexRadius = 0; + for (int j = 0; j < simplexSize; ++j) + { + int particleIndex = simplices[simplexStart + j]; + simplexRadius += radii[particleIndex].x * simplexBary[j]; + velocity += velocities[particleIndex] * simplexBary[j]; + } + + float4 rbVelocity = float4.zero; + if (rigidbodyIndex >= 0) + rbVelocity = BurstMath.GetRigidbodyVelocityAtPoint(rigidbodyIndex, colliderPoint.point, rigidbodies, solverToWorld); + + float dAB = math.dot(convexPoint - colliderPoint.point, colliderPoint.normal); + float vel = math.dot(velocity - rbVelocity, colliderPoint.normal); + + if (vel * dt + dAB <= simplexRadius + shape.contactOffset + collisionMargin) + { + co.pointB = colliderPoint.point; + co.normal = colliderPoint.normal; + co.pointA = simplexBary; + contacts.Enqueue(co); + } + + // ------contact against the second triangle------: + v1 = new float4(min_x, h1, min_z, 0); + v2 = new float4(max_x, h4, max_z, 0); + v3 = new float4(max_x, h2, min_z, 0); + + tri.Cache(v1, v2, v3); + triNormal.xyz = math.normalizesafe(math.cross((v2 - v1).xyz, (v3 - v1).xyz)); + + colliderPoint = BurstLocalOptimization.Optimize(ref this, positions, orientations, radii, simplices, simplexStart, simplexSize, + ref simplexBary, out convexPoint, optimizationIterations, optimizationTolerance); + + velocity = float4.zero; + simplexRadius = 0; + for (int j = 0; j < simplexSize; ++j) + { + int particleIndex = simplices[simplexStart + j]; + simplexRadius += radii[particleIndex].x * simplexBary[j]; + velocity += velocities[particleIndex] * simplexBary[j]; + } + + rbVelocity = float4.zero; + if (rigidbodyIndex >= 0) + rbVelocity = BurstMath.GetRigidbodyVelocityAtPoint(rigidbodyIndex, colliderPoint.point, rigidbodies, solverToWorld); + + dAB = math.dot(convexPoint - colliderPoint.point, colliderPoint.normal); + vel = math.dot(velocity - rbVelocity, colliderPoint.normal); + + if (vel * dt + dAB <= simplexRadius + shape.contactOffset + collisionMargin) + { + co.pointB = colliderPoint.point; + co.normal = colliderPoint.normal; + co.pointA = simplexBary; + + contacts.Enqueue(co); + } + } + } + } + } + + } + + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstHeightField.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstHeightField.cs.meta new file mode 100644 index 000000000..a4815254a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstHeightField.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 780062b6393e3476e947fb10fc9b4f3d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstLocalOptimization.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstLocalOptimization.cs new file mode 100644 index 000000000..0b0570e08 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstLocalOptimization.cs @@ -0,0 +1,203 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; +using System.Collections.Generic; +using UnityEngine; +using Unity.Collections; +using Unity.Jobs; +using Unity.Mathematics; +using Unity.Burst; +using System.Runtime.CompilerServices; + +namespace Obi +{ + public static class BurstLocalOptimization + { + + /** + * point in the surface of a signed distance field. + */ + public struct SurfacePoint + { + public float4 bary; + public float4 point; + public float4 normal; + } + + public interface IDistanceFunction + { + void Evaluate(float4 point, float4 radii, quaternion orientation, ref SurfacePoint projectedPoint); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static void GetInterpolatedSimplexData(int simplexStart, + int simplexSize, + NativeArray simplices, + NativeArray positions, + NativeArray orientations, + NativeArray radii, + float4 convexBary, + out float4 convexPoint, + out float4 convexRadii, + out quaternion convexOrientation) + { + convexPoint = float4.zero; + convexRadii = float4.zero; + convexOrientation = new quaternion(0, 0, 0, 0); + for (int j = 0; j < simplexSize; ++j) + { + int particle = simplices[simplexStart + j]; + convexPoint += positions[particle] * convexBary[j]; + convexRadii += radii[particle] * convexBary[j]; + convexOrientation.value += orientations[particle].value * convexBary[j]; + } + } + + public static SurfacePoint Optimize(ref T function, + NativeArray positions, + NativeArray orientations, + NativeArray radii, + NativeArray simplices, + int simplexStart, + int simplexSize, + ref float4 convexBary, + out float4 convexPoint, + int maxIterations = 16, + float tolerance = 0.004f) where T : struct, IDistanceFunction + { + var pointInFunction = new SurfacePoint(); + + // get cartesian coordinates of the initial guess: + GetInterpolatedSimplexData(simplexStart, simplexSize, simplices, positions, orientations, radii, convexBary, out convexPoint, out float4 convexThickness, out quaternion convexOrientation); + + // for a 0-simplex (point), perform a single evaluation: + if (simplexSize == 1 || maxIterations < 1) + function.Evaluate(convexPoint, convexThickness, convexOrientation, ref pointInFunction); + + // for a 1-simplex (edge), perform golden ratio search: + else if (simplexSize == 2) + GoldenSearch(ref function, simplexStart, simplexSize, positions, orientations, radii, simplices, ref convexPoint, ref convexThickness, ref convexOrientation, ref convexBary, ref pointInFunction, maxIterations, tolerance * 10); + + // for higher-order simplices, use general Frank-Wolfe convex optimization: + else + FrankWolfe(ref function, simplexStart, simplexSize, positions, orientations, radii, simplices, ref convexPoint, ref convexThickness, ref convexOrientation, ref convexBary, ref pointInFunction, maxIterations, tolerance); + + return pointInFunction; + } + + // Frank-Wolfe convex optimization algorithm. Returns closest point to a simplex in a signed distance function. + private static void FrankWolfe(ref T function, + int simplexStart, + int simplexSize, + NativeArray positions, + NativeArray orientations, + NativeArray radii, + NativeArray simplices, + ref float4 convexPoint, + ref float4 convexThickness, + ref quaternion convexOrientation, + ref float4 convexBary, + ref SurfacePoint pointInFunction, + int maxIterations, + float tolerance) where T : struct, IDistanceFunction + { + for (int i = 0; i < maxIterations; ++i) + { + // sample target function: + function.Evaluate(convexPoint, convexThickness, convexOrientation, ref pointInFunction); + + // find descent direction: + int descent = 0; + float gap = float.MinValue; + for (int j = 0; j < simplexSize; ++j) + { + int particle = simplices[simplexStart + j]; + float4 candidate = positions[particle] - convexPoint; + + // here, we adjust the candidate by projecting it to the engrosed simplex's surface: + candidate -= pointInFunction.normal * (radii[particle].x - convexThickness.x); + + float corr = math.dot(-pointInFunction.normal, candidate); + if (corr > gap) + { + descent = j; + gap = corr; + } + } + + // if the duality gap is below tolerance threshold, stop iterating. + if (gap < tolerance) + break; + + // update the barycentric coords using 2/(i+2) as the step factor + float step = 0.3f * 2.0f / (i + 2); + convexBary *= 1 - step; + convexBary[descent] += step; + + // get cartesian coordinates of current solution: + GetInterpolatedSimplexData(simplexStart, simplexSize, simplices, positions, orientations, radii, convexBary, out convexPoint, out convexThickness, out convexOrientation); + } + } + + private static void GoldenSearch(ref T function, + int simplexStart, + int simplexSize, + NativeArray positions, + NativeArray orientations, + NativeArray radii, + NativeArray simplices, + ref float4 convexPoint, + ref float4 convexThickness, + ref quaternion convexOrientation, + ref float4 convexBary, + ref SurfacePoint pointInFunction, + int maxIterations, + float tolerance) where T : struct, IDistanceFunction + { + var pointInFunctionD = new SurfacePoint(); + float4 convexPointD, convexThicknessD; + quaternion convexOrientationD; + + float gr = (math.sqrt(5.0f) + 1) / 2.0f; + float u = 0, v = 1; + float c = v - (v - u) / gr; + float d = u + (v - u) / gr; + + for (int i = 0; i < maxIterations; ++i) + { + // if the gap is below tolerance threshold, stop iterating. + if (math.abs(v - u) < tolerance * (math.abs(c) + math.abs(d))) + break; + + GetInterpolatedSimplexData(simplexStart, simplexSize, simplices, positions, orientations, radii, new float4(c, 1 - c, 0, 0), out convexPoint, out convexThickness, out convexOrientation); + GetInterpolatedSimplexData(simplexStart, simplexSize, simplices, positions, orientations, radii, new float4(d, 1 - d, 0, 0), out convexPointD, out convexThicknessD, out convexOrientationD); + + function.Evaluate(convexPoint, convexThickness, convexOrientation, ref pointInFunction); + function.Evaluate(convexPointD, convexThicknessD, convexOrientationD, ref pointInFunctionD); + + float4 candidateC = positions[simplices[simplexStart]] - pointInFunction.point; + float4 candidateD = positions[simplices[simplexStart + 1]] - pointInFunctionD.point; + + candidateC -= pointInFunction.normal * (radii[simplices[simplexStart]].x - convexThickness.x); + candidateD -= pointInFunctionD.normal * (radii[simplices[simplexStart + 1]].x - convexThicknessD.x); + + if (math.dot(-pointInFunction.normal, candidateC) < math.dot(-pointInFunctionD.normal, candidateD)) + v = d; + else + u = c; + + c = v - (v - u) / gr; + d = u + (v - u) / gr; + } + + float mid = (v + u) * 0.5f; + convexBary.x = mid; + convexBary.y = (1 - mid); + GetInterpolatedSimplexData(simplexStart, simplexSize, simplices, positions, orientations, radii, convexBary, out convexPoint, out convexThickness, out convexOrientation); + function.Evaluate(convexPoint, convexThickness, convexOrientation, ref pointInFunction); + } + + + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstLocalOptimization.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstLocalOptimization.cs.meta new file mode 100644 index 000000000..364d3fc91 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstLocalOptimization.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e0353c4eae8ca4ec78f2db34845cd5cd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstSimplex.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstSimplex.cs new file mode 100644 index 000000000..35f990289 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstSimplex.cs @@ -0,0 +1,64 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; +using System.Collections.Generic; +using UnityEngine; +using Unity.Collections; +using Unity.Jobs; +using Unity.Mathematics; +using Unity.Burst; + +namespace Obi +{ + public struct BurstSimplex : BurstLocalOptimization.IDistanceFunction + { + public NativeArray positions; + public NativeArray radii; + public NativeArray simplices; + + public int simplexStart; + public int simplexSize; + + private BurstMath.CachedTri tri; + + public void CacheData() + { + if (simplexSize == 3) + { + tri.Cache(positions[simplices[simplexStart]], + positions[simplices[simplexStart + 1]], + positions[simplices[simplexStart + 2]]); + } + } + + public void Evaluate(float4 point, float4 radii, quaternion orientation, ref BurstLocalOptimization.SurfacePoint projectedPoint) + { + switch (simplexSize) + { + case 1: + { + float4 p1 = positions[simplices[simplexStart]]; + projectedPoint.bary = new float4(1, 0, 0, 0); + projectedPoint.point = p1; + } + break; + case 2: + { + float4 p1 = positions[simplices[simplexStart]]; + float4 p2 = positions[simplices[simplexStart + 1]]; + BurstMath.NearestPointOnEdge(p1, p2, point, out float mu); + projectedPoint.bary = new float4(1 - mu, mu, 0, 0); + projectedPoint.point = p1 * projectedPoint.bary[0] + p2 * projectedPoint.bary[1]; + + }break; + case 3: + projectedPoint.point = BurstMath.NearestPointOnTri(tri, point, out projectedPoint.bary); + break; + } + + projectedPoint.normal = math.normalizesafe(point - projectedPoint.point); + } + + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstSimplex.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstSimplex.cs.meta new file mode 100644 index 000000000..31e49b57a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstSimplex.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d84f433832a8c4a90ba92ac471d18e44 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstSphere.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstSphere.cs new file mode 100644 index 000000000..327262365 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstSphere.cs @@ -0,0 +1,64 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Collections; +using Unity.Mathematics; + +namespace Obi +{ + public struct BurstSphere : BurstLocalOptimization.IDistanceFunction, IBurstCollider + { + public BurstColliderShape shape; + public BurstAffineTransform colliderToSolver; + public float dt; + + public void Evaluate(float4 point, float4 radii, quaternion orientation, ref BurstLocalOptimization.SurfacePoint projectedPoint) + { + float4 center = shape.center * colliderToSolver.scale; + point = colliderToSolver.InverseTransformPointUnscaled(point) - center; + + if (shape.is2D != 0) + point[2] = 0; + + float radius = shape.size.x * math.cmax(colliderToSolver.scale.xyz); + float distanceToCenter = math.length(point); + + float4 normal = point / (distanceToCenter + BurstMath.epsilon); + + projectedPoint.point = colliderToSolver.TransformPointUnscaled(center + normal * (radius + shape.contactOffset)); + projectedPoint.normal = colliderToSolver.TransformDirection(normal); + } + + public void Contacts(int colliderIndex, + int rigidbodyIndex, + NativeArray rigidbodies, + + NativeArray positions, + NativeArray orientations, + NativeArray velocities, + NativeArray radii, + + NativeArray simplices, + in BurstAabb simplexBounds, + int simplexIndex, + int simplexStart, + int simplexSize, + + NativeQueue.ParallelWriter contacts, + int optimizationIterations, + float optimizationTolerance) + { + var co = new BurstContact() { bodyA = simplexIndex, bodyB = colliderIndex }; + float4 simplexBary = BurstMath.BarycenterForSimplexOfSize(simplexSize); + + var colliderPoint = BurstLocalOptimization.Optimize(ref this, positions, orientations, radii, simplices, simplexStart, simplexSize, + ref simplexBary, out float4 convexPoint, optimizationIterations, optimizationTolerance); + + co.pointB = colliderPoint.point; + co.normal = colliderPoint.normal; + co.pointA = simplexBary; + + contacts.Enqueue(co); + } + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstSphere.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstSphere.cs.meta new file mode 100644 index 000000000..5417774c5 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstSphere.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 38081dcc3e28a4a3dba1e8e5d042a262 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstTriangleMesh.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstTriangleMesh.cs new file mode 100644 index 000000000..6edf852f4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstTriangleMesh.cs @@ -0,0 +1,149 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Collections; +using Unity.Mathematics; + +namespace Obi +{ + public struct BurstTriangleMesh : BurstLocalOptimization.IDistanceFunction, IBurstCollider + { + public BurstColliderShape shape; + public BurstAffineTransform colliderToSolver; + public BurstAffineTransform solverToWorld; + + public TriangleMeshHeader header; + public NativeArray bihNodes; + public NativeArray triangles; + public NativeArray vertices; + + public float dt; + public float collisionMargin; + + private BurstMath.CachedTri tri; + + public void Evaluate(float4 point, float4 radii, quaternion orientation, ref BurstLocalOptimization.SurfacePoint projectedPoint) + { + point = colliderToSolver.InverseTransformPointUnscaled(point); + + if (shape.is2D != 0) + point[2] = 0; + + float4 nearestPoint = BurstMath.NearestPointOnTri(tri, point, out float4 bary); + float4 normal = math.normalizesafe(point - nearestPoint); + + projectedPoint.point = colliderToSolver.TransformPointUnscaled(nearestPoint + normal * shape.contactOffset); + projectedPoint.normal = colliderToSolver.TransformDirection(normal); + } + + public void Contacts(int colliderIndex, + int rigidbodyIndex, + NativeArray rigidbodies, + + NativeArray positions, + NativeArray orientations, + NativeArray velocities, + NativeArray radii, + + NativeArray simplices, + in BurstAabb simplexBounds, + int simplexIndex, + int simplexStart, + int simplexSize, + + NativeQueue.ParallelWriter contacts, + int optimizationIterations, + float optimizationTolerance) + { + + BIHTraverse(colliderIndex, rigidbodyIndex, simplexIndex, simplexStart, simplexSize, + rigidbodies, positions, orientations, velocities, radii, simplices, in simplexBounds, 0, contacts, optimizationIterations, optimizationTolerance); + + } + + private void BIHTraverse(int colliderIndex, + int rigidbodyIndex, + int simplexIndex, + int simplexStart, + int simplexSize, + NativeArray rigidbodies, + NativeArray positions, + NativeArray orientations, + NativeArray velocities, + NativeArray radii, + NativeArray simplices, + in BurstAabb simplexBounds, + int nodeIndex, + NativeQueue.ParallelWriter contacts, + int optimizationIterations, + float optimizationTolerance) + { + var node = bihNodes[header.firstNode + nodeIndex]; + + if (node.firstChild >= 0) + { + // visit min node: + if (simplexBounds.min[node.axis] <= node.min) + BIHTraverse(colliderIndex, rigidbodyIndex, simplexIndex, simplexStart, simplexSize, + rigidbodies, positions, orientations, velocities, radii, simplices, in simplexBounds, + node.firstChild, contacts, optimizationIterations, optimizationTolerance); + + // visit max node: + if (simplexBounds.max[node.axis] >= node.max) + BIHTraverse(colliderIndex, rigidbodyIndex, simplexIndex, simplexStart, simplexSize, + rigidbodies, positions, orientations, velocities, radii, simplices, in simplexBounds, + node.firstChild + 1, contacts, optimizationIterations, optimizationTolerance); + } + else + { + // check for contact against all triangles: + for (int dataOffset = node.start; dataOffset < node.start + node.count; ++dataOffset) + { + Triangle t = triangles[header.firstTriangle + dataOffset]; + float4 v1 = new float4(vertices[header.firstVertex + t.i1], 0); + float4 v2 = new float4(vertices[header.firstVertex + t.i2], 0); + float4 v3 = new float4(vertices[header.firstVertex + t.i3], 0); + BurstAabb triangleBounds = new BurstAabb(v1, v2, v3, shape.contactOffset + collisionMargin); + + if (triangleBounds.IntersectsAabb(simplexBounds, shape.is2D != 0)) + { + float4 simplexBary = BurstMath.BarycenterForSimplexOfSize(simplexSize); + tri.Cache(v1 * colliderToSolver.scale, v2 * colliderToSolver.scale, v3 * colliderToSolver.scale); + + var colliderPoint = BurstLocalOptimization.Optimize(ref this, positions, orientations, radii, simplices, simplexStart, simplexSize, + ref simplexBary, out float4 simplexPoint, optimizationIterations, optimizationTolerance); + + float4 velocity = float4.zero; + float simplexRadius = 0; + for (int j = 0; j < simplexSize; ++j) + { + int particleIndex = simplices[simplexStart + j]; + simplexRadius += radii[particleIndex].x * simplexBary[j]; + velocity += velocities[particleIndex] * simplexBary[j]; + } + + float4 rbVelocity = float4.zero; + if (rigidbodyIndex >= 0) + rbVelocity = BurstMath.GetRigidbodyVelocityAtPoint(rigidbodyIndex, colliderPoint.point, rigidbodies, solverToWorld); + + float dAB = math.dot(simplexPoint - colliderPoint.point, colliderPoint.normal); + float vel = math.dot(velocity - rbVelocity, colliderPoint.normal); + + if (vel * dt + dAB <= simplexRadius + shape.contactOffset + collisionMargin) + { + contacts.Enqueue(new BurstContact() + { + bodyA = simplexIndex, + bodyB = colliderIndex, + pointA = simplexBary, + pointB = colliderPoint.point, + normal = colliderPoint.normal, + }); + } + } + } + } + } + + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstTriangleMesh.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstTriangleMesh.cs.meta new file mode 100644 index 000000000..df2751d27 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/BurstTriangleMesh.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1a65b8b437c2548c0b04b7ddb58a3970 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/IBurstCollider.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/IBurstCollider.cs new file mode 100644 index 000000000..dd6e73bc2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/IBurstCollider.cs @@ -0,0 +1,29 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Collections; +using Unity.Mathematics; + +namespace Obi +{ + interface IBurstCollider + { + void Contacts(int colliderIndex, + int rigidbodyIndex, + NativeArray rigidbodies, + + NativeArray positions, + NativeArray orientations, + NativeArray velocities, + NativeArray radii, + + NativeArray simplices, + in BurstAabb simplexBounds, + int simplexIndex, + int simplexStart, + int simplexSize, + + NativeQueue.ParallelWriter contacts, + int optimizationIterations, + float optimizationTolerance); + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/IBurstCollider.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/IBurstCollider.cs.meta new file mode 100644 index 000000000..63ab565a5 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Collisions/IBurstCollider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 424c135125b644408aeda26a57bd6e40 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints.meta new file mode 100644 index 000000000..eadb4408b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f2aff1726dad4479cb41e9f94e28473f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Aerodynamics.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Aerodynamics.meta new file mode 100644 index 000000000..fc5587ede --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Aerodynamics.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b4c2af25bbe8a4c44941ea5486c18f71 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Aerodynamics/BurstAerodynamicConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Aerodynamics/BurstAerodynamicConstraints.cs new file mode 100644 index 000000000..9f54797cd --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Aerodynamics/BurstAerodynamicConstraints.cs @@ -0,0 +1,26 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; + +namespace Obi +{ + public class BurstAerodynamicConstraints : BurstConstraintsImpl + { + public BurstAerodynamicConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.Aerodynamics) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstAerodynamicConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstAerodynamicConstraintsBatch); + batch.Destroy(); + } + } +} +#endif diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Aerodynamics/BurstAerodynamicConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Aerodynamics/BurstAerodynamicConstraints.cs.meta new file mode 100644 index 000000000..d1acf22e2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Aerodynamics/BurstAerodynamicConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 64e54848bb85248c8b0c31991ef094e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Aerodynamics/BurstAerodynamicConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Aerodynamics/BurstAerodynamicConstraintsBatch.cs new file mode 100644 index 000000000..3fc159964 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Aerodynamics/BurstAerodynamicConstraintsBatch.cs @@ -0,0 +1,112 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using System.Collections; + +namespace Obi +{ + public class BurstAerodynamicConstraintsBatch : BurstConstraintsBatchImpl, IAerodynamicConstraintsBatchImpl + { + private NativeArray aerodynamicCoeffs; + + public BurstAerodynamicConstraintsBatch(BurstAerodynamicConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.Aerodynamics; + } + + public void SetAerodynamicConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList aerodynamicCoeffs, int count) + { + this.particleIndices = particleIndices.AsNativeArray(); + this.aerodynamicCoeffs = aerodynamicCoeffs.AsNativeArray(); + m_ConstraintCount = count; + } + + public override JobHandle Initialize(JobHandle inputDeps, float substepTime) + { + return inputDeps; + } + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + var projectConstraints = new AerodynamicConstraintsBatchJob() + { + particleIndices = particleIndices, + aerodynamicCoeffs = aerodynamicCoeffs, + positions = solverImplementation.positions, + velocities = solverImplementation.velocities, + normals = solverImplementation.normals, + wind = solverImplementation.wind, + invMasses = solverImplementation.invMasses, + deltaTime = substepTime + }; + + return projectConstraints.Schedule(m_ConstraintCount, 32, inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + return inputDeps; + } + + [BurstCompile] + public struct AerodynamicConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] [NativeDisableParallelForRestriction] public NativeArray aerodynamicCoeffs; + + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray normals; + [ReadOnly] public NativeArray wind; + [ReadOnly] public NativeArray invMasses; + + [NativeDisableContainerSafetyRestriction] + public NativeArray velocities; + + [ReadOnly] public float deltaTime; + + public void Execute(int i) + { + int p = particleIndices[i]; + + float area = aerodynamicCoeffs[i * 3]; + float dragCoeff = aerodynamicCoeffs[i * 3 + 1]; + float liftCoeff = aerodynamicCoeffs[i * 3 + 2]; + + if (invMasses[p] > 0) + { + float4 relVelocity = velocities[p] - wind[p]; + float rvSqrMag = math.lengthsq(relVelocity); + + if (rvSqrMag < BurstMath.epsilon) + return; + + float4 rvNorm = relVelocity / math.sqrt(rvSqrMag); + + // calculate surface normal (always facing wind) + float4 surfNormal = normals[p] * math.sign(math.dot(normals[p], rvNorm)); + + // aerodynamic_factor was originally multiplied by air_density. The density is now premultiplied in lift and drag. + float aerodynamicFactor = 0.5f * rvSqrMag * area; + float attackAngle = math.dot(surfNormal,rvNorm); + + float3 liftDirection = math.normalizesafe(math.cross(math.cross(surfNormal.xyz, rvNorm.xyz), rvNorm.xyz)); + + //drag: + velocities[p] += (-dragCoeff * rvNorm + + + // lift: + liftCoeff * new float4(liftDirection.xyz,0)) * + + // scale + attackAngle * math.min(aerodynamicFactor * invMasses[p] * deltaTime, 1000); + } + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Aerodynamics/BurstAerodynamicConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Aerodynamics/BurstAerodynamicConstraintsBatch.cs.meta new file mode 100644 index 000000000..727a13f49 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Aerodynamics/BurstAerodynamicConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e9db1828d66ec4f65aa37304663982af +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Bend.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Bend.meta new file mode 100644 index 000000000..844ecb4de --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Bend.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 93818b1e63d1143c580b09480a2c0a1c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Bend/BurstBendConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Bend/BurstBendConstraints.cs new file mode 100644 index 000000000..38ba785ca --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Bend/BurstBendConstraints.cs @@ -0,0 +1,26 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; + +namespace Obi +{ + public class BurstBendConstraints : BurstConstraintsImpl + { + public BurstBendConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.Bending) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstBendConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstBendConstraintsBatch); + batch.Destroy(); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Bend/BurstBendConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Bend/BurstBendConstraints.cs.meta new file mode 100644 index 000000000..621fd0643 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Bend/BurstBendConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6c5e3cbf9187d4d39a1bc1a2e2386b00 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Bend/BurstBendConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Bend/BurstBendConstraintsBatch.cs new file mode 100644 index 000000000..b163b493e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Bend/BurstBendConstraintsBatch.cs @@ -0,0 +1,169 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using System.Collections; + +namespace Obi +{ + public class BurstBendConstraintsBatch : BurstConstraintsBatchImpl, IBendConstraintsBatchImpl + { + private NativeArray restBends; + private NativeArray stiffnesses; + private NativeArray plasticity; + + BendConstraintsBatchJob projectConstraints; + ApplyBendConstraintsBatchJob applyConstraints; + + public BurstBendConstraintsBatch(BurstBendConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.Bending; + } + + public void SetBendConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList restBends, ObiNativeVector2List bendingStiffnesses, ObiNativeVector2List plasticity, ObiNativeFloatList lambdas, int count) + { + this.particleIndices = particleIndices.AsNativeArray(); + this.restBends = restBends.AsNativeArray(); + this.stiffnesses = bendingStiffnesses.AsNativeArray(); + this.plasticity = plasticity.AsNativeArray(); + this.lambdas = lambdas.AsNativeArray(); + m_ConstraintCount = count; + + projectConstraints.particleIndices = this.particleIndices; + projectConstraints.restBends = this.restBends; + projectConstraints.stiffnesses = this.stiffnesses; + projectConstraints.plasticity = this.plasticity; + projectConstraints.lambdas = this.lambdas; + + applyConstraints.particleIndices = this.particleIndices; + } + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + projectConstraints.positions = solverImplementation.positions; + projectConstraints.invMasses = solverImplementation.invMasses; + projectConstraints.deltas = solverImplementation.positionDeltas; + projectConstraints.counts = solverImplementation.positionConstraintCounts; + projectConstraints.deltaTime = substepTime; + + return projectConstraints.Schedule(m_ConstraintCount, 32, inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + applyConstraints.positions = solverImplementation.positions; + applyConstraints.deltas = solverImplementation.positionDeltas; + applyConstraints.counts = solverImplementation.positionConstraintCounts; + applyConstraints.sorFactor = parameters.SORFactor; + + return applyConstraints.Schedule(m_ConstraintCount, 64, inputDeps); + } + + [BurstCompile] + public struct BendConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public NativeArray stiffnesses; + [ReadOnly] public NativeArray plasticity; //plastic yield, creep + public NativeArray restBends; + public NativeArray lambdas; + + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray invMasses; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray counts; + + [ReadOnly] public float deltaTime; + + public void Execute(int i) + { + int p1 = particleIndices[i * 3]; + int p2 = particleIndices[i * 3 + 1]; + int p3 = particleIndices[i * 3 + 2]; + + float w1 = invMasses[p1]; + float w2 = invMasses[p2]; + float w3 = invMasses[p3]; + + float wsum = w1 + w2 + 2 * w3; + + float4 bendVector = positions[p3] - (positions[p1] + positions[p2] + positions[p3]) / 3.0f; + float bend = math.length(bendVector); + + + float constraint = bend - restBends[i]; + + constraint = math.max(0, constraint - stiffnesses[i].x) + + math.min(0, constraint + stiffnesses[i].x); + + // plasticity: + if (math.abs(constraint) > plasticity[i].x) + restBends[i] += constraint * plasticity[i].y * deltaTime; + + // calculate time adjusted compliance + float compliance = stiffnesses[i].y / (deltaTime * deltaTime); + + // since the third particle moves twice the amount of the other 2, the modulus of its gradient is 2: + float dlambda = (-constraint - compliance * lambdas[i]) / (wsum + compliance + BurstMath.epsilon); + float4 correction = dlambda * bendVector / (bend + BurstMath.epsilon); + + lambdas[i] += dlambda; + + deltas[p1] -= correction * 2 * w1; + deltas[p2] -= correction * 2 * w2; + deltas[p3] += correction * 4 * w3; + + counts[p1]++; + counts[p2]++; + counts[p3]++; + } + } + + [BurstCompile] + public struct ApplyBendConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public float sorFactor; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray counts; + + public void Execute(int i) + { + int p1 = particleIndices[i * 3]; + int p2 = particleIndices[i * 3 + 1]; + int p3 = particleIndices[i * 3 + 2]; + + if (counts[p1] > 0) + { + positions[p1] += deltas[p1] * sorFactor / counts[p1]; + deltas[p1] = float4.zero; + counts[p1] = 0; + } + + if (counts[p2] > 0) + { + positions[p2] += deltas[p2] * sorFactor / counts[p2]; + deltas[p2] = float4.zero; + counts[p2] = 0; + } + + if (counts[p3] > 0) + { + positions[p3] += deltas[p3] * sorFactor / counts[p3]; + deltas[p3] = float4.zero; + counts[p3] = 0; + } + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Bend/BurstBendConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Bend/BurstBendConstraintsBatch.cs.meta new file mode 100644 index 000000000..174589037 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Bend/BurstBendConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ca9c1fed63774363964743eb64fb68b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BendTwist.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BendTwist.meta new file mode 100644 index 000000000..ef85fae76 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BendTwist.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e62fc9e22b02847ba86a32d3d0f375da +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BendTwist/BurstBendTwistConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BendTwist/BurstBendTwistConstraints.cs new file mode 100644 index 000000000..6f913d959 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BendTwist/BurstBendTwistConstraints.cs @@ -0,0 +1,26 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; + +namespace Obi +{ + public class BurstBendTwistConstraints : BurstConstraintsImpl + { + public BurstBendTwistConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.BendTwist) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstBendTwistConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstBendTwistConstraintsBatch); + batch.Destroy(); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BendTwist/BurstBendTwistConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BendTwist/BurstBendTwistConstraints.cs.meta new file mode 100644 index 000000000..e87fcafa2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BendTwist/BurstBendTwistConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 59166e10c311e43e283064f9c03b525c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BendTwist/BurstBendTwistConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BendTwist/BurstBendTwistConstraintsBatch.cs new file mode 100644 index 000000000..c34acf76c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BendTwist/BurstBendTwistConstraintsBatch.cs @@ -0,0 +1,182 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using System.Collections; + +namespace Obi +{ + public class BurstBendTwistConstraintsBatch : BurstConstraintsBatchImpl, IBendTwistConstraintsBatchImpl + { + private NativeArray orientationIndices; + private NativeArray restDarboux; + private NativeArray stiffnesses; + private NativeArray plasticity; + + public BurstBendTwistConstraintsBatch(BurstBendTwistConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.BendTwist; + } + + public void SetBendTwistConstraints(ObiNativeIntList orientationIndices, ObiNativeQuaternionList restDarboux, ObiNativeVector3List stiffnesses, ObiNativeVector2List plasticity, ObiNativeFloatList lambdas, int count) + { + this.orientationIndices = orientationIndices.AsNativeArray(); + this.restDarboux = restDarboux.AsNativeArray(); + this.stiffnesses = stiffnesses.AsNativeArray(); + this.plasticity = plasticity.AsNativeArray(); + this.lambdas = lambdas.AsNativeArray(); + m_ConstraintCount = count; + } + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + var projectConstraints = new BendTwistConstraintsBatchJob() + { + orientationIndices = orientationIndices, + restDarboux = restDarboux, + stiffnesses = stiffnesses, + plasticity = plasticity, + lambdas = lambdas.Reinterpret(), + + orientations = solverImplementation.orientations, + invRotationalMasses = solverImplementation.invRotationalMasses, + + orientationDeltas = solverImplementation.orientationDeltas, + orientationCounts = solverImplementation.orientationConstraintCounts , + + deltaTime = substepTime + }; + + return projectConstraints.Schedule(m_ConstraintCount, 32, inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + var applyConstraints = new ApplyBendTwistConstraintsBatchJob() + { + orientationIndices = orientationIndices, + + orientations = solverImplementation.orientations, + orientationDeltas = solverImplementation.orientationDeltas, + orientationCounts = solverImplementation.orientationConstraintCounts, + + sorFactor = parameters.SORFactor + }; + + return applyConstraints.Schedule(m_ConstraintCount, 64, inputDeps); + } + + [BurstCompile] + public struct BendTwistConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray orientationIndices; + [ReadOnly] public NativeArray stiffnesses; + [ReadOnly] public NativeArray plasticity; + public NativeArray restDarboux; + public NativeArray lambdas; + + [ReadOnly] public NativeArray orientations; + [ReadOnly] public NativeArray invRotationalMasses; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray orientationDeltas; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray orientationCounts; + + [ReadOnly] public float deltaTime; + + public void Execute(int i) + { + int q1 = orientationIndices[i * 2]; + int q2 = orientationIndices[i * 2 + 1]; + + float w1 = invRotationalMasses[q1]; + float w2 = invRotationalMasses[q2]; + + // calculate time adjusted compliance + float3 compliances = stiffnesses[i] / (deltaTime * deltaTime); + + // rest and current darboux vectors + quaternion rest = restDarboux[i]; + quaternion omega = math.mul(math.conjugate(orientations[q1]), orientations[q2]); + + quaternion omega_plus; + omega_plus.value = omega.value + rest.value; //delta Omega with - omega_0 + omega.value -= rest.value; //delta Omega with + omega_0 + + if (math.lengthsq(omega.value) > math.lengthsq(omega_plus.value)) + omega = omega_plus; + + // plasticity + if (math.lengthsq(omega.value) > plasticity[i].x * plasticity[i].x) + { + rest.value += omega.value * plasticity[i].y * deltaTime; + restDarboux[i] = rest; + } + + float3 dlambda = (omega.value.xyz - compliances * lambdas[i]) / (compliances + new float3(w1 + w2 + BurstMath.epsilon)); + + //discrete Darboux vector does not have vanishing scalar part + quaternion dlambdaQ = new quaternion(dlambda[0], dlambda[1], dlambda[2],0); + + quaternion d1 = orientationDeltas[q1]; + quaternion d2 = orientationDeltas[q2]; + + d1.value += math.mul(orientations[q2], dlambdaQ).value * w1; + d2.value -= math.mul(orientations[q1], dlambdaQ).value * w2; + + orientationDeltas[q1] = d1; + orientationDeltas[q2] = d2; + + orientationCounts[q1]++; + orientationCounts[q2]++; + + lambdas[i] += dlambda; + + } + } + + [BurstCompile] + public struct ApplyBendTwistConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray orientationIndices; + [ReadOnly] public float sorFactor; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray orientations; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray orientationDeltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray orientationCounts; + + public void Execute(int i) + { + int p1 = orientationIndices[i * 2]; + int p2 = orientationIndices[i * 2 + 1]; + + if (orientationCounts[p1] > 0) + { + quaternion q = orientations[p1]; + q.value += orientationDeltas[p1].value * sorFactor / orientationCounts[p1]; + orientations[p1] = math.normalize(q); + + orientationDeltas[p1] = new quaternion(0, 0, 0, 0); + orientationCounts[p1] = 0; + } + + if (orientationCounts[p2] > 0) + { + quaternion q = orientations[p2]; + q.value += orientationDeltas[p2].value * sorFactor / orientationCounts[p2]; + orientations[p2] = math.normalize(q); + + orientationDeltas[p2] = new quaternion(0, 0, 0, 0); + orientationCounts[p2] = 0; + } + } + + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BendTwist/BurstBendTwistConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BendTwist/BurstBendTwistConstraintsBatch.cs.meta new file mode 100644 index 000000000..3271c978d --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BendTwist/BurstBendTwistConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c6235d2e315a94287ab8a219496d7961 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BurstConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BurstConstraintsBatchImpl.cs new file mode 100644 index 000000000..5594e4786 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BurstConstraintsBatchImpl.cs @@ -0,0 +1,109 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Burst; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using System.Collections; + +namespace Obi +{ + public abstract class BurstConstraintsBatchImpl : IConstraintsBatchImpl + { + protected IBurstConstraintsImpl m_Constraints; + protected Oni.ConstraintType m_ConstraintType; + + protected bool m_Enabled = true; + protected int m_ConstraintCount = 0; + + public Oni.ConstraintType constraintType + { + get { return m_ConstraintType; } + } + + public bool enabled + { + set + { + if (m_Enabled != value) + m_Enabled = value; + } + get { return m_Enabled; } + } + + public IConstraints constraints + { + get { return m_Constraints; } + } + + public ObiSolver solverAbstraction + { + get { return ((BurstSolverImpl)m_Constraints.solver).abstraction; } + } + + public BurstSolverImpl solverImplementation + { + get { return (BurstSolverImpl)m_Constraints.solver; } + } + + protected NativeArray particleIndices; + protected NativeArray lambdas; + + public virtual JobHandle Initialize(JobHandle inputDeps, float substepTime) + { + if (lambdas.IsCreated) + { + // no need for jobs here, memclear is faster and we don't pay scheduling overhead. + unsafe + { + UnsafeUtility.MemClear(NativeArrayUnsafeUtility.GetUnsafeBufferPointerWithoutChecks(lambdas), + lambdas.Length * UnsafeUtility.SizeOf()); + } + } + return inputDeps; + } + + // implemented by concrete constraint subclasses. + public abstract JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps); + public abstract JobHandle Apply(JobHandle inputDeps, float substepTime); + + public virtual void Destroy() + { + // clean resources allocated by the batch, no need for a default implementation. + } + + public void SetConstraintCount(int constraintCount) + { + m_ConstraintCount = constraintCount; + } + public int GetConstraintCount() + { + return m_ConstraintCount; + } + + public static void ApplyPositionDelta(int particleIndex, float sorFactor, ref NativeArray positions, ref NativeArray deltas, ref NativeArray counts) + { + if (counts[particleIndex] > 0) + { + positions[particleIndex] += deltas[particleIndex] * sorFactor / counts[particleIndex]; + deltas[particleIndex] = float4.zero; + counts[particleIndex] = 0; + } + } + + public static void ApplyOrientationDelta(int particleIndex, float sorFactor, ref NativeArray orientations, ref NativeArray deltas, ref NativeArray counts) + { + if (counts[particleIndex] > 0) + { + quaternion q = orientations[particleIndex]; + q.value += deltas[particleIndex].value * sorFactor / counts[particleIndex]; + orientations[particleIndex] = math.normalize(q); + + deltas[particleIndex] = new quaternion(0, 0, 0, 0); + counts[particleIndex] = 0; + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BurstConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BurstConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..165c67449 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BurstConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 09a081eed828341979cf470e2eca6ee0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BurstConstraintsImpl.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BurstConstraintsImpl.cs new file mode 100644 index 000000000..2b502be8b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BurstConstraintsImpl.cs @@ -0,0 +1,145 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + public interface IBurstConstraintsImpl : IConstraints + { + JobHandle Initialize(JobHandle inputDeps, float substepTime); + JobHandle Project(JobHandle inputDeps, float stepTime, float substepTime, int substeps); + void Dispose(); + + IConstraintsBatchImpl CreateConstraintsBatch(); + void RemoveBatch(IConstraintsBatchImpl batch); + } + + public abstract class BurstConstraintsImpl : IBurstConstraintsImpl where T : BurstConstraintsBatchImpl + { + protected BurstSolverImpl m_Solver; + public List batches = new List(); + + protected Oni.ConstraintType m_ConstraintType; + + public Oni.ConstraintType constraintType + { + get { return m_ConstraintType; } + } + + public ISolverImpl solver + { + get { return m_Solver; } + } + + public BurstConstraintsImpl(BurstSolverImpl solver, Oni.ConstraintType constraintType) + { + this.m_ConstraintType = constraintType; + this.m_Solver = solver; + } + + public virtual void Dispose() + { + + } + + public abstract IConstraintsBatchImpl CreateConstraintsBatch(); + + + public abstract void RemoveBatch(IConstraintsBatchImpl batch); + + + public virtual int GetConstraintCount() + { + int count = 0; + if (batches == null) return count; + + foreach (T batch in batches) + if (batch != null) + count += batch.GetConstraintCount(); + + return count; + } + + public JobHandle Initialize(JobHandle inputDeps, float substepTime) + { + // initialize all batches in parallel: + if (batches.Count > 0) + { + NativeArray deps = new NativeArray(batches.Count, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); + for (int i = 0; i < batches.Count; ++i) + deps[i] = batches[i].enabled ? batches[i].Initialize(inputDeps, substepTime) : inputDeps; + + JobHandle result = JobHandle.CombineDependencies(deps); + deps.Dispose(); + + return result; + } + + return inputDeps; + } + + public JobHandle Project(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + UnityEngine.Profiling.Profiler.BeginSample("Project"); + + var parameters = m_Solver.abstraction.GetConstraintParameters(m_ConstraintType); + + switch(parameters.evaluationOrder) + { + case Oni.ConstraintParameters.EvaluationOrder.Sequential: + inputDeps = EvaluateSequential(inputDeps, stepTime, substepTime, substeps); + break; + + case Oni.ConstraintParameters.EvaluationOrder.Parallel: + inputDeps = EvaluateParallel(inputDeps, stepTime, substepTime, substeps); + break; + } + + UnityEngine.Profiling.Profiler.EndSample(); + + return inputDeps; + } + + protected virtual JobHandle EvaluateSequential(JobHandle inputDeps, float stepTime, float substepTime,int substeps) + { + // evaluate and apply all batches: + for (int i = 0; i < batches.Count; ++i) + { + if (batches[i].enabled) + { + inputDeps = batches[i].Evaluate(inputDeps, stepTime, substepTime, substeps); + inputDeps = batches[i].Apply(inputDeps, substepTime); + m_Solver.ScheduleBatchedJobsIfNeeded(); + } + } + + return inputDeps; + } + + protected virtual JobHandle EvaluateParallel(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + // evaluate all batches: + for (int i = 0; i < batches.Count; ++i) + if (batches[i].enabled) + { + inputDeps = batches[i].Evaluate(inputDeps, stepTime, substepTime, substeps); + m_Solver.ScheduleBatchedJobsIfNeeded(); + } + + // then apply them: + for (int i = 0; i < batches.Count; ++i) + if (batches[i].enabled) + { + inputDeps = batches[i].Apply(inputDeps, substepTime); + m_Solver.ScheduleBatchedJobsIfNeeded(); + } + + return inputDeps; + } + + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BurstConstraintsImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BurstConstraintsImpl.cs.meta new file mode 100644 index 000000000..3c1af147a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/BurstConstraintsImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c1b834b5430e4d3790a5979367cd915 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Chain.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Chain.meta new file mode 100644 index 000000000..b92adc0c8 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Chain.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 60c7b29b5d2db47a68bfc9b00847af01 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Chain/BurstChainConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Chain/BurstChainConstraints.cs new file mode 100644 index 000000000..9a4b5c58d --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Chain/BurstChainConstraints.cs @@ -0,0 +1,26 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; + +namespace Obi +{ + public class BurstChainConstraints : BurstConstraintsImpl + { + public BurstChainConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.Chain) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstChainConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstChainConstraintsBatch); + batch.Destroy(); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Chain/BurstChainConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Chain/BurstChainConstraints.cs.meta new file mode 100644 index 000000000..31b28ddea --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Chain/BurstChainConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ea608f10fe5d24cb392ca8dcd960a920 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Chain/BurstChainConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Chain/BurstChainConstraintsBatch.cs new file mode 100644 index 000000000..080e3a65b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Chain/BurstChainConstraintsBatch.cs @@ -0,0 +1,217 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using System.Collections; + +namespace Obi +{ + public class BurstChainConstraintsBatch : BurstConstraintsBatchImpl, IChainConstraintsBatchImpl + { + private NativeArray firstIndex; + private NativeArray numIndices; + private NativeArray restLengths; + + public BurstChainConstraintsBatch(BurstChainConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.Chain; + } + + public void SetChainConstraints(ObiNativeIntList particleIndices, ObiNativeVector2List restLengths, ObiNativeIntList firstIndex, ObiNativeIntList numIndices, int count) + { + this.particleIndices = particleIndices.AsNativeArray(); + this.firstIndex = firstIndex.AsNativeArray(); + this.numIndices = numIndices.AsNativeArray(); + this.restLengths = restLengths.AsNativeArray(); + m_ConstraintCount = count; + } + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + + var projectConstraints = new ChainConstraintsBatchJob() + { + particleIndices = particleIndices, + firstIndex = firstIndex, + numIndices = numIndices, + restLengths = restLengths, + + positions = solverImplementation.positions, + invMasses = solverImplementation.invMasses, + + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts + }; + + return projectConstraints.Schedule(m_ConstraintCount, 4, inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + var applyConstraints = new ApplyChainConstraintsBatchJob() + { + particleIndices = particleIndices, + firstIndex = firstIndex, + numIndices = numIndices, + + positions = solverImplementation.positions, + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + + sorFactor = parameters.SORFactor + }; + + return applyConstraints.Schedule(m_ConstraintCount, 8, inputDeps); + } + + [BurstCompile] + public struct ChainConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public NativeArray firstIndex; + [ReadOnly] public NativeArray numIndices; + [ReadOnly] public NativeArray restLengths; + + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray invMasses; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray counts; + + public void Execute(int c) + { + int numEdges = numIndices[c] - 1; + int first = firstIndex[c]; + float minLength = restLengths[c].y; + float maxLength = restLengths[c].y; + + // (ni:constraint gradient, di:desired lenght) + NativeArray ni = new NativeArray(numEdges, Allocator.Temp); + NativeArray di = new NativeArray(numEdges, Allocator.Temp); + + for (int i = 0; i < numEdges; ++i) + { + int edge = first + i; + + float4 p1 = positions[particleIndices[edge]]; + float4 p2 = positions[particleIndices[edge+1]]; + float4 diff = p1 - p2; + + float distance = math.length(diff); + float correction = 0; + + if (distance >= maxLength) + correction = distance - maxLength; + else if (distance <= minLength) + correction = distance - minLength; + + di[i] = correction; + ni[i] = new float4(diff/(distance + BurstMath.epsilon)); + } + + // calculate ai (subdiagonals), bi (diagonals) and ci (superdiagonals): + NativeArray diagonals = new NativeArray(numEdges, Allocator.Temp); + + for (int i = 0; i < numEdges; ++i) + { + int edge = first + i; + + float w_i_ = invMasses[particleIndices[edge]]; + float w__i = invMasses[particleIndices[edge+1]]; + + float4 ni__ = (i > 0) ? ni[i - 1] : float4.zero; + float4 n_i_ = ni[i]; + float4 n__i = (i < numEdges - 1) ? ni[i + 1] : float4.zero; + + diagonals[i] = new float3( + -w_i_ * math.dot(n_i_, ni__), // ai + w_i_ + w__i, // bi + -w__i * math.dot(n_i_, n__i));// ci + } + + NativeArray sweep = new NativeArray(numEdges, Allocator.Temp); + + // solve step #1, forward sweep: + for (int i = 0; i < numEdges; ++i) + { + int edge = first + i; + + float cip_ = (i > 0) ? sweep[i - 1].x : 0; + float dip_ = (i > 0) ? sweep[i - 1].y : 0; + float den = diagonals[i].y - cip_ * diagonals[i].x; + + if (den != 0) + { + sweep[i] = new float2((diagonals[i].z / den), + (di[i] - dip_ * diagonals[i].x) / den); + } + else + sweep[i] = float2.zero; + } + + // solve step #2, backward sweep: + NativeArray xi = new NativeArray(numEdges, Allocator.Temp); + for (int i = numEdges - 1; i >= 0; --i) + { + int edge = first + i; + + float xi_ = (i < numEdges - 1) ? xi[i + 1] : 0; + xi[i] = sweep[i].y - sweep[i].x * xi_; + } + + // calculate deltas: + for (int i = 0; i < numIndices[c]; ++i) + { + int index = first + i; + + float4 ni__ = (i > 0) ? ni[i - 1] : float4.zero; + float4 n_i_ = (i < numIndices[c] - 1) ? ni[i] : float4.zero; + + float xi_ = (i > 0) ? xi[i - 1] : 0; + float nxi = (i < numIndices[c] - 1) ? xi[i] : 0; + + int p = particleIndices[index]; + deltas[p] -= invMasses[p] * (-ni__ * xi_ + n_i_ * nxi); + counts[p]++; + } + } + } + + [BurstCompile] + public struct ApplyChainConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public NativeArray firstIndex; + [ReadOnly] public NativeArray numIndices; + [ReadOnly] public float sorFactor; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray counts; + + public void Execute(int i) + { + int first = firstIndex[i]; + int last = first + numIndices[i]; + + for (int k = first; k < last; ++k) + { + int p = particleIndices[k]; + if (counts[p] > 0) + { + positions[p] += deltas[p] * sorFactor / counts[p]; + deltas[p] = float4.zero; + counts[p] = 0; + } + } + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Chain/BurstChainConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Chain/BurstChainConstraintsBatch.cs.meta new file mode 100644 index 000000000..fdbcc4aac --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Chain/BurstChainConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 832ac0a67ec764ee6a1e9a69fc1092e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision.meta new file mode 100644 index 000000000..a28d030e1 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0d7d6ac7f5b664d5cb7860b843e47fff +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/ApplyCollisionConstraintsJob.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/ApplyCollisionConstraintsJob.cs new file mode 100644 index 000000000..ccaf624b4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/ApplyCollisionConstraintsJob.cs @@ -0,0 +1,49 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Burst; +using System; +using System.Collections; + +namespace Obi +{ + + [BurstCompile] + public struct ApplyCollisionConstraintsBatchJob : IJob + { + [ReadOnly] public NativeArray contacts; + + [ReadOnly] public NativeArray simplices; + [ReadOnly] public SimplexCounts simplexCounts; + + [NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableParallelForRestriction] public NativeArray counts; + + [NativeDisableParallelForRestriction] public NativeArray orientations; + [NativeDisableParallelForRestriction] public NativeArray orientationDeltas; + [NativeDisableParallelForRestriction] public NativeArray orientationCounts; + + [ReadOnly] public Oni.ConstraintParameters constraintParameters; + + public void Execute() + { + for (int i = 0; i < contacts.Length; ++i) + { + int simplexStart = simplexCounts.GetSimplexStartAndSize(contacts[i].bodyA, out int simplexSize); + + for (int j = 0; j < simplexSize; ++j) + { + int particleIndex = simplices[simplexStart + j]; + BurstConstraintsBatchImpl.ApplyPositionDelta(particleIndex, constraintParameters.SORFactor, ref positions, ref deltas, ref counts); + BurstConstraintsBatchImpl.ApplyOrientationDelta(particleIndex, constraintParameters.SORFactor, ref orientations, ref orientationDeltas, ref orientationCounts); + } + } + } + + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/ApplyCollisionConstraintsJob.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/ApplyCollisionConstraintsJob.cs.meta new file mode 100644 index 000000000..82d43c729 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/ApplyCollisionConstraintsJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f97613844b24a40899f10722bcfc4cf8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderCollisionConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderCollisionConstraints.cs new file mode 100644 index 000000000..e7d0e1a22 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderCollisionConstraints.cs @@ -0,0 +1,33 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; + +namespace Obi +{ + public class BurstColliderCollisionConstraints : BurstConstraintsImpl + { + public BurstColliderCollisionConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.Collision) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstColliderCollisionConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstColliderCollisionConstraintsBatch); + batch.Destroy(); + } + + public override int GetConstraintCount() + { + if (!((BurstSolverImpl)solver).colliderContacts.IsCreated) + return 0; + return ((BurstSolverImpl)solver).colliderContacts.Length; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderCollisionConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderCollisionConstraints.cs.meta new file mode 100644 index 000000000..2df9c312f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderCollisionConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e31847a0e619545c0bc70258b413a42e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderCollisionConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderCollisionConstraintsBatch.cs new file mode 100644 index 000000000..12cd97c1b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderCollisionConstraintsBatch.cs @@ -0,0 +1,330 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using System.Collections; + +namespace Obi +{ + public class BurstColliderCollisionConstraintsBatch : BurstConstraintsBatchImpl, IColliderCollisionConstraintsBatchImpl + { + public BurstColliderCollisionConstraintsBatch(BurstColliderCollisionConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.Collision; + } + + public override JobHandle Initialize(JobHandle inputDeps, float substepTime) + { + var updateContacts = new UpdateContactsJob() + { + prevPositions = solverImplementation.prevPositions, + prevOrientations = solverImplementation.prevOrientations, + velocities = solverImplementation.velocities, + radii = solverImplementation.principalRadii, + invMasses = solverImplementation.invMasses, + invInertiaTensors = solverImplementation.invInertiaTensors, + particleMaterialIndices = solverImplementation.collisionMaterials, + collisionMaterials = ObiColliderWorld.GetInstance().collisionMaterials.AsNativeArray(), + + simplices = solverImplementation.simplices, + simplexCounts = solverImplementation.simplexCounts, + + shapes = ObiColliderWorld.GetInstance().colliderShapes.AsNativeArray(), + transforms = ObiColliderWorld.GetInstance().colliderTransforms.AsNativeArray(), + rigidbodies = ObiColliderWorld.GetInstance().rigidbodies.AsNativeArray(), + rigidbodyLinearDeltas = solverImplementation.abstraction.rigidbodyLinearDeltas.AsNativeArray(), + rigidbodyAngularDeltas = solverImplementation.abstraction.rigidbodyAngularDeltas.AsNativeArray(), + + contacts = ((BurstSolverImpl)constraints.solver).colliderContacts, + inertialFrame = ((BurstSolverImpl)constraints.solver).inertialFrame + }; + return updateContacts.Schedule(((BurstSolverImpl)constraints.solver).colliderContacts.Length, 128, inputDeps); + } + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + var projectConstraints = new CollisionConstraintsBatchJob() + { + positions = solverImplementation.positions, + prevPositions = solverImplementation.prevPositions, + orientations = solverImplementation.orientations, + prevOrientations = solverImplementation.prevOrientations, + invMasses = solverImplementation.invMasses, + radii = solverImplementation.principalRadii, + particleMaterialIndices = solverImplementation.collisionMaterials, + + simplices = solverImplementation.simplices, + simplexCounts = solverImplementation.simplexCounts, + + shapes = ObiColliderWorld.GetInstance().colliderShapes.AsNativeArray(), + transforms = ObiColliderWorld.GetInstance().colliderTransforms.AsNativeArray(), + collisionMaterials = ObiColliderWorld.GetInstance().collisionMaterials.AsNativeArray(), + rigidbodies = ObiColliderWorld.GetInstance().rigidbodies.AsNativeArray(), + rigidbodyLinearDeltas = solverImplementation.abstraction.rigidbodyLinearDeltas.AsNativeArray(), + rigidbodyAngularDeltas = solverImplementation.abstraction.rigidbodyAngularDeltas.AsNativeArray(), + + deltas = solverAbstraction.positionDeltas.AsNativeArray(), + counts = solverAbstraction.positionConstraintCounts.AsNativeArray(), + + contacts = ((BurstSolverImpl)constraints.solver).colliderContacts, + inertialFrame = ((BurstSolverImpl)constraints.solver).inertialFrame, + constraintParameters = parameters, + solverParameters = solverAbstraction.parameters, + substeps = substeps, + stepTime = stepTime, + substepTime = substepTime + }; + return projectConstraints.Schedule(inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + var applyConstraints = new ApplyCollisionConstraintsBatchJob() + { + contacts = ((BurstSolverImpl)constraints.solver).colliderContacts, + + simplices = solverImplementation.simplices, + simplexCounts = solverImplementation.simplexCounts, + + positions = solverImplementation.positions, + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + orientations = solverImplementation.orientations, + orientationDeltas = solverImplementation.orientationDeltas, + orientationCounts = solverImplementation.orientationConstraintCounts, + constraintParameters = parameters + }; + + return applyConstraints.Schedule(inputDeps); + } + + /** + * Updates contact data (such as contact distance) at the beginning of each substep. This is + * necessary because contacts are generalted only once at the beginning of each step, not every substep. + */ + [BurstCompile] + public struct UpdateContactsJob : IJobParallelFor + { + [ReadOnly] public NativeArray prevPositions; + [ReadOnly] public NativeArray prevOrientations; + [ReadOnly] public NativeArray velocities; + [ReadOnly] public NativeArray radii; + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray invInertiaTensors; + + [ReadOnly] public NativeArray particleMaterialIndices; + [ReadOnly] public NativeArray collisionMaterials; + + // simplex arrays: + [ReadOnly] public NativeArray simplices; + [ReadOnly] public SimplexCounts simplexCounts; + + [ReadOnly] public NativeArray shapes; + [ReadOnly] public NativeArray transforms; + [ReadOnly] public NativeArray rigidbodies; + [ReadOnly] public NativeArray rigidbodyLinearDeltas; + [ReadOnly] public NativeArray rigidbodyAngularDeltas; + + public NativeArray contacts; + [ReadOnly] public BurstInertialFrame inertialFrame; + + public void Execute(int i) + { + var contact = contacts[i]; + + int simplexStart = simplexCounts.GetSimplexStartAndSize(contact.bodyA, out int simplexSize); + + // get the material from the first particle in the simplex: + int aMaterialIndex = particleMaterialIndices[simplices[simplexStart]]; + bool rollingContacts = aMaterialIndex >= 0 ? collisionMaterials[aMaterialIndex].rollingContacts > 0 : false; + + float4 relativeVelocity = float4.zero; + float4 simplexPrevPosition = float4.zero; + quaternion simplexPrevOrientation = new quaternion(0, 0, 0, 0); + float simplexInvMass = 0; + float4 simplexInvInertia = float4.zero; + float simplexRadius = 0; + + for (int j = 0; j < simplexSize; ++j) + { + int particleIndex = simplices[simplexStart + j]; + relativeVelocity += velocities[particleIndex] * contact.pointA[j]; + simplexPrevPosition += prevPositions[particleIndex] * contact.pointA[j]; + simplexPrevOrientation.value += prevOrientations[particleIndex].value * contact.pointA[j]; + simplexInvMass += invMasses[particleIndex] * contact.pointA[j]; + simplexInvInertia += invInertiaTensors[particleIndex] * contact.pointA[j]; + simplexRadius += BurstMath.EllipsoidRadius(contact.normal, prevOrientations[particleIndex], radii[particleIndex].xyz) * contact.pointA[j]; + } + + // if there's a rigidbody present, subtract its velocity from the relative velocity: + int rigidbodyIndex = shapes[contact.bodyB].rigidbodyIndex; + if (rigidbodyIndex >= 0) + { + relativeVelocity -= BurstMath.GetRigidbodyVelocityAtPoint(rigidbodyIndex, contact.pointB, rigidbodies, rigidbodyLinearDeltas, rigidbodyAngularDeltas, inertialFrame.frame); + + int bMaterialIndex = shapes[contact.bodyB].materialIndex; + rollingContacts |= bMaterialIndex >= 0 ? collisionMaterials[bMaterialIndex].rollingContacts > 0 : false; + } + + // update contact distance + contact.distance = math.dot(simplexPrevPosition - contact.pointB, contact.normal) - simplexRadius; + + // calculate contact point in A's surface: + float4 contactPoint = contact.pointB + contact.normal * contact.distance; + + // update contact orthonormal basis: + contact.CalculateBasis(relativeVelocity); + + // calculate A's contact mass. + contact.CalculateContactMassesA(simplexInvMass, simplexInvInertia, simplexPrevPosition, simplexPrevOrientation, contactPoint, rollingContacts); + + // calculate B's contact mass. + if (rigidbodyIndex >= 0) + contact.CalculateContactMassesB(rigidbodies[rigidbodyIndex], inertialFrame.frame); + + contacts[i] = contact; + } + } + + [BurstCompile] + public struct CollisionConstraintsBatchJob : IJob + { + [ReadOnly] public NativeArray prevPositions; + [ReadOnly] public NativeArray orientations; + [ReadOnly] public NativeArray prevOrientations; + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray radii; + [ReadOnly] public NativeArray particleMaterialIndices; + + // simplex arrays: + [ReadOnly] public NativeArray simplices; + [ReadOnly] public SimplexCounts simplexCounts; + + [ReadOnly] public NativeArray shapes; + [ReadOnly] public NativeArray transforms; + [ReadOnly] public NativeArray collisionMaterials; + [ReadOnly] public NativeArray rigidbodies; + public NativeArray rigidbodyLinearDeltas; + public NativeArray rigidbodyAngularDeltas; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray counts; + + public NativeArray contacts; + [ReadOnly] public BurstInertialFrame inertialFrame; + [ReadOnly] public Oni.ConstraintParameters constraintParameters; + [ReadOnly] public Oni.SolverParameters solverParameters; + [ReadOnly] public float stepTime; + [ReadOnly] public float substepTime; + [ReadOnly] public int substeps; + + public void Execute() + { + for (int i = 0; i < contacts.Length; ++i) + { + var contact = contacts[i]; + + int simplexStart = simplexCounts.GetSimplexStartAndSize(contact.bodyA, out int simplexSize); + int colliderIndex = contact.bodyB; + + // Skip contacts involving triggers: + if (shapes[colliderIndex].flags > 0) + continue; + + // Get the rigidbody index (might be < 0, in that case there's no rigidbody present) + int rigidbodyIndex = shapes[colliderIndex].rigidbodyIndex; + + // Combine collision materials (use material from first particle in simplex) + BurstCollisionMaterial material = CombineCollisionMaterials(simplices[simplexStart], colliderIndex); + + // Get relative velocity at contact point. + // As we do not consider true ellipses for collision detection, particle contact points are never off-axis. + // So particle angular velocity does not contribute to normal impulses, and we can skip it. + float4 simplexPosition = float4.zero; + float4 simplexPrevPosition = float4.zero; + float simplexRadius = 0; + + for (int j = 0; j < simplexSize; ++j) + { + int particleIndex = simplices[simplexStart + j]; + simplexPosition += positions[particleIndex] * contact.pointA[j]; + simplexPrevPosition += prevPositions[particleIndex] * contact.pointA[j]; + simplexRadius += BurstMath.EllipsoidRadius(contact.normal, orientations[particleIndex], radii[particleIndex].xyz) * contact.pointA[j]; + } + + // project position to the end of the full step: + float4 posA = math.lerp(simplexPrevPosition, simplexPosition, substeps); + posA += -contact.normal * simplexRadius; + + float4 posB = contact.pointB; + + if (rigidbodyIndex >= 0) + posB += BurstMath.GetRigidbodyVelocityAtPoint(rigidbodyIndex, contact.pointB, rigidbodies, rigidbodyLinearDeltas, rigidbodyAngularDeltas, inertialFrame.frame) * stepTime; + + // adhesion: + float lambda = contact.SolveAdhesion(posA, posB, material.stickDistance, material.stickiness, stepTime); + + // depenetration: + lambda += contact.SolvePenetration(posA, posB, solverParameters.maxDepenetration * stepTime); + + // Apply normal impulse to both simplex and rigidbody: + if (math.abs(lambda) > BurstMath.epsilon) + { + float4 delta = lambda * contact.normal * BurstMath.BaryScale(contact.pointA) / substeps; + for (int j = 0; j < simplexSize; ++j) + { + int particleIndex = simplices[simplexStart + j]; + deltas[particleIndex] += delta * invMasses[particleIndex] * contact.pointA[j]; + counts[particleIndex]++; + } + + // Apply position deltas immediately, if using sequential evaluation: + if (constraintParameters.evaluationOrder == Oni.ConstraintParameters.EvaluationOrder.Sequential) + { + for (int j = 0; j < simplexSize; ++j) + { + int particleIndex = simplices[simplexStart + j]; + BurstConstraintsBatchImpl.ApplyPositionDelta(particleIndex, constraintParameters.SORFactor, ref positions, ref deltas, ref counts); + } + } + + if (rigidbodyIndex >= 0) + { + BurstMath.ApplyImpulse(rigidbodyIndex, -lambda / stepTime * contact.normal, contact.pointB, rigidbodies, rigidbodyLinearDeltas, rigidbodyAngularDeltas, inertialFrame.frame); + } + } + + contacts[i] = contact; + } + } + + private BurstCollisionMaterial CombineCollisionMaterials(int entityA, int entityB) + { + // Combine collision materials: + int particleMaterialIndex = particleMaterialIndices[entityA]; + int colliderMaterialIndex = shapes[entityB].materialIndex; + + if (colliderMaterialIndex >= 0 && particleMaterialIndex >= 0) + return BurstCollisionMaterial.CombineWith(collisionMaterials[particleMaterialIndex], collisionMaterials[colliderMaterialIndex]); + else if (particleMaterialIndex >= 0) + return collisionMaterials[particleMaterialIndex]; + else if (colliderMaterialIndex >= 0) + return collisionMaterials[colliderMaterialIndex]; + + return new BurstCollisionMaterial(); + } + } + + + } +} +#endif diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderCollisionConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderCollisionConstraintsBatch.cs.meta new file mode 100644 index 000000000..7f8067c92 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderCollisionConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 273c5561da8534560bb9b9e8d32ae092 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderFrictionConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderFrictionConstraints.cs new file mode 100644 index 000000000..e7be9989a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderFrictionConstraints.cs @@ -0,0 +1,35 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; + +namespace Obi +{ + public class BurstColliderFrictionConstraints : BurstConstraintsImpl + { + public BurstColliderFrictionConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.Friction) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstColliderFrictionConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstColliderFrictionConstraintsBatch); + batch.Destroy(); + } + + public override int GetConstraintCount() + { + if (!((BurstSolverImpl)solver).colliderContacts.IsCreated) + return 0; + return ((BurstSolverImpl)solver).colliderContacts.Length; + } + } +} +#endif + diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderFrictionConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderFrictionConstraints.cs.meta new file mode 100644 index 000000000..08ea00753 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderFrictionConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 00f91403e75564dc6ace566943caa172 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderFrictionConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderFrictionConstraintsBatch.cs new file mode 100644 index 000000000..6505d5302 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderFrictionConstraintsBatch.cs @@ -0,0 +1,284 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; + +namespace Obi +{ + public class BurstColliderFrictionConstraintsBatch : BurstConstraintsBatchImpl, IColliderFrictionConstraintsBatchImpl + { + public BurstColliderFrictionConstraintsBatch(BurstColliderFrictionConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.Friction; + } + + public override JobHandle Initialize(JobHandle inputDeps, float substepTime) + { + return inputDeps; + } + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + if (!((BurstSolverImpl)constraints.solver).colliderContacts.IsCreated) + return inputDeps; + + var projectConstraints = new FrictionConstraintsBatchJob() + { + positions = solverImplementation.positions, + prevPositions = solverImplementation.prevPositions, + orientations = solverImplementation.orientations, + prevOrientations = solverImplementation.prevOrientations, + + invMasses = solverImplementation.invMasses, + invInertiaTensors = solverImplementation.invInertiaTensors, + radii = solverImplementation.principalRadii, + particleMaterialIndices = solverImplementation.collisionMaterials, + + simplices = solverImplementation.simplices, + simplexCounts = solverImplementation.simplexCounts, + + shapes = ObiColliderWorld.GetInstance().colliderShapes.AsNativeArray(), + transforms = ObiColliderWorld.GetInstance().colliderTransforms.AsNativeArray(), + collisionMaterials = ObiColliderWorld.GetInstance().collisionMaterials.AsNativeArray(), + rigidbodies = ObiColliderWorld.GetInstance().rigidbodies.AsNativeArray(), + rigidbodyLinearDeltas = solverImplementation.abstraction.rigidbodyLinearDeltas.AsNativeArray(), + rigidbodyAngularDeltas = solverImplementation.abstraction.rigidbodyAngularDeltas.AsNativeArray(), + + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + orientationDeltas = solverImplementation.orientationDeltas, + orientationCounts = solverImplementation.orientationConstraintCounts, + + contacts = ((BurstSolverImpl)constraints.solver).colliderContacts, + inertialFrame = ((BurstSolverImpl)constraints.solver).inertialFrame, + substeps = substeps, + stepTime = stepTime, + substepTime = substepTime + }; + return projectConstraints.Schedule(inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + if (!((BurstSolverImpl)constraints.solver).colliderContacts.IsCreated) + return inputDeps; + + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + var applyConstraints = new ApplyCollisionConstraintsBatchJob() + { + contacts = ((BurstSolverImpl)constraints.solver).colliderContacts, + + simplices = solverImplementation.simplices, + simplexCounts = solverImplementation.simplexCounts, + + positions = solverImplementation.positions, + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + orientations = solverImplementation.orientations, + orientationDeltas = solverImplementation.orientationDeltas, + orientationCounts = solverImplementation.orientationConstraintCounts, + constraintParameters = parameters + }; + + return applyConstraints.Schedule(inputDeps); + } + + [BurstCompile] + public struct FrictionConstraintsBatchJob : IJob + { + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray prevPositions; + [ReadOnly] public NativeArray orientations; + [ReadOnly] public NativeArray prevOrientations; + + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray invInertiaTensors; + [ReadOnly] public NativeArray radii; + [ReadOnly] public NativeArray particleMaterialIndices; + + // simplex arrays: + [ReadOnly] public NativeArray simplices; + [ReadOnly] public SimplexCounts simplexCounts; + + [ReadOnly] public NativeArray shapes; + [ReadOnly] public NativeArray transforms; + [ReadOnly] public NativeArray collisionMaterials; + [ReadOnly] public NativeArray rigidbodies; + public NativeArray rigidbodyLinearDeltas; + public NativeArray rigidbodyAngularDeltas; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray counts; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray orientationDeltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray orientationCounts; + + public NativeArray contacts; + [ReadOnly] public BurstInertialFrame inertialFrame; + [ReadOnly] public float stepTime; + [ReadOnly] public float substepTime; + [ReadOnly] public int substeps; + + public void Execute() + { + for (int i = 0; i < contacts.Length; ++i) + { + var contact = contacts[i]; + + // Get the indices of the particle and collider involved in this contact: + int simplexStart = simplexCounts.GetSimplexStartAndSize(contact.bodyA, out int simplexSize); + int colliderIndex = contact.bodyB; + + // Skip contacts involving triggers: + if (shapes[colliderIndex].flags > 0) + continue; + + // Get the rigidbody index (might be < 0, in that case there's no rigidbody present) + int rigidbodyIndex = shapes[colliderIndex].rigidbodyIndex; + + // Combine collision materials (use material from first particle in simplex) + BurstCollisionMaterial material = CombineCollisionMaterials(simplices[simplexStart], colliderIndex); + + // Calculate relative velocity: + float4 rA = float4.zero, rB = float4.zero; + + float4 prevPositionA = float4.zero; + float4 linearVelocityA = float4.zero; + float4 angularVelocityA = float4.zero; + float4 invInertiaTensorA = float4.zero; + quaternion orientationA = new quaternion(0, 0, 0, 0); + float simplexRadiusA = 0; + + for (int j = 0; j < simplexSize; ++j) + { + int particleIndex = simplices[simplexStart + j]; + prevPositionA += prevPositions[particleIndex] * contact.pointA[j]; + linearVelocityA += BurstIntegration.DifferentiateLinear(positions[particleIndex],prevPositions[particleIndex], substepTime) * contact.pointA[j]; + angularVelocityA += BurstIntegration.DifferentiateAngular(orientations[particleIndex], prevOrientations[particleIndex], substepTime) * contact.pointA[j]; + invInertiaTensorA += invInertiaTensors[particleIndex] * contact.pointA[j]; + orientationA.value += orientations[particleIndex].value * contact.pointA[j]; + simplexRadiusA += BurstMath.EllipsoidRadius(contact.normal, prevOrientations[particleIndex], radii[particleIndex].xyz) * contact.pointA[j]; + } + + float4 relativeVelocity = linearVelocityA; + + // Add particle angular velocity if rolling contacts are enabled: + if (material.rollingContacts > 0) + { + rA = -contact.normal * simplexRadiusA; + relativeVelocity += new float4(math.cross(angularVelocityA.xyz, rA.xyz), 0); + } + + // Subtract rigidbody velocity: + if (rigidbodyIndex >= 0) + { + // Note: unlike rA, that is expressed in solver space, rB is expressed in world space. + rB = inertialFrame.frame.TransformPoint(contact.pointB) - rigidbodies[rigidbodyIndex].com; + relativeVelocity -= BurstMath.GetRigidbodyVelocityAtPoint(rigidbodyIndex, contact.pointB, rigidbodies, rigidbodyLinearDeltas, rigidbodyAngularDeltas, inertialFrame.frame); + } + + // Determine impulse magnitude: + float2 impulses = contact.SolveFriction(relativeVelocity, material.staticFriction, material.dynamicFriction, stepTime); + + if (math.abs(impulses.x) > BurstMath.epsilon || math.abs(impulses.y) > BurstMath.epsilon) + { + float4 tangentImpulse = impulses.x * contact.tangent; + float4 bitangentImpulse = impulses.y * contact.bitangent; + float4 totalImpulse = tangentImpulse + bitangentImpulse; + + float baryScale = BurstMath.BaryScale(contact.pointA); + for (int j = 0; j < simplexSize; ++j) + { + int particleIndex = simplices[simplexStart + j]; + //(tangentImpulse * contact.tangentInvMassA + bitangentImpulse * contact.bitangentInvMassA) * dt; + deltas[particleIndex] += (tangentImpulse * contact.tangentInvMassA + bitangentImpulse * contact.bitangentInvMassA) * substepTime * contact.pointA[j] * baryScale; + counts[particleIndex]++; + } + + if (rigidbodyIndex >= 0) + { + BurstMath.ApplyImpulse(rigidbodyIndex, -totalImpulse, contact.pointB, rigidbodies, rigidbodyLinearDeltas, rigidbodyAngularDeltas, inertialFrame.frame); + } + + // Rolling contacts: + if (material.rollingContacts > 0) + { + // Calculate angular velocity deltas due to friction impulse: + float4x4 solverInertiaA = BurstMath.TransformInertiaTensor(invInertiaTensorA, orientationA); + + float4 angVelDeltaA = math.mul(solverInertiaA, new float4(math.cross(rA.xyz, totalImpulse.xyz), 0)); + float4 angVelDeltaB = float4.zero; + + // Final angular velocities, after adding the deltas: + angularVelocityA += angVelDeltaA; + float4 angularVelocityB = float4.zero; + + // Calculate weights (inverse masses): + float invMassA = math.length(math.mul(solverInertiaA, math.normalizesafe(angularVelocityA))); + float invMassB = 0; + + if (rigidbodyIndex >= 0) + { + angVelDeltaB = math.mul(-rigidbodies[rigidbodyIndex].inverseInertiaTensor, new float4(math.cross(rB.xyz, totalImpulse.xyz), 0)); + angularVelocityB = rigidbodies[rigidbodyIndex].angularVelocity + angVelDeltaB; + invMassB = math.length(math.mul(rigidbodies[rigidbodyIndex].inverseInertiaTensor, math.normalizesafe(angularVelocityB))); + } + + // Calculate rolling axis and angular velocity deltas: + float4 rollAxis = float4.zero; + float rollingImpulse = contact.SolveRollingFriction(angularVelocityA, angularVelocityB, material.rollingFriction, invMassA, invMassB, ref rollAxis); + angVelDeltaA += rollAxis * rollingImpulse * invMassA; + angVelDeltaB -= rollAxis * rollingImpulse * invMassB; + + // Apply orientation delta to particles: + quaternion orientationDelta = BurstIntegration.AngularVelocityToSpinQuaternion(orientationA, angVelDeltaA, substepTime); + + for (int j = 0; j < simplexSize; ++j) + { + int particleIndex = simplices[simplexStart + j]; + quaternion qA = orientationDeltas[particleIndex]; + qA.value += orientationDelta.value; + orientationDeltas[particleIndex] = qA; + orientationCounts[particleIndex]++; + } + + // Apply angular velocity delta to rigidbody: + if (rigidbodyIndex >= 0) + { + float4 angularDelta = rigidbodyAngularDeltas[rigidbodyIndex]; + angularDelta += angVelDeltaB; + rigidbodyAngularDeltas[rigidbodyIndex] = angularDelta; + } + } + } + + contacts[i] = contact; + } + } + + private BurstCollisionMaterial CombineCollisionMaterials(int entityA, int entityB) + { + // Combine collision materials: + int particleMaterialIndex = particleMaterialIndices[entityA]; + int colliderMaterialIndex = shapes[entityB].materialIndex; + + if (colliderMaterialIndex >= 0 && particleMaterialIndex >= 0) + return BurstCollisionMaterial.CombineWith(collisionMaterials[particleMaterialIndex], collisionMaterials[colliderMaterialIndex]); + else if (particleMaterialIndex >= 0) + return collisionMaterials[particleMaterialIndex]; + else if (colliderMaterialIndex >= 0) + return collisionMaterials[colliderMaterialIndex]; + + return new BurstCollisionMaterial(); + } + + } + + + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderFrictionConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderFrictionConstraintsBatch.cs.meta new file mode 100644 index 000000000..fb3228fd6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ColliderCollision/BurstColliderFrictionConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9abf9b1d2ee1a4d09b965103ae78fe53 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density.meta new file mode 100644 index 000000000..10b4e12b9 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1d2e0de656b27431f9501fe6ffacff67 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/BurstDensityConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/BurstDensityConstraints.cs new file mode 100644 index 000000000..602e3b3f1 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/BurstDensityConstraints.cs @@ -0,0 +1,452 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; +using Unity.Jobs; +using Unity.Burst; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; + +namespace Obi +{ + public class BurstDensityConstraints : BurstConstraintsImpl + { + public NativeList fluidParticles; + + public NativeArray eta; + public NativeArray smoothPositions; + public NativeArray anisotropies; + + public BurstDensityConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.Density) + { + fluidParticles = new NativeList(Allocator.Persistent); + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstDensityConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + public override void Dispose() + { + fluidParticles.Dispose(); + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstDensityConstraintsBatch); + batch.Destroy(); + } + + protected override JobHandle EvaluateSequential(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + return EvaluateParallel(inputDeps, stepTime, substepTime, substeps); + } + + protected override JobHandle EvaluateParallel(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + inputDeps = UpdateInteractions(inputDeps); + + // evaluate all batches as a chain of dependencies: + for (int i = 0; i < batches.Count; ++i) + { + if (batches[i].enabled) + { + inputDeps = batches[i].Evaluate(inputDeps, stepTime, substepTime, substeps); + m_Solver.ScheduleBatchedJobsIfNeeded(); + } + } + + // calculate per-particle lambdas: + inputDeps = CalculateLambdas(inputDeps, substepTime); + + // then apply them: + for (int i = 0; i < batches.Count; ++i) + { + if (batches[i].enabled) + { + inputDeps = batches[i].Apply(inputDeps, substepTime); + m_Solver.ScheduleBatchedJobsIfNeeded(); + } + } + + return inputDeps; + } + + public JobHandle ApplyVelocityCorrections(JobHandle inputDeps, float deltaTime) + { + eta = new NativeArray(((BurstSolverImpl)solver).particleCount, Allocator.TempJob); + + for (int i = 0; i < batches.Count; ++i) + { + if (batches[i].enabled) + { + inputDeps = batches[i].CalculateViscosityAndNormals(inputDeps, deltaTime); + m_Solver.ScheduleBatchedJobsIfNeeded(); + } + } + + for (int i = 0; i < batches.Count; ++i) + { + if (batches[i].enabled) + { + inputDeps = batches[i].CalculateVorticity(inputDeps); + m_Solver.ScheduleBatchedJobsIfNeeded(); + } + } + + inputDeps = ApplyVorticityAndAtmosphere(inputDeps, deltaTime); + m_Solver.ScheduleBatchedJobsIfNeeded(); + + return inputDeps; + } + + public JobHandle CalculateAnisotropyLaplacianSmoothing(JobHandle inputDeps) + { + // if the constraints are deactivated or we need no anisotropy: + if (((BurstSolverImpl)solver).abstraction.parameters.maxAnisotropy <= 1) + return IdentityAnisotropy(inputDeps); + + smoothPositions = new NativeArray(((BurstSolverImpl)solver).particleCount, Allocator.TempJob); + anisotropies = new NativeArray(((BurstSolverImpl)solver).particleCount, Allocator.TempJob); + + for (int i = 0; i < batches.Count; ++i) + { + if (batches[i].enabled) + { + inputDeps = batches[i].AccumulateSmoothPositions(inputDeps); + m_Solver.ScheduleBatchedJobsIfNeeded(); + } + } + + inputDeps = AverageSmoothPositions(inputDeps); + + for (int i = 0; i < batches.Count; ++i) + { + if (batches[i].enabled) + { + inputDeps = batches[i].AccumulateAnisotropy(inputDeps); + m_Solver.ScheduleBatchedJobsIfNeeded(); + } + } + + return AverageAnisotropy(inputDeps); + } + + private JobHandle UpdateInteractions(JobHandle inputDeps) + { + // clear existing fluid data: + var clearData = new ClearFluidDataJob() + { + fluidParticles = fluidParticles.AsDeferredJobArray(), + fluidData = ((BurstSolverImpl)solver).abstraction.fluidData.AsNativeArray(), + }; + + inputDeps = clearData.Schedule(fluidParticles.Length, 64, inputDeps); + + // update fluid interactions: + var updateInteractions = new UpdateInteractionsJob() + { + pairs = m_Solver.fluidInteractions, + positions = m_Solver.positions, + radii = m_Solver.smoothingRadii, + densityKernel = new Poly6Kernel(((BurstSolverImpl)solver).abstraction.parameters.mode == Oni.SolverParameters.Mode.Mode2D), + gradientKernel = new SpikyKernel(((BurstSolverImpl)solver).abstraction.parameters.mode == Oni.SolverParameters.Mode.Mode2D), + }; + + return updateInteractions.Schedule(((BurstSolverImpl)solver).fluidInteractions.Length, 64, inputDeps); + } + + private JobHandle CalculateLambdas(JobHandle inputDeps, float deltaTime) + { + // calculate lagrange multipliers: + var calculateLambdas = new CalculateLambdasJob() + { + fluidParticles = fluidParticles.AsDeferredJobArray(), + invMasses = m_Solver.invMasses, + radii = m_Solver.smoothingRadii, + restDensities = m_Solver.restDensities, + surfaceTension = m_Solver.surfaceTension, + densityKernel = new Poly6Kernel(m_Solver.abstraction.parameters.mode == Oni.SolverParameters.Mode.Mode2D), + gradientKernel = new SpikyKernel(m_Solver.abstraction.parameters.mode == Oni.SolverParameters.Mode.Mode2D), + normals = m_Solver.normals, + vorticity = m_Solver.vorticities, + fluidData = m_Solver.fluidData + }; + + return calculateLambdas.Schedule(fluidParticles.Length,64,inputDeps); + } + + private JobHandle ApplyVorticityAndAtmosphere(JobHandle inputDeps, float deltaTime) + { + // calculate lagrange multipliers: + var conf = new ApplyVorticityConfinementAndAtmosphere() + { + fluidParticles = fluidParticles.AsDeferredJobArray(), + wind = m_Solver.wind, + vorticities = m_Solver.vorticities, + eta = eta, + atmosphericDrag = m_Solver.athmosphericDrag, + atmosphericPressure = m_Solver.athmosphericPressure, + vorticityConfinement = m_Solver.vortConfinement, + restDensities = m_Solver.restDensities, + normals = m_Solver.normals, + fluidData = m_Solver.fluidData, + velocities = m_Solver.velocities, + dt = deltaTime + }; + + return conf.Schedule(fluidParticles.Length, 64, inputDeps); + } + + private JobHandle IdentityAnisotropy(JobHandle inputDeps) + { + var idAnisotropy = new IdentityAnisotropyJob() + { + fluidParticles = fluidParticles.AsDeferredJobArray(), + principalAxes = m_Solver.anisotropies, + radii = m_Solver.principalRadii + }; + + return idAnisotropy.Schedule(fluidParticles.Length, 64, inputDeps); + } + + private JobHandle AverageSmoothPositions(JobHandle inputDeps) + { + var average = new AverageSmoothPositionsJob() + { + fluidParticles = fluidParticles.AsDeferredJobArray(), + renderablePositions = m_Solver.renderablePositions, + smoothPositions = smoothPositions + }; + + return average.Schedule(fluidParticles.Length, 64, inputDeps); + } + + private JobHandle AverageAnisotropy(JobHandle inputDeps) + { + var average = new AverageAnisotropyJob() + { + fluidParticles = fluidParticles.AsDeferredJobArray(), + renderablePositions = m_Solver.renderablePositions, + smoothPositions = smoothPositions, + principalRadii = m_Solver.principalRadii, + anisotropies = anisotropies, + maxAnisotropy = m_Solver.abstraction.parameters.maxAnisotropy, + principalAxes = m_Solver.anisotropies + }; + + return average.Schedule(fluidParticles.Length, 64, inputDeps); + } + + [BurstCompile] + public struct ClearFluidDataJob : IJobParallelFor + { + [ReadOnly] public NativeArray fluidParticles; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray fluidData; + + public void Execute(int i) + { + fluidData[fluidParticles[i]] = float4.zero; + } + } + + [BurstCompile] + public struct UpdateInteractionsJob : IJobParallelFor + { + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray radii; + [ReadOnly] public Poly6Kernel densityKernel; + [ReadOnly] public SpikyKernel gradientKernel; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray pairs; + + [ReadOnly] public BatchData batchData; + + public void Execute(int i) + { + var pair = pairs[i]; + + // calculate normalized gradient vector: + pair.gradient = (positions[pair.particleA] - positions[pair.particleB]); + float distance = math.length(pair.gradient); + pair.gradient /= distance + math.FLT_MIN_NORMAL; + + // calculate and store average density and gradient kernels: + pair.avgKernel = (densityKernel.W(distance, radii[pair.particleA]) + + densityKernel.W(distance, radii[pair.particleB])) * 0.5f; + + pair.avgGradient = (gradientKernel.W(distance, radii[pair.particleA]) + + gradientKernel.W(distance, radii[pair.particleB])) * 0.5f; + + pairs[i] = pair; + } + } + + [BurstCompile] + public struct CalculateLambdasJob : IJobParallelFor + { + [ReadOnly] public NativeArray fluidParticles; + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray radii; + [ReadOnly] public NativeArray restDensities; + [ReadOnly] public NativeArray surfaceTension; + [ReadOnly] public Poly6Kernel densityKernel; + [ReadOnly] public SpikyKernel gradientKernel; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray normals; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray vorticity; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray fluidData; + + public void Execute(int p) + { + int i = fluidParticles[p]; + + normals[i] = float4.zero; + vorticity[i] = float4.zero; + + float4 data = fluidData[i]; + + float grad = gradientKernel.W(0, radii[i]) / invMasses[i] / restDensities[i]; + + // self particle contribution to density and gradient: + data += new float4(densityKernel.W(0, radii[i]), 0, grad, grad * grad + data[2] * data[2]); + + // weight by mass: + data[0] /= invMasses[i]; + + // evaluate density constraint (clamp pressure): + float constraint = math.max(-0.5f * surfaceTension[i], data[0] / restDensities[i] - 1); + + // calculate lambda: + data[1] = -constraint / (invMasses[i] * data[3] + math.FLT_MIN_NORMAL); + + fluidData[i] = data; + } + } + + [BurstCompile] + public struct ApplyVorticityConfinementAndAtmosphere : IJobParallelFor + { + [ReadOnly] public NativeArray fluidParticles; + [ReadOnly] public NativeArray wind; + [ReadOnly] public NativeArray vorticities; + [ReadOnly] public NativeArray atmosphericDrag; + [ReadOnly] public NativeArray atmosphericPressure; + [ReadOnly] public NativeArray vorticityConfinement; + [ReadOnly] public NativeArray restDensities; + [ReadOnly] public NativeArray normals; + [ReadOnly] public NativeArray fluidData; + + [DeallocateOnJobCompletion] [ReadOnly] public NativeArray eta; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray velocities; + + [ReadOnly] public float dt; + + public void Execute(int p) + { + int i = fluidParticles[p]; + + //atmospheric drag: + float4 velocityDiff = velocities[i] - wind[i]; + + // particles near the surface should experience drag: + velocities[i] -= atmosphericDrag[i] * velocityDiff * math.max(0, 1 - fluidData[i][0] / restDensities[i]) * dt; + + // ambient pressure: + velocities[i] += atmosphericPressure[i] * normals[i] * dt; + + // apply vorticity confinement: + velocities[i] += new float4(math.cross(math.normalizesafe(eta[i]).xyz,vorticities[i].xyz), 0) * vorticityConfinement[i] * dt; + } + } + + [BurstCompile] + public struct IdentityAnisotropyJob : IJobParallelFor + { + [ReadOnly] public NativeArray fluidParticles; + [ReadOnly] public NativeArray radii; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray principalAxes; + + public void Execute(int p) + { + int i = fluidParticles[p]; + + // align the principal axes of the particle with the solver axes: + principalAxes[i * 3] = new float4(1,0,0,radii[i].x); + principalAxes[i * 3 + 1] = new float4(0,1,0,radii[i].x); + principalAxes[i * 3 + 2] = new float4(0,0,1,radii[i].x); + } + } + + [BurstCompile] + public struct AverageSmoothPositionsJob : IJobParallelFor + { + [ReadOnly] public NativeArray fluidParticles; + [ReadOnly] public NativeArray renderablePositions; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray smoothPositions; + + public void Execute(int p) + { + int i = fluidParticles[p]; + + if (smoothPositions[i].w > 0) + smoothPositions[i] /= smoothPositions[i].w; + else + smoothPositions[i] = renderablePositions[i]; + } + } + + [BurstCompile] + public struct AverageAnisotropyJob : IJobParallelFor + { + [ReadOnly] public NativeArray fluidParticles; + [ReadOnly] public NativeArray principalRadii; + [ReadOnly] public float maxAnisotropy; + + [ReadOnly] + [DeallocateOnJobCompletion] + public NativeArray smoothPositions; + + [ReadOnly] + [DeallocateOnJobCompletion] + public NativeArray anisotropies; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray renderablePositions; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray principalAxes; + + public void Execute(int p) + { + int i = fluidParticles[p]; + + if (smoothPositions[i].w > 0 && (anisotropies[i].c0[0] + anisotropies[i].c1[1] + anisotropies[i].c2[2]) > 0.01f) + { + float3 singularValues; + float3x3 u; + BurstMath.EigenSolve(anisotropies[i] / smoothPositions[i].w, out singularValues, out u); + + float max = singularValues[0]; + float3 s = math.max(singularValues,new float3(max / maxAnisotropy)) / max * principalRadii[i].x; + + principalAxes[i * 3] = new float4(u.c0, s.x); + principalAxes[i * 3 + 1] = new float4(u.c1, s.y); + principalAxes[i * 3 + 2] = new float4(u.c2, s.z); + } + else + { + float radius = principalRadii[i].x / maxAnisotropy; + principalAxes[i * 3] = new float4(1, 0, 0, radius); + principalAxes[i * 3 + 1] = new float4(0, 1, 0, radius); + principalAxes[i * 3 + 2] = new float4(0, 0, 1, radius); + } + + renderablePositions[i] = smoothPositions[i]; + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/BurstDensityConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/BurstDensityConstraints.cs.meta new file mode 100644 index 000000000..6099508ed --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/BurstDensityConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: df96ac4db14c846ea99a6ebc5771098f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/BurstDensityConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/BurstDensityConstraintsBatch.cs new file mode 100644 index 000000000..c44762137 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/BurstDensityConstraintsBatch.cs @@ -0,0 +1,371 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using System.Collections; + +namespace Obi +{ + public class BurstDensityConstraintsBatch : BurstConstraintsBatchImpl, IDensityConstraintsBatchImpl + { + public BatchData batchData; + + public BurstDensityConstraintsBatch(BurstDensityConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.Density; + } + + public override JobHandle Initialize(JobHandle inputDeps, float substepTime) + { + return inputDeps; + } + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + + // update densities and gradients: + var updateDensities = new UpdateDensitiesJob() + { + pairs = ((BurstSolverImpl)constraints.solver).fluidInteractions, + positions = solverImplementation.positions, + invMasses = solverImplementation.invMasses, + restDensities = solverImplementation.restDensities, + diffusion = solverImplementation.diffusion, + userData = solverImplementation.userData, + fluidData = solverImplementation.fluidData, + batchData = batchData, + dt = substepTime + }; + + int batchCount = batchData.isLast ? batchData.workItemCount : 1; + return updateDensities.Schedule(batchData.workItemCount, batchCount, inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + // update densities and gradients: + var apply = new ApplyDensityConstraintsJob() + { + invMasses = solverImplementation.invMasses, + radii = solverImplementation.smoothingRadii, + restDensities = solverImplementation.restDensities, + surfaceTension = solverImplementation.surfaceTension, + pairs = ((BurstSolverImpl)constraints.solver).fluidInteractions, + densityKernel = new Poly6Kernel(solverAbstraction.parameters.mode == Oni.SolverParameters.Mode.Mode2D), + positions = solverImplementation.positions, + fluidData = solverImplementation.fluidData, + batchData = batchData, + sorFactor = parameters.SORFactor + }; + + int batchCount = batchData.isLast ? batchData.workItemCount : 1; + return apply.Schedule(batchData.workItemCount, batchCount, inputDeps); + } + + public JobHandle CalculateViscosityAndNormals(JobHandle inputDeps, float deltaTime) + { + var viscosity = new NormalsViscosityAndVorticityJob() + { + positions = solverImplementation.positions, + invMasses = solverImplementation.invMasses, + radii = solverImplementation.smoothingRadii, + restDensities = solverImplementation.restDensities, + viscosities = solverImplementation.viscosities, + fluidData = solverImplementation.fluidData, + pairs = ((BurstSolverImpl)constraints.solver).fluidInteractions, + velocities = solverImplementation.velocities, + vorticities = solverImplementation.vorticities, + normals = solverImplementation.normals, + batchData = batchData + }; + + int batchCount = batchData.isLast ? batchData.workItemCount : 1; + return viscosity.Schedule(batchData.workItemCount, batchCount, inputDeps); + } + + public JobHandle CalculateVorticity(JobHandle inputDeps) + { + var eta = new CalculateVorticityEta() + { + invMasses = solverImplementation.invMasses, + restDensities = solverImplementation.restDensities, + pairs = ((BurstSolverImpl)constraints.solver).fluidInteractions, + vorticities = solverImplementation.vorticities, + eta = ((BurstDensityConstraints)this.constraints).eta, + batchData = batchData + }; + + int batchCount = batchData.isLast ? batchData.workItemCount : 1; + return eta.Schedule(batchData.workItemCount, batchCount, inputDeps); + } + + public JobHandle AccumulateSmoothPositions(JobHandle inputDeps) + { + var accumulateSmooth = new AccumulateSmoothPositionsJob() + { + renderablePositions = solverImplementation.renderablePositions, + smoothPositions = ((BurstDensityConstraints)this.constraints).smoothPositions, + radii = solverImplementation.smoothingRadii, + densityKernel = new Poly6Kernel(solverAbstraction.parameters.mode == Oni.SolverParameters.Mode.Mode2D), + pairs = ((BurstSolverImpl)constraints.solver).fluidInteractions, + batchData = batchData + }; + + int batchCount = batchData.isLast ? batchData.workItemCount : 1; + return accumulateSmooth.Schedule(batchData.workItemCount, batchCount, inputDeps); + } + + public JobHandle AccumulateAnisotropy(JobHandle inputDeps) + { + var accumulateAnisotropy = new AccumulateAnisotropyJob() + { + renderablePositions = solverImplementation.renderablePositions, + smoothPositions = ((BurstDensityConstraints)this.constraints).smoothPositions, + anisotropies = ((BurstDensityConstraints)this.constraints).anisotropies, + pairs = ((BurstSolverImpl)constraints.solver).fluidInteractions, + batchData = batchData + }; + + int batchCount = batchData.isLast ? batchData.workItemCount : 1; + return accumulateAnisotropy.Schedule(batchData.workItemCount, batchCount, inputDeps); + } + + [BurstCompile] + public struct UpdateDensitiesJob : IJobParallelFor + { + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray restDensities; + [ReadOnly] public NativeArray diffusion; + [ReadOnly] public NativeArray pairs; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray userData; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray fluidData; + + [ReadOnly] public BatchData batchData; + + [ReadOnly] public float dt; + + public void Execute(int workItemIndex) + { + int start, end; + batchData.GetConstraintRange(workItemIndex, out start, out end); + + for (int i = start; i < end; ++i) + { + var pair = pairs[i]; + + float restVolumeA = 1.0f / invMasses[pair.particleA] / restDensities[pair.particleA]; + float restVolumeB = 1.0f / invMasses[pair.particleB] / restDensities[pair.particleB]; + + float gradA = restVolumeB * pair.avgGradient; + float gradB = restVolumeA * pair.avgGradient; + + float vA = restVolumeB / restVolumeA; + float vB = restVolumeA / restVolumeB; + + // accumulate pbf data (density, gradients): + fluidData[pair.particleA] += new float4(vA * pair.avgKernel, 0, gradA, gradA * gradA); + fluidData[pair.particleB] += new float4(vB * pair.avgKernel, 0, gradB, gradB * gradB); + + // property diffusion: + float diffusionSpeed = (diffusion[pair.particleA] + diffusion[pair.particleB]) * pair.avgKernel * dt; + float4 userDelta = (userData[pair.particleB] - userData[pair.particleA]) * diffusionSpeed; + userData[pair.particleA] += vA * userDelta; + userData[pair.particleB] -= vB * userDelta; + } + } + } + + [BurstCompile] + public struct ApplyDensityConstraintsJob : IJobParallelFor + { + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray radii; + [ReadOnly] public NativeArray restDensities; + [ReadOnly] public NativeArray surfaceTension; + [ReadOnly] public NativeArray pairs; + [ReadOnly] public Poly6Kernel densityKernel; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray fluidData; + + [ReadOnly] public BatchData batchData; + [ReadOnly] public float sorFactor; + + public void Execute(int workItemIndex) + { + int start, end; + batchData.GetConstraintRange(workItemIndex, out start, out end); + + for (int i = start; i < end; ++i) + { + var pair = pairs[i]; + + float restVolumeA = 1.0f / invMasses[pair.particleA] / restDensities[pair.particleA]; + float restVolumeB = 1.0f / invMasses[pair.particleB] / restDensities[pair.particleB]; + + // calculate tensile instability correction factor: + float wAvg = pair.avgKernel / ((densityKernel.W(0, radii[pair.particleA]) + densityKernel.W(0, radii[pair.particleB])) * 0.5f); + float scorrA = -(0.001f + 0.2f * surfaceTension[pair.particleA]) * wAvg / (invMasses[pair.particleA] * fluidData[pair.particleA][3]); + float scorrB = -(0.001f + 0.2f * surfaceTension[pair.particleB]) * wAvg / (invMasses[pair.particleB] * fluidData[pair.particleB][3]); + + // calculate position delta: + float4 delta = pair.gradient * pair.avgGradient * ((fluidData[pair.particleA][1] + scorrA) * restVolumeB + (fluidData[pair.particleB][1] + scorrB) * restVolumeA) * sorFactor; + positions[pair.particleA] += delta * invMasses[pair.particleA]; + positions[pair.particleB] -= delta * invMasses[pair.particleB]; + } + } + } + + [BurstCompile] + public struct NormalsViscosityAndVorticityJob : IJobParallelFor + { + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray radii; + [ReadOnly] public NativeArray restDensities; + [ReadOnly] public NativeArray viscosities; + [ReadOnly] public NativeArray fluidData; + [ReadOnly] public NativeArray pairs; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray velocities; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray vorticities; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray normals; + + [ReadOnly] public BatchData batchData; + + public void Execute(int workItemIndex) + { + int start, end; + batchData.GetConstraintRange(workItemIndex, out start, out end); + + for (int i = start; i < end; ++i) + { + var pair = pairs[i]; + + float restVolumeA = 1.0f / invMasses[pair.particleA] / restDensities[pair.particleA]; + float restVolumeB = 1.0f / invMasses[pair.particleB] / restDensities[pair.particleB]; + + // XSPH viscosity: + float viscosityCoeff = math.min(viscosities[pair.particleA], viscosities[pair.particleB]); + float4 relVelocity = velocities[pair.particleB] - velocities[pair.particleA]; + float4 viscosity = viscosityCoeff * relVelocity * pair.avgKernel; + velocities[pair.particleA] += viscosity * restVolumeB; + velocities[pair.particleB] -= viscosity * restVolumeA; + + // calculate vorticity: + float4 vgrad = pair.gradient * pair.avgGradient; + float4 vorticity = new float4(math.cross(relVelocity.xyz,vgrad.xyz),0); + vorticities[pair.particleA] += vorticity * restVolumeB; + vorticities[pair.particleB] += vorticity * restVolumeA; + + // calculate color field normal: + float radius = (radii[pair.particleA] + radii[pair.particleB]) * 0.5f; + normals[pair.particleA] += vgrad * radius / invMasses[pair.particleB] / fluidData[pair.particleB][0]; + normals[pair.particleB] -= vgrad * radius / invMasses[pair.particleA] / fluidData[pair.particleA][0]; + } + } + } + + [BurstCompile] + public struct CalculateVorticityEta : IJobParallelFor + { + [ReadOnly] public NativeArray vorticities; + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray restDensities; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray pairs; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray eta; + + [ReadOnly] public BatchData batchData; + + public void Execute(int workItemIndex) + { + int start, end; + batchData.GetConstraintRange(workItemIndex, out start, out end); + + for (int i = start; i < end; ++i) + { + var pair = pairs[i]; + + float4 vgrad = pair.gradient * pair.avgGradient; + eta[pair.particleA] += math.length(vorticities[pair.particleA]) * vgrad / invMasses[pair.particleB] / restDensities[pair.particleB]; + eta[pair.particleB] -= math.length(vorticities[pair.particleB]) * vgrad / invMasses[pair.particleA] / restDensities[pair.particleA]; + } + } + } + + [BurstCompile] + public struct AccumulateSmoothPositionsJob : IJobParallelFor + { + [ReadOnly] public NativeArray renderablePositions; + [ReadOnly] public NativeArray radii; + [ReadOnly] public Poly6Kernel densityKernel; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray smoothPositions; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray pairs; + + [ReadOnly] public BatchData batchData; + + public void Execute(int workItemIndex) + { + int start, end; + batchData.GetConstraintRange(workItemIndex, out start, out end); + + for (int i = start; i < end; ++i) + { + var pair = pairs[i]; + + float4 gradient = (renderablePositions[pair.particleA] - renderablePositions[pair.particleB]); + float distance = math.length(gradient); + + pair.avgKernel = (densityKernel.W(distance, radii[pair.particleA]) + + densityKernel.W(distance, radii[pair.particleB])) * 0.5f; + + smoothPositions[pair.particleA] += new float4(renderablePositions[pair.particleB].xyz,1) * pair.avgKernel; + smoothPositions[pair.particleB] += new float4(renderablePositions[pair.particleA].xyz,1) * pair.avgKernel; + + pairs[i] = pair; + } + } + } + + [BurstCompile] + public struct AccumulateAnisotropyJob : IJobParallelFor + { + [ReadOnly] public NativeArray renderablePositions; + [ReadOnly] public NativeArray smoothPositions; + [ReadOnly] public NativeArray pairs; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray anisotropies; + + [ReadOnly] public BatchData batchData; + + public void Execute(int workItemIndex) + { + int start, end; + batchData.GetConstraintRange(workItemIndex, out start, out end); + + for (int i = start; i < end; ++i) + { + var pair = pairs[i]; + + float4 distanceA = renderablePositions[pair.particleB] - smoothPositions[pair.particleA]; + float4 distanceB = renderablePositions[pair.particleA] - smoothPositions[pair.particleB]; + + anisotropies[pair.particleA] += BurstMath.multrnsp(distanceA,distanceA) * pair.avgKernel; + anisotropies[pair.particleB] += BurstMath.multrnsp(distanceB,distanceB) * pair.avgKernel; + } + } + } + + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/BurstDensityConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/BurstDensityConstraintsBatch.cs.meta new file mode 100644 index 000000000..f1d82202a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/BurstDensityConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8292e6ef6129f47abaee4fb2cb49055e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/Kernels.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/Kernels.meta new file mode 100644 index 000000000..4f0f6fa9d --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/Kernels.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5a128a7c745c84794a944362f49011fc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/Kernels/Poly6Kernel.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/Kernels/Poly6Kernel.cs new file mode 100644 index 000000000..412f3b189 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/Kernels/Poly6Kernel.cs @@ -0,0 +1,36 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; +using Unity.Mathematics; + +namespace Obi +{ + public struct Poly6Kernel + { + public float norm; + public bool norm2D; + + public Poly6Kernel(bool norm2D) + { + this.norm2D = norm2D; + if (norm2D) + norm = 4.0f / math.PI; + else + norm = 315.0f / (64.0f * math.PI); + } + + public float W(float r, float h) + { + float h2 = h * h; + float h4 = h2 * h2; + float h8 = h4 * h4; + + float rl = math.min(r, h); + float hr = h2 - rl * rl; + + if (norm2D) + return norm / h8 * hr * hr * hr; + return norm / (h8 * h) * hr * hr * hr; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/Kernels/Poly6Kernel.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/Kernels/Poly6Kernel.cs.meta new file mode 100644 index 000000000..ccf533149 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/Kernels/Poly6Kernel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7a3990134524143ac852b488554f6d4e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/Kernels/SpikyKernel.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/Kernels/SpikyKernel.cs new file mode 100644 index 000000000..113fbc6b4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/Kernels/SpikyKernel.cs @@ -0,0 +1,35 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; +using Unity.Mathematics; + +namespace Obi +{ + public struct SpikyKernel + { + public float norm; + public bool norm2D; + + public SpikyKernel(bool norm2D) + { + this.norm2D = norm2D; + if (norm2D) + norm = -30.0f / math.PI; + else + norm = -45.0f / math.PI; + } + + public float W(float r, float h) + { + float h2 = h * h; + float h4 = h2 * h2; + + float rl = math.min(r, h); + float hr = h - rl; + + if (norm2D) + return norm / (h4 * h) * hr * hr; + return norm / (h4 * h2) * hr * hr; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/Kernels/SpikyKernel.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/Kernels/SpikyKernel.cs.meta new file mode 100644 index 000000000..d80dd5a91 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Density/Kernels/SpikyKernel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a407989bfa0664e9ab75773d1808f549 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Distance.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Distance.meta new file mode 100644 index 000000000..4f562f2dc --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Distance.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 725436c3a327442cd8b06889111f9b8f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Distance/BurstDistanceConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Distance/BurstDistanceConstraints.cs new file mode 100644 index 000000000..66ed256ba --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Distance/BurstDistanceConstraints.cs @@ -0,0 +1,26 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; + +namespace Obi +{ + public class BurstDistanceConstraints : BurstConstraintsImpl + { + public BurstDistanceConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.Distance) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstDistanceConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstDistanceConstraintsBatch); + batch.Destroy(); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Distance/BurstDistanceConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Distance/BurstDistanceConstraints.cs.meta new file mode 100644 index 000000000..578334695 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Distance/BurstDistanceConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: af06abf9c29a04274842dbcb65a2a753 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Distance/BurstDistanceConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Distance/BurstDistanceConstraintsBatch.cs new file mode 100644 index 000000000..5bdf72c08 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Distance/BurstDistanceConstraintsBatch.cs @@ -0,0 +1,146 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using System.Collections; + +namespace Obi +{ + public class BurstDistanceConstraintsBatch : BurstConstraintsBatchImpl, IDistanceConstraintsBatchImpl + { + private NativeArray restLengths; + private NativeArray stiffnesses; + + DistanceConstraintsBatchJob projectConstraints; + ApplyDistanceConstraintsBatchJob applyConstraints; + + public BurstDistanceConstraintsBatch(BurstDistanceConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.Distance; + } + + public void SetDistanceConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList restLengths, ObiNativeVector2List stiffnesses, ObiNativeFloatList lambdas, int count) + { + this.particleIndices = particleIndices.AsNativeArray(); + this.restLengths = restLengths.AsNativeArray(); + this.stiffnesses = stiffnesses.AsNativeArray(); + this.lambdas = lambdas.AsNativeArray(); + m_ConstraintCount = count; + + projectConstraints.particleIndices = this.particleIndices; + projectConstraints.restLengths = this.restLengths; + projectConstraints.stiffnesses = this.stiffnesses; + projectConstraints.lambdas = this.lambdas; + + applyConstraints.particleIndices = this.particleIndices; + } + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + projectConstraints.positions = solverImplementation.positions; + projectConstraints.invMasses = solverImplementation.invMasses; + projectConstraints.deltas = solverImplementation.positionDeltas; + projectConstraints.counts = solverImplementation.positionConstraintCounts; + projectConstraints.deltaTimeSqr = substepTime * substepTime; + + return projectConstraints.Schedule(m_ConstraintCount, 32, inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + applyConstraints.positions = solverImplementation.positions; + applyConstraints.deltas = solverImplementation.positionDeltas; + applyConstraints.counts = solverImplementation.positionConstraintCounts; + applyConstraints.sorFactor = parameters.SORFactor; + + return applyConstraints.Schedule(m_ConstraintCount, 64, inputDeps); + } + + [BurstCompile] + public struct DistanceConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public NativeArray restLengths; + [ReadOnly] public NativeArray stiffnesses; + public NativeArray lambdas; + + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray invMasses; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray counts; + + [ReadOnly] public float deltaTimeSqr; + + public void Execute(int i) + { + int p1 = particleIndices[i * 2]; + int p2 = particleIndices[i * 2 + 1]; + + float w1 = invMasses[p1]; + float w2 = invMasses[p2]; + + // calculate time adjusted compliance + float compliance = stiffnesses[i].x / deltaTimeSqr; + + // calculate position and lambda deltas: + float4 distance = positions[p1] - positions[p2]; + float d = math.length(distance); + + // calculate constraint value: + float constraint = d - restLengths[i]; + constraint -= math.max(math.min(constraint, 0), -stiffnesses[i].y); + + // calculate lambda and position deltas: + float dlambda = (-constraint - compliance * lambdas[i]) / (w1 + w2 + compliance + BurstMath.epsilon); + float4 delta = dlambda * distance / (d + BurstMath.epsilon); + + lambdas[i] += dlambda; + + deltas[p1] += delta * w1; + deltas[p2] -= delta * w2; + + counts[p1]++; + counts[p2]++; + } + } + + [BurstCompile] + public struct ApplyDistanceConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public float sorFactor; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray counts; + + public void Execute(int i) + { + int p1 = particleIndices[i * 2]; + int p2 = particleIndices[i * 2 + 1]; + + if (counts[p1] > 0) + { + positions[p1] += deltas[p1] * sorFactor / counts[p1]; + deltas[p1] = float4.zero; + counts[p1] = 0; + } + + if (counts[p2] > 0) + { + positions[p2] += deltas[p2] * sorFactor / counts[p2]; + deltas[p2] = float4.zero; + counts[p2] = 0; + } + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Distance/BurstDistanceConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Distance/BurstDistanceConstraintsBatch.cs.meta new file mode 100644 index 000000000..5c4e478c6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Distance/BurstDistanceConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 31ee5bf24da6847f0b93a69dbbdecf25 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision.meta new file mode 100644 index 000000000..18a7fb3c1 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 66103ca5acc86407cab9aa94d1e6d1fd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/ApplyBatchedCollisionConstraintsBatchJob.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/ApplyBatchedCollisionConstraintsBatchJob.cs new file mode 100644 index 000000000..170e0840b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/ApplyBatchedCollisionConstraintsBatchJob.cs @@ -0,0 +1,62 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Burst; +using System; +using System.Collections; + +namespace Obi +{ + + [BurstCompile] + public struct ApplyBatchedCollisionConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray contacts; + + [ReadOnly] public NativeArray simplices; + [ReadOnly] public SimplexCounts simplexCounts; + + [NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableParallelForRestriction] public NativeArray counts; + + [NativeDisableParallelForRestriction] public NativeArray orientations; + [NativeDisableParallelForRestriction] public NativeArray orientationDeltas; + [NativeDisableParallelForRestriction] public NativeArray orientationCounts; + + [ReadOnly] public Oni.ConstraintParameters constraintParameters; + [ReadOnly] public BatchData batchData; + + public void Execute(int workItemIndex) + { + int start, end; + batchData.GetConstraintRange(workItemIndex, out start, out end); + + for (int i = start; i < end; ++i) + { + int simplexStartA = simplexCounts.GetSimplexStartAndSize(contacts[i].bodyA, out int simplexSizeA); + int simplexStartB = simplexCounts.GetSimplexStartAndSize(contacts[i].bodyB, out int simplexSizeB); + + for (int j = 0; j < simplexSizeA; ++j) + { + int particleIndex = simplices[simplexStartA + j]; + BurstConstraintsBatchImpl.ApplyPositionDelta(particleIndex, constraintParameters.SORFactor, ref positions, ref deltas, ref counts); + BurstConstraintsBatchImpl.ApplyOrientationDelta(particleIndex, constraintParameters.SORFactor, ref orientations, ref orientationDeltas, ref orientationCounts); + } + + for (int j = 0; j < simplexSizeB; ++j) + { + int particleIndex = simplices[simplexStartB + j]; + BurstConstraintsBatchImpl.ApplyPositionDelta(particleIndex, constraintParameters.SORFactor, ref positions, ref deltas, ref counts); + BurstConstraintsBatchImpl.ApplyOrientationDelta(particleIndex, constraintParameters.SORFactor, ref orientations, ref orientationDeltas, ref orientationCounts); + } + + } + + } + + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/ApplyBatchedCollisionConstraintsBatchJob.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/ApplyBatchedCollisionConstraintsBatchJob.cs.meta new file mode 100644 index 000000000..5b2e6ce64 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/ApplyBatchedCollisionConstraintsBatchJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 96623cff9b30e4504a4a6dbfe3d19ace +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleCollisionConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleCollisionConstraints.cs new file mode 100644 index 000000000..02bb86246 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleCollisionConstraints.cs @@ -0,0 +1,34 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; +using Unity.Jobs; + +namespace Obi +{ + public class BurstParticleCollisionConstraints : BurstConstraintsImpl + { + public BurstParticleCollisionConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.ParticleCollision) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstParticleCollisionConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstParticleCollisionConstraintsBatch); + batch.Destroy(); + } + + public override int GetConstraintCount() + { + if (!((BurstSolverImpl)solver).particleContacts.IsCreated) + return 0; + return ((BurstSolverImpl)solver).particleContacts.Length; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleCollisionConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleCollisionConstraints.cs.meta new file mode 100644 index 000000000..41c44704e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleCollisionConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ef36a05943714c1db8f9ee0b28e9c51 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleCollisionConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleCollisionConstraintsBatch.cs new file mode 100644 index 000000000..735144267 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleCollisionConstraintsBatch.cs @@ -0,0 +1,335 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using System.Collections; + +namespace Obi +{ + public class BurstParticleCollisionConstraintsBatch : BurstConstraintsBatchImpl, IParticleCollisionConstraintsBatchImpl + { + public BatchData batchData; + + public BurstParticleCollisionConstraintsBatch(BurstParticleCollisionConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.ParticleCollision; + } + + public BurstParticleCollisionConstraintsBatch(BatchData batchData) : base() + { + this.batchData = batchData; + } + + public override JobHandle Initialize(JobHandle inputDeps, float substepTime) + { + var updateContacts = new UpdateParticleContactsJob() + { + prevPositions = solverImplementation.prevPositions, + prevOrientations = solverImplementation.prevOrientations, + velocities = solverImplementation.velocities, + radii = solverImplementation.principalRadii, + invMasses = solverImplementation.invMasses, + invInertiaTensors = solverImplementation.invInertiaTensors, + + simplices = solverImplementation.simplices, + simplexCounts = solverImplementation.simplexCounts, + + particleMaterialIndices = solverImplementation.collisionMaterials, + collisionMaterials = ObiColliderWorld.GetInstance().collisionMaterials.AsNativeArray(), + + contacts = ((BurstSolverImpl)constraints.solver).particleContacts, + batchData = batchData + }; + + int batchCount = batchData.isLast ? batchData.workItemCount : 1; + return updateContacts.Schedule(batchData.workItemCount, batchCount, inputDeps); + } + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + var projectConstraints = new ParticleCollisionConstraintsBatchJob() + { + positions = solverImplementation.positions, + orientations = solverImplementation.orientations, + invMasses = solverImplementation.invMasses, + radii = solverImplementation.principalRadii, + particleMaterialIndices = solverImplementation.collisionMaterials, + collisionMaterials = ObiColliderWorld.GetInstance().collisionMaterials.AsNativeArray(), + + simplices = solverImplementation.simplices, + simplexCounts = solverImplementation.simplexCounts, + + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + contacts = ((BurstSolverImpl)constraints.solver).particleContacts, + batchData = batchData, + + constraintParameters = parameters, + solverParameters = solverImplementation.abstraction.parameters, + gravity = new float4(solverImplementation.abstraction.parameters.gravity, 0), + substepTime = substepTime, + }; + + int batchCount = batchData.isLast ? batchData.workItemCount : 1; + return projectConstraints.Schedule(batchData.workItemCount, batchCount, inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + var applyConstraints = new ApplyBatchedCollisionConstraintsBatchJob() + { + contacts = ((BurstSolverImpl)constraints.solver).particleContacts, + + simplices = solverImplementation.simplices, + simplexCounts = solverImplementation.simplexCounts, + + positions = solverImplementation.positions, + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + orientations = solverImplementation.orientations, + orientationDeltas = solverImplementation.orientationDeltas, + orientationCounts = solverImplementation.orientationConstraintCounts, + batchData = batchData, + constraintParameters = parameters, + }; + + int batchCount = batchData.isLast ? batchData.workItemCount : 1; + return applyConstraints.Schedule(batchData.workItemCount, batchCount, inputDeps); + } + + /** + * Updates contact data (contact distance and frame) at the beginning of each substep. This is + * necessary because contacts are generated only once at the beginning of each step, not every substep. + */ + [BurstCompile] + public struct UpdateParticleContactsJob : IJobParallelFor + { + [ReadOnly] public NativeArray prevPositions; + [ReadOnly] public NativeArray prevOrientations; + [ReadOnly] public NativeArray velocities; + [ReadOnly] public NativeArray radii; + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray invInertiaTensors; + + [ReadOnly] public NativeArray particleMaterialIndices; + [ReadOnly] public NativeArray collisionMaterials; + + // simplex arrays: + [ReadOnly] public NativeArray simplices; + [ReadOnly] public SimplexCounts simplexCounts; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray contacts; + + [ReadOnly] public BatchData batchData; + + public void Execute(int workItemIndex) + { + int start, end; + batchData.GetConstraintRange(workItemIndex, out start, out end); + + for (int i = start; i < end; ++i) + { + var contact = contacts[i]; + + int simplexStartA = simplexCounts.GetSimplexStartAndSize(contact.bodyA, out int simplexSizeA); + int simplexStartB = simplexCounts.GetSimplexStartAndSize(contact.bodyB, out int simplexSizeB); + + float4 simplexVelocityA = float4.zero; + float4 simplexPrevPositionA = float4.zero; + quaternion simplexPrevOrientationA = new quaternion(0, 0, 0, 0); + float simplexRadiusA = 0; + float simplexInvMassA = 0; + float4 simplexInvInertiaA = float4.zero; + + float4 simplexVelocityB = float4.zero; + float4 simplexPrevPositionB = float4.zero; + quaternion simplexPrevOrientationB = new quaternion(0, 0, 0, 0); + float simplexRadiusB = 0; + float simplexInvMassB = 0; + float4 simplexInvInertiaB = float4.zero; + + for (int j = 0; j < simplexSizeA; ++j) + { + int particleIndex = simplices[simplexStartA + j]; + simplexVelocityA += velocities[particleIndex] * contact.pointA[j]; + simplexPrevPositionA += prevPositions[particleIndex] * contact.pointA[j]; + simplexPrevOrientationA.value += prevOrientations[particleIndex].value * contact.pointA[j]; + simplexInvMassA += invMasses[particleIndex] * contact.pointA[j]; + simplexInvInertiaA += invInertiaTensors[particleIndex] * contact.pointA[j]; + simplexRadiusA += BurstMath.EllipsoidRadius(contact.normal, prevOrientations[particleIndex], radii[particleIndex].xyz) * contact.pointA[j]; + } + + for (int j = 0; j < simplexSizeB; ++j) + { + int particleIndex = simplices[simplexStartB + j]; + simplexVelocityB += velocities[particleIndex] * contact.pointB[j]; + simplexPrevPositionB += prevPositions[particleIndex] * contact.pointB[j]; + simplexPrevOrientationB.value += prevOrientations[particleIndex].value * contact.pointB[j]; + simplexInvMassB += invMasses[particleIndex] * contact.pointB[j]; + simplexInvInertiaB += invInertiaTensors[particleIndex] * contact.pointB[j]; + simplexRadiusB += BurstMath.EllipsoidRadius(contact.normal, prevOrientations[particleIndex], radii[particleIndex].xyz) * contact.pointB[j]; + } + + // update contact distance + float dAB = math.dot(simplexPrevPositionA - simplexPrevPositionB, contact.normal); + contact.distance = dAB - (simplexRadiusA + simplexRadiusB); + + // calculate contact points: + float4 contactPointA = simplexPrevPositionB + contact.normal * (contact.distance + simplexRadiusB); + float4 contactPointB = simplexPrevPositionA - contact.normal * (contact.distance + simplexRadiusA); + + // update contact basis: + contact.CalculateBasis(simplexVelocityA - simplexVelocityB); + + // update contact masses: + int aMaterialIndex = particleMaterialIndices[simplices[simplexStartA]]; + int bMaterialIndex = particleMaterialIndices[simplices[simplexStartB]]; + bool rollingContacts = (aMaterialIndex >= 0 ? collisionMaterials[aMaterialIndex].rollingContacts > 0 : false) | + (bMaterialIndex >= 0 ? collisionMaterials[bMaterialIndex].rollingContacts > 0 : false); + + contact.CalculateContactMassesA(simplexInvMassA, simplexInvInertiaA, simplexPrevPositionA, simplexPrevOrientationA, contactPointA, rollingContacts); + contact.CalculateContactMassesB(simplexInvMassB, simplexInvInertiaB, simplexPrevPositionB, simplexPrevOrientationB, contactPointB, rollingContacts); + + contacts[i] = contact; + } + } + } + + [BurstCompile] + public struct ParticleCollisionConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray orientations; + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray radii; + [ReadOnly] public NativeArray particleMaterialIndices; + [ReadOnly] public NativeArray collisionMaterials; + + // simplex arrays: + [ReadOnly] public NativeArray simplices; + [ReadOnly] public SimplexCounts simplexCounts; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray counts; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray contacts; + + [ReadOnly] public Oni.ConstraintParameters constraintParameters; + [ReadOnly] public Oni.SolverParameters solverParameters; + [ReadOnly] public float4 gravity; + [ReadOnly] public float substepTime; + + [ReadOnly] public BatchData batchData; + + public void Execute(int workItemIndex) + { + int start, end; + batchData.GetConstraintRange(workItemIndex, out start, out end); + + for (int i = start; i < end; ++i) + { + var contact = contacts[i]; + + int simplexStartA = simplexCounts.GetSimplexStartAndSize(contact.bodyA, out int simplexSizeA); + int simplexStartB = simplexCounts.GetSimplexStartAndSize(contact.bodyB, out int simplexSizeB); + + + // Combine collision materials: + BurstCollisionMaterial material = CombineCollisionMaterials(simplices[simplexStartA], simplices[simplexStartB]); + + float4 simplexPositionA = float4.zero, simplexPositionB = float4.zero; + float simplexRadiusA = 0, simplexRadiusB = 0; + + for (int j = 0; j < simplexSizeA; ++j) + { + int particleIndex = simplices[simplexStartA + j]; + simplexPositionA += positions[particleIndex] * contact.pointA[j]; + simplexRadiusA += BurstMath.EllipsoidRadius(contact.normal, orientations[particleIndex], radii[particleIndex].xyz) * contact.pointA[j]; + } + for (int j = 0; j < simplexSizeB; ++j) + { + int particleIndex = simplices[simplexStartB + j]; + simplexPositionB += positions[particleIndex] * contact.pointB[j]; + simplexRadiusB += BurstMath.EllipsoidRadius(contact.normal, orientations[particleIndex], radii[particleIndex].xyz) * contact.pointA[j]; + } + + float4 posA = simplexPositionA - contact.normal * simplexRadiusA; + float4 posB = simplexPositionB + contact.normal * simplexRadiusB; + + // adhesion: + float lambda = contact.SolveAdhesion(posA, posB, material.stickDistance, material.stickiness, substepTime); + + // depenetration: + lambda += contact.SolvePenetration(posA, posB, solverParameters.maxDepenetration * substepTime); + + // Apply normal impulse to both particles (w/ shock propagation): + if (math.abs(lambda) > BurstMath.epsilon) + { + float shock = solverParameters.shockPropagation * math.dot(contact.normal, math.normalizesafe(gravity)); + float4 delta = lambda * contact.normal; + + float baryScale = BurstMath.BaryScale(contact.pointA); + for (int j = 0; j < simplexSizeA; ++j) + { + int particleIndex = simplices[simplexStartA + j]; + deltas[particleIndex] += delta * invMasses[particleIndex] * contact.pointA[j] * baryScale * (1 - shock); + counts[particleIndex]++; + } + + baryScale = BurstMath.BaryScale(contact.pointB); + for (int j = 0; j < simplexSizeB; ++j) + { + int particleIndex = simplices[simplexStartB + j]; + deltas[particleIndex] -= delta * invMasses[particleIndex] * contact.pointB[j] * baryScale * (1 + shock); + counts[particleIndex]++; + } + } + + // Apply position deltas immediately, if using sequential evaluation: + if (constraintParameters.evaluationOrder == Oni.ConstraintParameters.EvaluationOrder.Sequential) + { + for (int j = 0; j < simplexSizeA; ++j) + { + int particleIndex = simplices[simplexStartA + j]; + BurstConstraintsBatchImpl.ApplyPositionDelta(particleIndex, constraintParameters.SORFactor, ref positions, ref deltas, ref counts); + } + + for (int j = 0; j < simplexSizeB; ++j) + { + int particleIndex = simplices[simplexStartB + j]; + BurstConstraintsBatchImpl.ApplyPositionDelta(particleIndex, constraintParameters.SORFactor, ref positions, ref deltas, ref counts); + } + } + + contacts[i] = contact; + } + } + + private BurstCollisionMaterial CombineCollisionMaterials(int entityA, int entityB) + { + // Combine collision materials: + int aMaterialIndex = particleMaterialIndices[entityA]; + int bMaterialIndex = particleMaterialIndices[entityB]; + + if (aMaterialIndex >= 0 && bMaterialIndex >= 0) + return BurstCollisionMaterial.CombineWith(collisionMaterials[aMaterialIndex], collisionMaterials[bMaterialIndex]); + else if (aMaterialIndex >= 0) + return collisionMaterials[aMaterialIndex]; + else if (bMaterialIndex >= 0) + return collisionMaterials[bMaterialIndex]; + + return new BurstCollisionMaterial(); + } + } + + + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleCollisionConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleCollisionConstraintsBatch.cs.meta new file mode 100644 index 000000000..18a62f383 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleCollisionConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 61f5c3e93290646948b251d617f01c8d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleFrictionConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleFrictionConstraints.cs new file mode 100644 index 000000000..3e9974dde --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleFrictionConstraints.cs @@ -0,0 +1,33 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; + +namespace Obi +{ + public class BurstParticleFrictionConstraints : BurstConstraintsImpl + { + public BurstParticleFrictionConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.ParticleFriction) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstParticleFrictionConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstParticleFrictionConstraintsBatch); + batch.Destroy(); + } + + public override int GetConstraintCount() + { + if (!((BurstSolverImpl)solver).particleContacts.IsCreated) + return 0; + return ((BurstSolverImpl)solver).particleContacts.Length; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleFrictionConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleFrictionConstraints.cs.meta new file mode 100644 index 000000000..b28ae4e1c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleFrictionConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 63dade0c384ee4c1398ddf4d60038764 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleFrictionConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleFrictionConstraintsBatch.cs new file mode 100644 index 000000000..c96cfbd21 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleFrictionConstraintsBatch.cs @@ -0,0 +1,288 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using System.Collections; + +namespace Obi +{ + public class BurstParticleFrictionConstraintsBatch : BurstConstraintsBatchImpl, IParticleFrictionConstraintsBatchImpl + { + public BatchData batchData; + + public BurstParticleFrictionConstraintsBatch(BurstParticleFrictionConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.ParticleFriction; + } + + public BurstParticleFrictionConstraintsBatch(BatchData batchData) : base() + { + this.batchData = batchData; + } + + public override JobHandle Initialize(JobHandle inputDeps, float substepTime) + { + return inputDeps; + } + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + if (!((BurstSolverImpl)constraints.solver).particleContacts.IsCreated) + return inputDeps; + + var projectConstraints = new ParticleFrictionConstraintsBatchJob() + { + positions = solverImplementation.positions, + prevPositions = solverImplementation.prevPositions, + orientations = solverImplementation.orientations, + prevOrientations = solverImplementation.prevOrientations, + + invMasses = solverImplementation.invMasses, + invInertiaTensors = solverImplementation.invInertiaTensors, + radii = solverImplementation.principalRadii, + particleMaterialIndices = solverImplementation.collisionMaterials, + collisionMaterials = ObiColliderWorld.GetInstance().collisionMaterials.AsNativeArray(), + + simplices = solverImplementation.simplices, + simplexCounts = solverImplementation.simplexCounts, + + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + orientationDeltas = solverImplementation.orientationDeltas, + orientationCounts = solverImplementation.orientationConstraintCounts, + contacts = ((BurstSolverImpl)constraints.solver).particleContacts, + + batchData = batchData, + substepTime = substepTime, + }; + + int batchCount = batchData.isLast ? batchData.workItemCount : 1; + return projectConstraints.Schedule(batchData.workItemCount, batchCount, inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + if (!((BurstSolverImpl)constraints.solver).particleContacts.IsCreated) + return inputDeps; + + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + var applyConstraints = new ApplyBatchedCollisionConstraintsBatchJob() + { + contacts = ((BurstSolverImpl)constraints.solver).particleContacts, + + simplices = solverImplementation.simplices, + simplexCounts = solverImplementation.simplexCounts, + + positions = solverImplementation.positions, + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + orientations = solverImplementation.orientations, + orientationDeltas = solverImplementation.orientationDeltas, + orientationCounts = solverImplementation.orientationConstraintCounts, + constraintParameters = parameters, + batchData = batchData + }; + + int batchCount = batchData.isLast ? batchData.workItemCount : 1; + return applyConstraints.Schedule(batchData.workItemCount, batchCount, inputDeps); + } + + [BurstCompile] + public struct ParticleFrictionConstraintsBatchJob : IJobParallelFor + { + + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray prevPositions; + [ReadOnly] public NativeArray orientations; + [ReadOnly] public NativeArray prevOrientations; + + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray invInertiaTensors; + [ReadOnly] public NativeArray radii; + [ReadOnly] public NativeArray particleMaterialIndices; + [ReadOnly] public NativeArray collisionMaterials; + + // simplex arrays: + [ReadOnly] public NativeArray simplices; + [ReadOnly] public SimplexCounts simplexCounts; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray counts; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray orientationDeltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray orientationCounts; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray contacts; + + [ReadOnly] public BatchData batchData; + [ReadOnly] public float substepTime; + + public void Execute(int workItemIndex) + { + int start, end; + batchData.GetConstraintRange(workItemIndex, out start, out end); + + for (int i = start; i < end; ++i) + { + var contact = contacts[i]; + + int simplexStartA = simplexCounts.GetSimplexStartAndSize(contact.bodyA, out int simplexSizeA); + int simplexStartB = simplexCounts.GetSimplexStartAndSize(contact.bodyB, out int simplexSizeB); + + // Combine collision materials: + BurstCollisionMaterial material = CombineCollisionMaterials(simplices[simplexStartA], simplices[simplexStartB]); + + float4 prevPositionA = float4.zero; + float4 linearVelocityA = float4.zero; + float4 angularVelocityA = float4.zero; + float4 invInertiaTensorA = float4.zero; + quaternion orientationA = new quaternion(0, 0, 0, 0); + float simplexRadiusA = 0; + + float4 prevPositionB = float4.zero; + float4 linearVelocityB = float4.zero; + float4 angularVelocityB = float4.zero; + float4 invInertiaTensorB = float4.zero; + quaternion orientationB = new quaternion(0, 0, 0, 0); + float simplexRadiusB = 0; + + for (int j = 0; j < simplexSizeA; ++j) + { + int particleIndex = simplices[simplexStartA + j]; + prevPositionA += prevPositions[particleIndex] * contact.pointA[j]; + linearVelocityA += BurstIntegration.DifferentiateLinear(positions[particleIndex], prevPositions[particleIndex], substepTime) * contact.pointA[j]; + angularVelocityA += BurstIntegration.DifferentiateAngular(orientations[particleIndex], prevOrientations[particleIndex], substepTime) * contact.pointA[j]; + invInertiaTensorA += invInertiaTensors[particleIndex] * contact.pointA[j]; + orientationA.value += orientations[particleIndex].value * contact.pointA[j]; + simplexRadiusA += BurstMath.EllipsoidRadius(contact.normal, prevOrientations[particleIndex], radii[particleIndex].xyz) * contact.pointA[j]; + } + for (int j = 0; j < simplexSizeB; ++j) + { + int particleIndex = simplices[simplexStartB + j]; + prevPositionB += prevPositions[particleIndex] * contact.pointB[j]; + linearVelocityB += BurstIntegration.DifferentiateLinear(positions[particleIndex], prevPositions[particleIndex], substepTime) * contact.pointB[j]; + angularVelocityB += BurstIntegration.DifferentiateAngular(orientations[particleIndex], prevOrientations[particleIndex], substepTime) * contact.pointB[j]; + invInertiaTensorB += invInertiaTensors[particleIndex] * contact.pointB[j]; + orientationB.value += orientations[particleIndex].value * contact.pointB[j]; + simplexRadiusB += BurstMath.EllipsoidRadius(contact.normal, prevOrientations[particleIndex], radii[particleIndex].xyz) * contact.pointB[j]; + } + + float4 rA = float4.zero, rB = float4.zero; + + // Consider angular velocities if rolling contacts are enabled: + if (material.rollingContacts > 0) + { + rA = -contact.normal * simplexRadiusA; + rB = contact.normal * simplexRadiusB; + + linearVelocityA += new float4(math.cross(angularVelocityA.xyz, rA.xyz), 0); + linearVelocityB += new float4(math.cross(angularVelocityB.xyz, rB.xyz), 0); + } + + // Calculate relative velocity: + float4 relativeVelocity = linearVelocityA - linearVelocityB; + + // Calculate friction impulses (in the tangent and bitangent ddirections): + float2 impulses = contact.SolveFriction(relativeVelocity, material.staticFriction, material.dynamicFriction, substepTime); + + // Apply friction impulses to both particles: + if (math.abs(impulses.x) > BurstMath.epsilon || math.abs(impulses.y) > BurstMath.epsilon) + { + float4 tangentImpulse = impulses.x * contact.tangent; + float4 bitangentImpulse = impulses.y * contact.bitangent; + float4 totalImpulse = tangentImpulse + bitangentImpulse; + + float baryScale = BurstMath.BaryScale(contact.pointA); + for (int j = 0; j < simplexSizeA; ++j) + { + int particleIndex = simplices[simplexStartA + j]; + deltas[particleIndex] += (tangentImpulse * contact.tangentInvMassA + bitangentImpulse * contact.bitangentInvMassA) * substepTime * contact.pointA[j] * baryScale; + counts[particleIndex]++; + } + + baryScale = BurstMath.BaryScale(contact.pointB); + for (int j = 0; j < simplexSizeB; ++j) + { + int particleIndex = simplices[simplexStartB + j]; + deltas[particleIndex] -= (tangentImpulse * contact.tangentInvMassB + bitangentImpulse * contact.bitangentInvMassB) * substepTime * contact.pointB[j] * baryScale; + counts[particleIndex]++; + } + + // Rolling contacts: + if (material.rollingContacts > 0) + { + // Calculate angular velocity deltas due to friction impulse: + float4x4 solverInertiaA = BurstMath.TransformInertiaTensor(invInertiaTensorA, orientationA); + float4x4 solverInertiaB = BurstMath.TransformInertiaTensor(invInertiaTensorB, orientationB); + + float4 angVelDeltaA = math.mul(solverInertiaA, new float4(math.cross(rA.xyz, totalImpulse.xyz), 0)); + float4 angVelDeltaB = -math.mul(solverInertiaB, new float4(math.cross(rB.xyz, totalImpulse.xyz), 0)); + + // Final angular velocities, after adding the deltas: + angularVelocityA += angVelDeltaA; + angularVelocityB += angVelDeltaB; + + // Calculate weights (inverse masses): + float invMassA = math.length(math.mul(solverInertiaA, math.normalizesafe(angularVelocityA))); + float invMassB = math.length(math.mul(solverInertiaB, math.normalizesafe(angularVelocityB))); + + // Calculate rolling axis and angular velocity deltas: + float4 rollAxis = float4.zero; + float rollingImpulse = contact.SolveRollingFriction(angularVelocityA, angularVelocityB, material.rollingFriction, invMassA, invMassB, ref rollAxis); + angVelDeltaA += rollAxis * rollingImpulse * invMassA; + angVelDeltaB -= rollAxis * rollingImpulse * invMassB; + + // Apply orientation deltas to particles: + quaternion orientationDeltaA = BurstIntegration.AngularVelocityToSpinQuaternion(orientationA, angVelDeltaA, substepTime); + quaternion orientationDeltaB = BurstIntegration.AngularVelocityToSpinQuaternion(orientationB, angVelDeltaB, substepTime); + + for (int j = 0; j < simplexSizeA; ++j) + { + int particleIndex = simplices[simplexStartA + j]; + quaternion qA = orientationDeltas[particleIndex]; + qA.value += orientationDeltaA.value; + orientationDeltas[particleIndex] = qA; + orientationCounts[particleIndex]++; + } + + for (int j = 0; j < simplexSizeB; ++j) + { + int particleIndex = simplices[simplexStartB+ j]; + quaternion qB = orientationDeltas[particleIndex]; + qB.value += orientationDeltaB.value; + orientationDeltas[particleIndex] = qB; + orientationCounts[particleIndex]++; + } + } + } + + contacts[i] = contact; + } + } + + private BurstCollisionMaterial CombineCollisionMaterials(int entityA, int entityB) + { + // Combine collision materials: + int aMaterialIndex = particleMaterialIndices[entityA]; + int bMaterialIndex = particleMaterialIndices[entityB]; + + if (aMaterialIndex >= 0 && bMaterialIndex >= 0) + return BurstCollisionMaterial.CombineWith(collisionMaterials[aMaterialIndex], collisionMaterials[bMaterialIndex]); + else if (aMaterialIndex >= 0) + return collisionMaterials[aMaterialIndex]; + else if (bMaterialIndex >= 0) + return collisionMaterials[bMaterialIndex]; + + return new BurstCollisionMaterial(); + } + } + + + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleFrictionConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleFrictionConstraintsBatch.cs.meta new file mode 100644 index 000000000..17dfb971e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ParticleCollision/BurstParticleFrictionConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9a942dd261ea741b69997eba73462034 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Pin.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Pin.meta new file mode 100644 index 000000000..d0bbb0cf6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Pin.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dcbc7b9bf37704bd3945f0fb82506bfb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Pin/BurstPinConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Pin/BurstPinConstraints.cs new file mode 100644 index 000000000..530040132 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Pin/BurstPinConstraints.cs @@ -0,0 +1,26 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; + +namespace Obi +{ + public class BurstPinConstraints : BurstConstraintsImpl + { + public BurstPinConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.Pin) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstPinConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstPinConstraintsBatch); + batch.Destroy(); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Pin/BurstPinConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Pin/BurstPinConstraints.cs.meta new file mode 100644 index 000000000..8a357a986 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Pin/BurstPinConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 73ae545b061fa4db988fd3b64410fc6d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Pin/BurstPinConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Pin/BurstPinConstraintsBatch.cs new file mode 100644 index 000000000..bf8efe8cc --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Pin/BurstPinConstraintsBatch.cs @@ -0,0 +1,280 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using System.Collections.Generic; + +namespace Obi +{ + public class BurstPinConstraintsBatch : BurstConstraintsBatchImpl, IPinConstraintsBatchImpl + { + private NativeArray colliderIndices; + private NativeArray offsets; + private NativeArray restDarbouxVectors; + private NativeArray stiffnesses; + + public BurstPinConstraintsBatch(BurstPinConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.Pin; + } + + public void SetPinConstraints(ObiNativeIntList particleIndices, ObiNativeIntList colliderIndices, ObiNativeVector4List offsets, ObiNativeQuaternionList restDarbouxVectors, ObiNativeFloatList stiffnesses, ObiNativeFloatList lambdas, int count) + { + this.particleIndices = particleIndices.AsNativeArray(); + this.colliderIndices = colliderIndices.AsNativeArray(); + this.offsets = offsets.AsNativeArray(); + this.restDarbouxVectors = restDarbouxVectors.AsNativeArray(); + this.stiffnesses = stiffnesses.AsNativeArray(); + this.lambdas = lambdas.AsNativeArray(); + m_ConstraintCount = count; + } + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + var projectConstraints = new PinConstraintsBatchJob() + { + particleIndices = particleIndices, + colliderIndices = colliderIndices, + offsets = offsets, + stiffnesses = stiffnesses, + restDarboux = restDarbouxVectors, + lambdas = lambdas.Reinterpret(), + + positions = solverImplementation.positions, + prevPositions = solverImplementation.prevPositions, + invMasses = solverImplementation.invMasses, + orientations = solverImplementation.orientations, + invRotationalMasses = solverImplementation.invRotationalMasses, + + shapes = ObiColliderWorld.GetInstance().colliderShapes.AsNativeArray(), + transforms = ObiColliderWorld.GetInstance().colliderTransforms.AsNativeArray(), + rigidbodies = ObiColliderWorld.GetInstance().rigidbodies.AsNativeArray(), + rigidbodyLinearDeltas = solverImplementation.abstraction.rigidbodyLinearDeltas.AsNativeArray(), + rigidbodyAngularDeltas = solverImplementation.abstraction.rigidbodyAngularDeltas.AsNativeArray(), + + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + orientationDeltas = solverImplementation.orientationDeltas, + orientationCounts = solverImplementation.orientationConstraintCounts, + + inertialFrame = ((BurstSolverImpl)constraints.solver).inertialFrame, + stepTime = stepTime, + substepTime = substepTime, + substeps = substeps, + activeConstraintCount = m_ConstraintCount + }; + + return projectConstraints.Schedule(inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + var applyConstraints = new ApplyPinConstraintsBatchJob() + { + particleIndices = particleIndices, + + positions = solverImplementation.positions, + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + + orientations = solverImplementation.orientations, + orientationDeltas = solverImplementation.orientationDeltas, + orientationCounts = solverImplementation.orientationConstraintCounts, + + sorFactor = parameters.SORFactor, + activeConstraintCount = m_ConstraintCount, + }; + + return applyConstraints.Schedule(inputDeps); + } + + [BurstCompile] + public unsafe struct PinConstraintsBatchJob : IJob + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public NativeArray colliderIndices; + + [ReadOnly] public NativeArray offsets; + [ReadOnly] public NativeArray stiffnesses; + [ReadOnly] public NativeArray restDarboux; + public NativeArray lambdas; + + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray prevPositions; + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray orientations; + [ReadOnly] public NativeArray invRotationalMasses; + + [ReadOnly] public NativeArray shapes; + [ReadOnly] public NativeArray transforms; + [ReadOnly] public NativeArray rigidbodies; + public NativeArray rigidbodyLinearDeltas; + public NativeArray rigidbodyAngularDeltas; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray counts; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray orientationDeltas; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray orientationCounts; + + [ReadOnly] public BurstInertialFrame inertialFrame; + [ReadOnly] public float stepTime; + [ReadOnly] public float substepTime; + [ReadOnly] public int substeps; + [ReadOnly] public int activeConstraintCount; + + public void Execute() + { + for (int i = 0; i < activeConstraintCount; ++i) + { + int particleIndex = particleIndices[i]; + int colliderIndex = colliderIndices[i]; + + // no collider to pin to, so ignore the constraint. + if (colliderIndex < 0) + continue; + + int rigidbodyIndex = shapes[colliderIndex].rigidbodyIndex; + + // calculate time adjusted compliances + float2 compliances = stiffnesses[i].xy / (substepTime * substepTime); + + // project particle position to the end of the full step: + float4 particlePosition = math.lerp(prevPositions[particleIndex], positions[particleIndex], substeps); + + // express pin offset in world space: + float4 worldPinOffset = transforms[colliderIndex].TransformPoint(offsets[i]); + float4 predictedPinOffset = worldPinOffset; + quaternion predictedRotation = transforms[colliderIndex].rotation; + + float rigidbodyLinearW = 0; + float rigidbodyAngularW = 0; + + if (rigidbodyIndex >= 0) + { + var rigidbody = rigidbodies[rigidbodyIndex]; + + // predict offset point position: + float4 velocityAtPoint = BurstMath.GetRigidbodyVelocityAtPoint(rigidbodyIndex, inertialFrame.frame.InverseTransformPoint(worldPinOffset), rigidbodies, rigidbodyLinearDeltas, rigidbodyAngularDeltas, inertialFrame.frame); + predictedPinOffset = BurstIntegration.IntegrateLinear(predictedPinOffset, inertialFrame.frame.TransformVector(velocityAtPoint), stepTime); + + // predict rotation at the end of the step: + predictedRotation = BurstIntegration.IntegrateAngular(predictedRotation, rigidbody.angularVelocity + rigidbodyAngularDeltas[rigidbodyIndex], stepTime); + + // calculate linear and angular rigidbody weights: + rigidbodyLinearW = rigidbody.inverseMass; + rigidbodyAngularW = BurstMath.RotationalInvMass(rigidbody.inverseInertiaTensor, + worldPinOffset - rigidbody.com, + math.normalizesafe(inertialFrame.frame.TransformPoint(particlePosition) - predictedPinOffset)); + + } + + // Transform pin position to solver space for constraint solving: + predictedPinOffset = inertialFrame.frame.InverseTransformPoint(predictedPinOffset); + predictedRotation = math.mul(math.conjugate(inertialFrame.frame.rotation), predictedRotation); + + float4 gradient = particlePosition - predictedPinOffset; + float constraint = math.length(gradient); + float4 gradientDir = gradient / (constraint + BurstMath.epsilon); + + float4 lambda = lambdas[i]; + float linearDLambda = (-constraint - compliances.x * lambda.w) / (invMasses[particleIndex] + rigidbodyLinearW + rigidbodyAngularW + compliances.x + BurstMath.epsilon); + lambda.w += linearDLambda; + float4 correction = linearDLambda * gradientDir; + + deltas[particleIndex] += correction * invMasses[particleIndex] / substeps; + counts[particleIndex]++; + + if (rigidbodyIndex >= 0) + { + BurstMath.ApplyImpulse(rigidbodyIndex, + -correction / stepTime * 1, + inertialFrame.frame.InverseTransformPoint(worldPinOffset), + rigidbodies, rigidbodyLinearDeltas, rigidbodyAngularDeltas, inertialFrame.frame); + } + + if (rigidbodyAngularW > 0 || invRotationalMasses[particleIndex] > 0) + { + // bend/twist constraint: + quaternion omega = math.mul(math.conjugate(orientations[particleIndex]), predictedRotation); //darboux vector + + quaternion omega_plus; + omega_plus.value = omega.value + restDarboux[i].value; //delta Omega with - omega_0 + omega.value -= restDarboux[i].value; //delta Omega with + omega_0 + if (math.lengthsq(omega.value) > math.lengthsq(omega_plus.value)) + omega = omega_plus; + + float3 dlambda = (omega.value.xyz - compliances.y * lambda.xyz) / new float3(compliances.y + invRotationalMasses[particleIndex] + rigidbodyAngularW + BurstMath.epsilon); + lambda.xyz += dlambda; + + //discrete Darboux vector does not have vanishing scalar part + quaternion dlambdaQ = new quaternion(dlambda[0], dlambda[1], dlambda[2], 0); + + quaternion orientDelta = orientationDeltas[particleIndex]; + orientDelta.value += math.mul(predictedRotation, dlambdaQ).value * invRotationalMasses[particleIndex] / substeps; + orientationDeltas[particleIndex] = orientDelta; + orientationCounts[particleIndex]++; + + if (rigidbodyIndex >= 0) + { + BurstMath.ApplyDeltaQuaternion(rigidbodyIndex, + predictedRotation, + -math.mul(orientations[particleIndex], dlambdaQ).value * rigidbodyAngularW, + rigidbodyAngularDeltas, inertialFrame.frame, stepTime); + } + } + + lambdas[i] = lambda; + } + } + } + + [BurstCompile] + public struct ApplyPinConstraintsBatchJob : IJob + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public float sorFactor; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray counts; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray orientations; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray orientationDeltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray orientationCounts; + + [ReadOnly] public int activeConstraintCount; + + public void Execute() + { + for (int i = 0; i < activeConstraintCount; ++i) + { + int p1 = particleIndices[i]; + + if (counts[p1] > 0) + { + positions[p1] += deltas[p1] * sorFactor / counts[p1]; + deltas[p1] = float4.zero; + counts[p1] = 0; + } + + if (orientationCounts[p1] > 0) + { + quaternion q = orientations[p1]; + q.value += orientationDeltas[p1].value * sorFactor / orientationCounts[p1]; + orientations[p1] = math.normalize(q); + + orientationDeltas[p1] = new quaternion(0, 0, 0, 0); + orientationCounts[p1] = 0; + } + } + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Pin/BurstPinConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Pin/BurstPinConstraintsBatch.cs.meta new file mode 100644 index 000000000..36ea9d25f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Pin/BurstPinConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a383dd79fc24448059bb45283b12a52b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ShapeMatching.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ShapeMatching.meta new file mode 100644 index 000000000..63ebf86ac --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ShapeMatching.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bf9959ac1dc214a0799c42583ae2cbdb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ShapeMatching/BurstShapeMatchingConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ShapeMatching/BurstShapeMatchingConstraints.cs new file mode 100644 index 000000000..562da3ad8 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ShapeMatching/BurstShapeMatchingConstraints.cs @@ -0,0 +1,26 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; + +namespace Obi +{ + public class BurstShapeMatchingConstraints : BurstConstraintsImpl + { + public BurstShapeMatchingConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.ShapeMatching) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstShapeMatchingConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstShapeMatchingConstraintsBatch); + batch.Destroy(); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ShapeMatching/BurstShapeMatchingConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ShapeMatching/BurstShapeMatchingConstraints.cs.meta new file mode 100644 index 000000000..4827c585b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ShapeMatching/BurstShapeMatchingConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cf31f7a95aadc4c85a69a3400ba30608 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ShapeMatching/BurstShapeMatchingConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ShapeMatching/BurstShapeMatchingConstraintsBatch.cs new file mode 100644 index 000000000..c73dc01c4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ShapeMatching/BurstShapeMatchingConstraintsBatch.cs @@ -0,0 +1,459 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using System.Collections; + +namespace Obi +{ + public class BurstShapeMatchingConstraintsBatch : BurstConstraintsBatchImpl, IShapeMatchingConstraintsBatchImpl + { + private NativeArray firstIndex; + private NativeArray numIndices; + private NativeArray explicitGroup; + private NativeArray shapeMaterialParameters; + private NativeArray restComs; + private NativeArray coms; + private NativeArray constraintOrientations; + + private NativeArray Aqq; + private NativeArray linearTransforms; + private NativeArray plasticDeformations; + + public BurstShapeMatchingConstraintsBatch(BurstShapeMatchingConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.ShapeMatching; + } + + public void SetShapeMatchingConstraints(ObiNativeIntList particleIndices, + ObiNativeIntList firstIndex, + ObiNativeIntList numIndices, + ObiNativeIntList explicitGroup, + ObiNativeFloatList shapeMaterialParameters, + ObiNativeVector4List restComs, + ObiNativeVector4List coms, + ObiNativeQuaternionList constraintOrientations, + ObiNativeMatrix4x4List linearTransforms, + ObiNativeMatrix4x4List plasticDeformations, + ObiNativeFloatList lambdas, + int count) + { + this.particleIndices = particleIndices.AsNativeArray(); + this.firstIndex = firstIndex.AsNativeArray(); + this.numIndices = numIndices.AsNativeArray(); + this.explicitGroup = explicitGroup.AsNativeArray(); + this.shapeMaterialParameters = shapeMaterialParameters.AsNativeArray(); + this.restComs = restComs.AsNativeArray(); + this.coms = coms.AsNativeArray(); + this.constraintOrientations = constraintOrientations.AsNativeArray(); + this.linearTransforms = linearTransforms.AsNativeArray(); + this.plasticDeformations = plasticDeformations.AsNativeArray(); + + if (Aqq.IsCreated) + Aqq.Dispose(); + + Aqq = new NativeArray(count,Allocator.Persistent); + + m_ConstraintCount = count; + } + + public override void Destroy() + { + if (Aqq.IsCreated) + Aqq.Dispose(); + } + + public override JobHandle Initialize(JobHandle inputDeps, float substepTime) + { + return inputDeps; + } + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + var projectConstraints = new ShapeMatchingConstraintsBatchJob() + { + particleIndices = particleIndices, + firstIndex = firstIndex, + numIndices = numIndices, + explicitGroup = explicitGroup, + shapeMaterialParameters = shapeMaterialParameters, + restComs = restComs, + coms = coms, + constraintOrientations = constraintOrientations, + Aqq = Aqq, + linearTransforms = linearTransforms, + deformation = plasticDeformations, + + positions = solverImplementation.positions, + restPositions = solverImplementation.restPositions, + orientations = solverImplementation.orientations, + restOrientations = solverImplementation.restOrientations, + invMasses = solverImplementation.invMasses, + invRotationalMasses = solverImplementation.invRotationalMasses, + invInertiaTensors = solverImplementation.invInertiaTensors, + + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + + deltaTime = substepTime + }; + + return projectConstraints.Schedule(m_ConstraintCount, 4, inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + var applyConstraints = new ApplyShapeMatchingConstraintsBatchJob() + { + particleIndices = particleIndices, + firstIndex = firstIndex, + numIndices = numIndices, + + positions = solverImplementation.positions, + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + + sorFactor = parameters.SORFactor + }; + + return applyConstraints.Schedule(m_ConstraintCount, 8, inputDeps); + } + + public void CalculateRestShapeMatching() + { + var deps = ((BurstSolverImpl)constraints.solver).RecalculateInertiaTensors(new JobHandle()); + + var calculateRest = new ShapeMatchingCalculateRestJob() + { + particleIndices = particleIndices, + firstIndex = firstIndex, + numIndices = numIndices, + restComs = restComs, + coms = coms, + Aqq = Aqq, + deformation = plasticDeformations, + + restPositions = solverAbstraction.restPositions.AsNativeArray(), + restOrientations = solverAbstraction.restOrientations.AsNativeArray(), + invMasses = solverAbstraction.invMasses.AsNativeArray(), + invInertiaTensors = solverAbstraction.invInertiaTensors.AsNativeArray(), + }; + + calculateRest.Schedule(numIndices.Length, 64, deps).Complete(); + } + + protected static void RecalculateRestData(int i, + ref NativeArray particleIndices, + ref NativeArray firstIndex, + ref NativeArray restComs, + ref NativeArray Aqq, + ref NativeArray deformation, + ref NativeArray numIndices, + ref NativeArray invMasses, + ref NativeArray restPositions, + ref NativeArray restOrientations, + ref NativeArray invInertiaTensors) + { + int k = 0; + float maximumMass = 10000; + + // initialize rest center of mass and shape matrix: + restComs[i] = float4.zero; + Aqq[i] = float4x4.zero; + + float4 restCom = float4.zero; + float4x4 _Aqq = float4x4.zero, _Rqq = float4x4.zero; + + // calculate rest center of mass, shape mass and Aqq matrix. + for (int j = 0; j < numIndices[i]; ++j) + { + k = particleIndices[firstIndex[i] + j]; + + float mass = maximumMass; + if (invMasses[k] > 1.0f / maximumMass) + mass = 1.0f / invMasses[k]; + + restCom += restPositions[k] * mass; + + float4x4 particleR = restOrientations[k].toMatrix(); + particleR[3][3] = 0; + + _Rqq += math.mul(particleR, + math.mul(math.rcp(invInertiaTensors[k] + new float4(BurstMath.epsilon)).asDiagonal(), + math.transpose(particleR)) + ); + + float4 restPosition = restPositions[k]; + restPosition[3] = 0; + + _Aqq += mass * BurstMath.multrnsp4(restPosition, restPosition); + + } + + + if (restCom[3] < BurstMath.epsilon) + return; + + restCom.xyz /= restCom[3]; + restComs[i] = restCom; + + restCom[3] = 0; + _Aqq -= restComs[i][3] * BurstMath.multrnsp4(restCom, restCom); + _Aqq[3][3] = 1; // so that the determinant is never 0 due to all-zeros row/column. + + Aqq[i] = math.inverse(_Rqq + math.mul(deformation[i], math.mul(_Aqq, math.transpose(deformation[i])))); + } + + [BurstCompile] + public struct ShapeMatchingCalculateRestJob : IJobParallelFor + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public NativeArray firstIndex; + [ReadOnly] public NativeArray numIndices; + public NativeArray restComs; + [ReadOnly] public NativeArray coms; + + public NativeArray Aqq; + [ReadOnly] public NativeArray deformation; + + [ReadOnly] public NativeArray restPositions; + [ReadOnly] public NativeArray restOrientations; + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray invInertiaTensors; + + public void Execute(int i) + { + RecalculateRestData(i, + ref particleIndices, + ref firstIndex, + ref restComs, + ref Aqq, + ref deformation, + ref numIndices, + ref invMasses, + ref restPositions, + ref restOrientations, + ref invInertiaTensors); + } + } + + [BurstCompile] + public struct ShapeMatchingConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public NativeArray firstIndex; + [ReadOnly] public NativeArray numIndices; + [ReadOnly] public NativeArray explicitGroup; + [ReadOnly] public NativeArray shapeMaterialParameters; + public NativeArray restComs; + public NativeArray coms; + public NativeArray constraintOrientations; + + public NativeArray Aqq; + public NativeArray linearTransforms; + public NativeArray deformation; + + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray restPositions; + + [ReadOnly] public NativeArray restOrientations; + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray invRotationalMasses; + [ReadOnly] public NativeArray invInertiaTensors; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray orientations; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray counts; + + [ReadOnly] public float deltaTime; + + public void Execute(int i) + { + int k; + float maximumMass = 10000; + + coms[i] = float4.zero; + float4x4 Apq = float4x4.zero, Rpq = float4x4.zero; + + // calculate shape mass, center of mass, and moment matrix: + for (int j = 0; j < numIndices[i]; ++j) + { + k = particleIndices[firstIndex[i] + j]; + + float mass = maximumMass; + if (invMasses[k] > 1.0f / maximumMass) + mass = 1.0f / invMasses[k]; + + coms[i] += positions[k] * mass; + + float4x4 particleR = orientations[k].toMatrix(); + float4x4 particleRT = restOrientations[k].toMatrix(); + particleR[3][3] = 0; + particleRT[3][3] = 0; + + Rpq += math.mul(particleR, + math.mul(math.rcp(invInertiaTensors[k] + new float4(BurstMath.epsilon)).asDiagonal(), + math.transpose(particleRT)) + ); + + float4 restPosition = restPositions[k]; + restPosition[3] = 0; + + Apq += mass * BurstMath.multrnsp4(positions[k], restPosition); + } + + if (restComs[i][3] < BurstMath.epsilon) + return; + + coms[i] /= restComs[i][3]; + + // subtract global shape moment: + float4 restCom = restComs[i]; + restCom[3] = 0; + + Apq -= restComs[i][3] * BurstMath.multrnsp4(coms[i], restCom); + + // calculate optimal transform including plastic deformation: + float4x4 Apq_def = Rpq + math.mul(Apq , math.transpose(deformation[i])); + Apq_def[3][3] = 1; + + // reconstruct full best-matching linear transform: + linearTransforms[i] = math.mul(Apq_def, Aqq[i]); + + // extract rotation from transform matrix, using warmstarting and few iterations: + constraintOrientations[i] = BurstMath.ExtractRotation(Apq_def, constraintOrientations[i], 2); + + // finally, obtain rotation matrix: + float4x4 R = constraintOrientations[i].toMatrix(); + R[3][3] = 0; + + // calculate particle orientations: + if (explicitGroup[i] > 0) + { + // if the group is explicit, set the orientation for all particles: + for (int j = 0; j < numIndices[i]; ++j) + { + k = particleIndices[firstIndex[i] + j]; + orientations[k] = math.mul(constraintOrientations[i], restOrientations[k]); + } + } + else + { + // set orientation of center particle only: + int centerIndex = particleIndices[firstIndex[i]]; + orientations[centerIndex] = math.mul(constraintOrientations[i], restOrientations[centerIndex]); + } + + // calculate and accumulate particle goal positions: + float4 goal; + float4x4 transform = math.mul(R,deformation[i]); + for (int j = 0; j < numIndices[i]; ++j) + { + k = particleIndices[firstIndex[i] + j]; + goal = coms[i] + math.mul(transform, restPositions[k] - restComs[i]); + deltas[k] += (goal - positions[k]) * shapeMaterialParameters[i * 5]; + counts[k]++; + } + + // update plastic deformation: + float plastic_yield = shapeMaterialParameters[i * 5 + 1]; + float plastic_creep = shapeMaterialParameters[i * 5 + 2]; + float plastic_recovery = shapeMaterialParameters[i * 5 + 3]; + float max_deform = shapeMaterialParameters[i * 5 + 4]; + + // if we are allowed to absorb deformation: + if (plastic_creep > 0) + { + R[3][3] = 1; + + // get scale matrix (A = RS so S = Rt * A) and its deviation from the identity matrix: + float4x4 deform_matrix = math.mul(math.transpose(R), linearTransforms[i]) - float4x4.identity; + + // if the amount of deformation exceeds the yield threshold: + float norm = deform_matrix.frobeniusNorm(); + if (norm > plastic_yield) + { + // deform the shape permanently: + deformation[i] = math.mul(float4x4.identity + plastic_creep * deform_matrix, deformation[i]); + + // clamp deformation so that it does not exceed a percentage; + deform_matrix = deformation[i] - float4x4.identity; + norm = deform_matrix.frobeniusNorm(); + if (norm > max_deform) + { + deformation[i] = float4x4.identity + max_deform * deform_matrix / norm; + } + + // if we cannot recover from plastic deformation, recalculate rest shape now: + if (plastic_recovery == 0) + RecalculateRestData(i, + ref particleIndices, + ref firstIndex, + ref restComs, + ref Aqq, + ref deformation, + ref numIndices, + ref invMasses, + ref restPositions, + ref restOrientations, + ref invInertiaTensors); + } + } + + // if we can recover from plastic deformation, lerp towards non-deformed shape and recalculate rest shape: + if (plastic_recovery > 0) + { + deformation[i] += (float4x4.identity - deformation[i]) * math.min(plastic_recovery * deltaTime, 1.0f); + RecalculateRestData(i, + ref particleIndices, + ref firstIndex, + ref restComs, + ref Aqq, + ref deformation, + ref numIndices, + ref invMasses, + ref restPositions, + ref restOrientations, + ref invInertiaTensors); + } + } + } + + [BurstCompile] + public struct ApplyShapeMatchingConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public NativeArray firstIndex; + [ReadOnly] public NativeArray numIndices; + [ReadOnly] public float sorFactor; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray counts; + + public void Execute(int i) + { + int first = firstIndex[i]; + int last = first + numIndices[i]; + + for (int k = first; k < last; ++k) + { + int p = particleIndices[k]; + if (counts[p] > 0) + { + positions[p] += deltas[p] * sorFactor / counts[p]; + deltas[p] = float4.zero; + counts[p] = 0; + } + } + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ShapeMatching/BurstShapeMatchingConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ShapeMatching/BurstShapeMatchingConstraintsBatch.cs.meta new file mode 100644 index 000000000..aedc56273 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/ShapeMatching/BurstShapeMatchingConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5a532b712a8e34bf8a610d420174d9b9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Skin.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Skin.meta new file mode 100644 index 000000000..b8d49053d --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Skin.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: da67648eb6cfe43fbb5574da14d23dc6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Skin/BurstSkinConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Skin/BurstSkinConstraints.cs new file mode 100644 index 000000000..e823e01cc --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Skin/BurstSkinConstraints.cs @@ -0,0 +1,26 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; + +namespace Obi +{ + public class BurstSkinConstraints : BurstConstraintsImpl + { + public BurstSkinConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.Skin) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstSkinConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstSkinConstraintsBatch); + batch.Destroy(); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Skin/BurstSkinConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Skin/BurstSkinConstraints.cs.meta new file mode 100644 index 000000000..65f8d7486 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Skin/BurstSkinConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f501f9a4acdd34395a31db88db413cb7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Skin/BurstSkinConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Skin/BurstSkinConstraintsBatch.cs new file mode 100644 index 000000000..01ebb638b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Skin/BurstSkinConstraintsBatch.cs @@ -0,0 +1,151 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using System.Collections; + +namespace Obi +{ + public class BurstSkinConstraintsBatch : BurstConstraintsBatchImpl, ISkinConstraintsBatchImpl + { + private NativeArray skinPoints; + private NativeArray skinNormals; + private NativeArray skinRadiiBackstop; + private NativeArray skinCompliance; + + public BurstSkinConstraintsBatch(BurstSkinConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.Skin; + } + + public void SetSkinConstraints(ObiNativeIntList particleIndices, ObiNativeVector4List skinPoints, ObiNativeVector4List skinNormals, ObiNativeFloatList skinRadiiBackstop, ObiNativeFloatList skinCompliance, ObiNativeFloatList lambdas, int count) + { + this.particleIndices = particleIndices.AsNativeArray(); + this.skinPoints = skinPoints.AsNativeArray(); + this.skinNormals = skinNormals.AsNativeArray(); + this.skinRadiiBackstop = skinRadiiBackstop.AsNativeArray(); + this.skinCompliance = skinCompliance.AsNativeArray(); + this.lambdas = lambdas.AsNativeArray(); + m_ConstraintCount = count; + } + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + var projectConstraints = new SkinConstraintsBatchJob() + { + particleIndices = particleIndices, + skinPoints = skinPoints, + skinNormals = skinNormals, + skinRadiiBackstop = skinRadiiBackstop.Reinterpret(), + skinCompliance = skinCompliance, + lambdas = lambdas, + positions = solverImplementation.positions, + invMasses = solverImplementation.invMasses, + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + deltaTimeSqr = substepTime * substepTime + }; + + return projectConstraints.Schedule(m_ConstraintCount, 32, inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + var applyConstraints = new ApplySkinConstraintsBatchJob() + { + particleIndices = particleIndices, + + positions = solverImplementation.positions, + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + + sorFactor = parameters.SORFactor + }; + + return applyConstraints.Schedule(m_ConstraintCount, 64, inputDeps); + } + + [BurstCompile] + public struct SkinConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public NativeArray skinPoints; + [ReadOnly] public NativeArray skinNormals; + [ReadOnly] public NativeArray skinRadiiBackstop; + [ReadOnly] public NativeArray skinCompliance; + public NativeArray lambdas; + + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray invMasses; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray counts; + + [ReadOnly] public float deltaTimeSqr; + + public void Execute(int i) + { + float radius = skinRadiiBackstop[i].x; + float collisionRadius = skinRadiiBackstop[i].y; + float backstopDistance = collisionRadius + skinRadiiBackstop[i].z; + + float compliance = skinCompliance[i] / deltaTimeSqr; + int p = particleIndices[i]; + + if (invMasses[p] > 0) + { + float4 toSkin = positions[p] - skinPoints[i]; + float4 toBackstop = positions[p] - (skinPoints[i] - skinNormals[i] * backstopDistance); + + // distance to skin and backstop sphere centers: + float d = math.length(toSkin); + float b = math.length(toBackstop); + + // constrain particle within skin radius. + // ignore mass in the equations (use 1), as we don't want particle mass to interfere with skin compliance. + // We should be able to adjust skin properties and particle mass (for collisions) independently. + float constraint = math.max(0,d - radius); + float dlambda = (-constraint - compliance * lambdas[i]) / (1 + compliance); + lambdas[i] += dlambda; + deltas[p] += dlambda * toSkin / (d + BurstMath.epsilon); + counts[p]++; + + // constrain particle outside the backstop sphere (0 compliance): + constraint = math.min(0, b - collisionRadius); + deltas[p] -= constraint * toBackstop / (b + BurstMath.epsilon); + } + + } + } + + [BurstCompile] + public struct ApplySkinConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public float sorFactor; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray counts; + + public void Execute(int i) + { + int p1 = particleIndices[i]; + + if (counts[p1] > 0) + { + positions[p1] += deltas[p1] * sorFactor / counts[p1]; + deltas[p1] = float4.zero; + counts[p1] = 0; + } + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Skin/BurstSkinConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Skin/BurstSkinConstraintsBatch.cs.meta new file mode 100644 index 000000000..8bb9f7646 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Skin/BurstSkinConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b78797a70a67646fe84c09d533a1bba9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Stitch.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Stitch.meta new file mode 100644 index 000000000..902647464 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Stitch.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5d27732f644a64569a0e8a1595d1f2a7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Stitch/BurstStitchConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Stitch/BurstStitchConstraints.cs new file mode 100644 index 000000000..2856d1303 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Stitch/BurstStitchConstraints.cs @@ -0,0 +1,26 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; + +namespace Obi +{ + public class BurstStitchConstraints : BurstConstraintsImpl + { + public BurstStitchConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.Stitch) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstStitchConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstStitchConstraintsBatch); + batch.Destroy(); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Stitch/BurstStitchConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Stitch/BurstStitchConstraints.cs.meta new file mode 100644 index 000000000..8282ae031 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Stitch/BurstStitchConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c0e33ed168e3c497b96274c765a12550 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Stitch/BurstStitchConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Stitch/BurstStitchConstraintsBatch.cs new file mode 100644 index 000000000..58cabef91 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Stitch/BurstStitchConstraintsBatch.cs @@ -0,0 +1,152 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using System.Collections; + +namespace Obi +{ + public class BurstStitchConstraintsBatch : BurstConstraintsBatchImpl, IStitchConstraintsBatchImpl + { + private NativeArray stiffnesses; + + public BurstStitchConstraintsBatch(BurstStitchConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.Stitch; + } + + public void SetStitchConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList stiffnesses, ObiNativeFloatList lambdas, int count) + { + this.particleIndices = particleIndices.AsNativeArray(); + this.stiffnesses = stiffnesses.AsNativeArray(); + this.lambdas = lambdas.AsNativeArray(); + m_ConstraintCount = count; + } + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + var projectConstraints = new StitchConstraintsBatchJob() + { + particleIndices = particleIndices, + stiffnesses = stiffnesses, + lambdas = lambdas, + positions = solverImplementation.positions, + invMasses = solverImplementation.invMasses, + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + deltaTimeSqr = substepTime * substepTime, + activeConstraintCount = m_ConstraintCount + }; + + return projectConstraints.Schedule(inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + var applyConstraints = new ApplyStitchConstraintsBatchJob() + { + particleIndices = particleIndices, + + positions = solverImplementation.positions, + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + + sorFactor = parameters.SORFactor, + activeConstraintCount = m_ConstraintCount + }; + + return applyConstraints.Schedule(inputDeps); + } + + [BurstCompile] + public struct StitchConstraintsBatchJob : IJob + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public NativeArray stiffnesses; + public NativeArray lambdas; + + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray invMasses; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray counts; + + [ReadOnly] public float deltaTimeSqr; + [ReadOnly] public int activeConstraintCount; + + public void Execute() + { + for (int i = 0; i < activeConstraintCount; ++i) + { + int p1 = particleIndices[i * 2]; + int p2 = particleIndices[i * 2 + 1]; + + float w1 = invMasses[p1]; + float w2 = invMasses[p2]; + + // calculate time adjusted compliance + float compliance = stiffnesses[i] / deltaTimeSqr; + + // calculate position and lambda deltas: + float4 distance = positions[p1] - positions[p2]; + float constraint = math.length(distance); + + // calculate lambda and position deltas: + float dlambda = (-constraint - compliance * lambdas[i]) / (w1 + w2 + compliance + BurstMath.epsilon); + float4 delta = dlambda * distance / (constraint + BurstMath.epsilon); + + lambdas[i] += dlambda; + + deltas[p1] += delta * w1; + deltas[p2] -= delta * w2; + + counts[p1]++; + counts[p2]++; + } + } + } + + [BurstCompile] + public struct ApplyStitchConstraintsBatchJob : IJob + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public float sorFactor; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray counts; + + [ReadOnly] public int activeConstraintCount; + + public void Execute() + { + for (int i = 0; i < activeConstraintCount; ++i) + { + int p1 = particleIndices[i * 2]; + int p2 = particleIndices[i * 2 + 1]; + + if (counts[p1] > 0) + { + positions[p1] += deltas[p1] * sorFactor / counts[p1]; + deltas[p1] = float4.zero; + counts[p1] = 0; + } + + if (counts[p2] > 0) + { + positions[p2] += deltas[p2] * sorFactor / counts[p2]; + deltas[p2] = float4.zero; + counts[p2] = 0; + } + } + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Stitch/BurstStitchConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Stitch/BurstStitchConstraintsBatch.cs.meta new file mode 100644 index 000000000..fbecad961 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Stitch/BurstStitchConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cfc801159b76b4cc1a2a7593113d6935 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/StretchShear.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/StretchShear.meta new file mode 100644 index 000000000..06639848b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/StretchShear.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 67eda103405cc476bbd356a301fdc499 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/StretchShear/BurstStretchShearConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/StretchShear/BurstStretchShearConstraints.cs new file mode 100644 index 000000000..be5283ecd --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/StretchShear/BurstStretchShearConstraints.cs @@ -0,0 +1,26 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; + +namespace Obi +{ + public class BurstStretchShearConstraints : BurstConstraintsImpl + { + public BurstStretchShearConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.StretchShear) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstStretchShearConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstStretchShearConstraintsBatch); + batch.Destroy(); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/StretchShear/BurstStretchShearConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/StretchShear/BurstStretchShearConstraints.cs.meta new file mode 100644 index 000000000..8e0f8f779 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/StretchShear/BurstStretchShearConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a79c4e863802e4ca19939ab6766329e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/StretchShear/BurstStretchShearConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/StretchShear/BurstStretchShearConstraintsBatch.cs new file mode 100644 index 000000000..4824c5bab --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/StretchShear/BurstStretchShearConstraintsBatch.cs @@ -0,0 +1,203 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using System.Collections; + +namespace Obi +{ + public class BurstStretchShearConstraintsBatch : BurstConstraintsBatchImpl, IStretchShearConstraintsBatchImpl + { + private NativeArray orientationIndices; + private NativeArray restLengths; + private NativeArray restOrientations; + private NativeArray stiffnesses; + + public BurstStretchShearConstraintsBatch(BurstStretchShearConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.StretchShear; + } + + public void SetStretchShearConstraints(ObiNativeIntList particleIndices, ObiNativeIntList orientationIndices, ObiNativeFloatList restLengths, ObiNativeQuaternionList restOrientations, ObiNativeVector3List stiffnesses, ObiNativeFloatList lambdas, int count) + { + this.particleIndices = particleIndices.AsNativeArray(); + this.orientationIndices = orientationIndices.AsNativeArray(); + this.restLengths = restLengths.AsNativeArray(); + this.restOrientations = restOrientations.AsNativeArray(); + this.stiffnesses = stiffnesses.AsNativeArray(); + this.lambdas = lambdas.AsNativeArray(); + m_ConstraintCount = count; + } + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + var projectConstraints = new StretchShearConstraintsBatchJob() + { + particleIndices = particleIndices, + orientationIndices = orientationIndices, + restLengths = restLengths, + restOrientations = restOrientations, + stiffnesses = stiffnesses, + lambdas = lambdas.Reinterpret(), + + positions = solverImplementation.positions, + orientations = solverImplementation.orientations, + invMasses = solverImplementation.invMasses, + invRotationalMasses = solverImplementation.invRotationalMasses, + + deltas = solverImplementation.positionDeltas, + orientationDeltas = solverImplementation.orientationDeltas, + counts = solverImplementation.positionConstraintCounts, + orientationCounts = solverImplementation.orientationConstraintCounts, + + deltaTimeSqr = substepTime * substepTime + }; + + return projectConstraints.Schedule(m_ConstraintCount, 32, inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + var applyConstraints = new ApplyStretchShearConstraintsBatchJob() + { + particleIndices = particleIndices, + orientationIndices = orientationIndices, + + positions = solverImplementation.positions, + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + + orientations = solverImplementation.orientations, + orientationDeltas = solverImplementation.orientationDeltas, + orientationCounts = solverImplementation.orientationConstraintCounts, + + sorFactor = parameters.SORFactor + }; + + return applyConstraints.Schedule(m_ConstraintCount, 64, inputDeps); + } + + [BurstCompile] + public struct StretchShearConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public NativeArray orientationIndices; + [ReadOnly] public NativeArray restLengths; + [ReadOnly] public NativeArray restOrientations; + [ReadOnly] public NativeArray stiffnesses; + public NativeArray lambdas; + + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray orientations; + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray invRotationalMasses; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray orientationDeltas; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray counts; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray orientationCounts; + + [ReadOnly] public float deltaTimeSqr; + + public void Execute(int i) + { + int p1 = particleIndices[i * 2]; + int p2 = particleIndices[i * 2 + 1]; + int q = orientationIndices[i]; + + float w1 = invMasses[p1]; + float w2 = invMasses[p2]; + + // calculate time adjusted compliance + float3 compliances = stiffnesses[i] / deltaTimeSqr; + + float3 e = math.rotate(restOrientations[i],new float3(0, 0, 1)); + quaternion basis = math.mul(orientations[q],restOrientations[i]); + + // calculate rod vector in local element space: + float3 gamma = math.rotate(math.conjugate(basis), (positions[p2] - positions[p1]).xyz) / (restLengths[i] + BurstMath.epsilon); + + // subtract third director vector (0,0,1): + gamma[2] -= 1; + + float3 W = new float3((w1 + w2) / (restLengths[i] + BurstMath.epsilon) + invRotationalMasses[q] * 4.0f * restLengths[i] + BurstMath.epsilon); + float3 dlambda = (gamma - compliances * lambdas[i]) / (compliances + W); + lambdas[i] += dlambda; + + // convert lambda delta lambda back to world space: + dlambda = math.mul(basis, dlambda); + + deltas[p1] += new float4(dlambda, 0) * w1; + deltas[p2] -= new float4(dlambda, 0) * w2; + + quaternion e_3 = new quaternion(e.x,e.y,e.z,0); + quaternion q_e_3_bar = math.mul(orientations[q],math.conjugate(e_3)); + + // calculate rotation delta: + quaternion rotDelta = math.mul(new quaternion(dlambda[0], dlambda[1], dlambda[2], 0.0f),q_e_3_bar); + rotDelta.value *= 2.0f * invRotationalMasses[q] * restLengths[i]; + orientationDeltas[q] = rotDelta; + + counts[p1]++; + counts[p2]++; + orientationCounts[q]++; + + } + } + + [BurstCompile] + public struct ApplyStretchShearConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public NativeArray orientationIndices; + [ReadOnly] public float sorFactor; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray counts; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray orientations; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray orientationDeltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray orientationCounts; + + public void Execute(int i) + { + int p1 = particleIndices[i * 2]; + int p2 = particleIndices[i * 2 + 1]; + int q1 = orientationIndices[i]; + + if (counts[p1] > 0) + { + positions[p1] += deltas[p1] * sorFactor / counts[p1]; + deltas[p1] = float4.zero; + counts[p1] = 0; + } + + if (counts[p2] > 0) + { + positions[p2] += deltas[p2] * sorFactor / counts[p2]; + deltas[p2] = float4.zero; + counts[p2] = 0; + } + + if (orientationCounts[q1] > 0) + { + quaternion q = orientations[q1]; + q.value += orientationDeltas[q1].value * sorFactor / orientationCounts[q1]; + orientations[q1] = math.normalize(q); + + orientationDeltas[q1] = new quaternion(0, 0, 0, 0); + orientationCounts[q1] = 0; + } + + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/StretchShear/BurstStretchShearConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/StretchShear/BurstStretchShearConstraintsBatch.cs.meta new file mode 100644 index 000000000..fd4594af8 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/StretchShear/BurstStretchShearConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0f505342239d5443fbd06fb4e610b240 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Tether.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Tether.meta new file mode 100644 index 000000000..edc510757 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Tether.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c77d80d2f6a7b4136bfdc684b23b91f3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Tether/BurstTetherConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Tether/BurstTetherConstraints.cs new file mode 100644 index 000000000..ad12a2d49 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Tether/BurstTetherConstraints.cs @@ -0,0 +1,26 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; + +namespace Obi +{ + public class BurstTetherConstraints : BurstConstraintsImpl + { + public BurstTetherConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.Distance) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstTetherConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstTetherConstraintsBatch); + batch.Destroy(); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Tether/BurstTetherConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Tether/BurstTetherConstraints.cs.meta new file mode 100644 index 000000000..0a7fa83a9 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Tether/BurstTetherConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c12658b3bc614f3c921a54dc2489881 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Tether/BurstTetherConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Tether/BurstTetherConstraintsBatch.cs new file mode 100644 index 000000000..4e3cd237c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Tether/BurstTetherConstraintsBatch.cs @@ -0,0 +1,141 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using System.Collections; + +namespace Obi +{ + public class BurstTetherConstraintsBatch : BurstConstraintsBatchImpl, ITetherConstraintsBatchImpl + { + private NativeArray maxLengthScale; + private NativeArray stiffnesses; + + public BurstTetherConstraintsBatch(BurstTetherConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.Tether; + } + + public void SetTetherConstraints(ObiNativeIntList particleIndices, ObiNativeVector2List maxLengthScale, ObiNativeFloatList stiffnesses, ObiNativeFloatList lambdas, int count) + { + this.particleIndices = particleIndices.AsNativeArray(); + this.maxLengthScale = maxLengthScale.AsNativeArray(); + this.stiffnesses = stiffnesses.AsNativeArray(); + this.lambdas = lambdas.AsNativeArray(); + m_ConstraintCount = count; + } + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + var projectConstraints = new TetherConstraintsBatchJob() + { + particleIndices = particleIndices, + maxLengthScale = maxLengthScale, + stiffnesses = stiffnesses, + lambdas = lambdas, + positions = solverImplementation.positions, + invMasses = solverImplementation.invMasses, + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + deltaTimeSqr = substepTime * substepTime + }; + + return projectConstraints.Schedule(m_ConstraintCount, 32, inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + var applyConstraints = new ApplyTetherConstraintsBatchJob() + { + particleIndices = particleIndices, + + positions = solverImplementation.positions, + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + + sorFactor = parameters.SORFactor + }; + + return applyConstraints.Schedule(m_ConstraintCount, 64, inputDeps); + } + + [BurstCompile] + public struct TetherConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray particleIndices; + [ReadOnly] public NativeArray maxLengthScale; + [ReadOnly] public NativeArray stiffnesses; + public NativeArray lambdas; + + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray invMasses; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray counts; + + [ReadOnly] public float deltaTimeSqr; + + public void Execute(int i) + { + int p1 = particleIndices[i * 2]; + int p2 = particleIndices[i * 2 + 1]; + + float w1 = invMasses[p1]; + float w2 = invMasses[p2]; + + // calculate time adjusted compliance + float compliance = stiffnesses[i] / deltaTimeSqr; + + // calculate position and lambda deltas: + float4 distance = positions[p1] - positions[p2]; + float d = math.length(distance); + + // calculate constraint value (distance - rest length) + float constraint = d - (maxLengthScale[i].x * maxLengthScale[i].y); + + if (constraint > 0) + { + // calculate lambda and position deltas: + float dlambda = (-constraint - compliance * lambdas[i]) / (w1 + w2 + compliance + BurstMath.epsilon); + float4 delta = dlambda * distance / (d + BurstMath.epsilon); + lambdas[i] += dlambda; + deltas[p1] += delta * w1; + counts[p1]++; + } + } + } + + [BurstCompile] + public struct ApplyTetherConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeSlice particleIndices; + + // linear/position properties: + [NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableParallelForRestriction] public NativeArray counts; + + [ReadOnly] public float sorFactor; + + public void Execute(int index) + { + // only the first particle out of each pair is affected: + int i = particleIndices[index * 2]; + + if (counts[i] > 0) + { + positions[i] += deltas[i] * sorFactor / counts[i]; + deltas[i] = float4.zero; + counts[i] = 0; + } + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Tether/BurstTetherConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Tether/BurstTetherConstraintsBatch.cs.meta new file mode 100644 index 000000000..ef9db3d30 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Tether/BurstTetherConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0333dee6dab0c40a9abc35796d0fd99a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Volume.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Volume.meta new file mode 100644 index 000000000..40b34b228 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Volume.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0b17a4f4853654722be7ce3458a4ce7a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Volume/BurstVolumeConstraints.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Volume/BurstVolumeConstraints.cs new file mode 100644 index 000000000..aae0fa86f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Volume/BurstVolumeConstraints.cs @@ -0,0 +1,26 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; + +namespace Obi +{ + public class BurstVolumeConstraints : BurstConstraintsImpl + { + public BurstVolumeConstraints(BurstSolverImpl solver) : base(solver, Oni.ConstraintType.Volume) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var dataBatch = new BurstVolumeConstraintsBatch(this); + batches.Add(dataBatch); + return dataBatch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + batches.Remove(batch as BurstVolumeConstraintsBatch); + batch.Destroy(); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Volume/BurstVolumeConstraints.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Volume/BurstVolumeConstraints.cs.meta new file mode 100644 index 000000000..9aceba9bd --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Volume/BurstVolumeConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 54b3de3345cef43db9f6b37df8cafabb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Volume/BurstVolumeConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Volume/BurstVolumeConstraintsBatch.cs new file mode 100644 index 000000000..6d49fcd21 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Volume/BurstVolumeConstraintsBatch.cs @@ -0,0 +1,220 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using System.Collections; + +namespace Obi +{ + public class BurstVolumeConstraintsBatch : BurstConstraintsBatchImpl, IVolumeConstraintsBatchImpl + { + private NativeArray firstTriangle; + private NativeArray numTriangles; + private NativeArray restVolumes; + private NativeArray pressureStiffness; + + public BurstVolumeConstraintsBatch(BurstVolumeConstraints constraints) + { + m_Constraints = constraints; + m_ConstraintType = Oni.ConstraintType.Volume; + } + + public void SetVolumeConstraints(ObiNativeIntList triangles, + ObiNativeIntList firstTriangle, + ObiNativeIntList numTriangles, + ObiNativeFloatList restVolumes, + ObiNativeVector2List pressureStiffness, + ObiNativeFloatList lambdas, + int count) + { + this.particleIndices = triangles.AsNativeArray(); + this.firstTriangle = firstTriangle.AsNativeArray(); + this.numTriangles = numTriangles.AsNativeArray(); + this.restVolumes = restVolumes.AsNativeArray(); + this.pressureStiffness = pressureStiffness.AsNativeArray(); + this.lambdas = lambdas.AsNativeArray(); + m_ConstraintCount = count; + } + + + public override JobHandle Evaluate(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + var projectConstraints = new VolumeConstraintsBatchJob() + { + triangles = particleIndices, + firstTriangle = firstTriangle, + numTriangles = numTriangles, + restVolumes = restVolumes, + pressureStiffness = pressureStiffness, + lambdas = lambdas, + + positions = solverImplementation.positions, + invMasses = solverImplementation.invMasses, + + gradients = solverImplementation.fluidData, // reuse fluidData for temp gradients. + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + + deltaTimeSqr = substepTime * substepTime + }; + + return projectConstraints.Schedule(m_ConstraintCount, 4, inputDeps); + } + + public override JobHandle Apply(JobHandle inputDeps, float substepTime) + { + var parameters = solverAbstraction.GetConstraintParameters(m_ConstraintType); + + var applyConstraints = new ApplyVolumeConstraintsBatchJob() + { + triangles = particleIndices, + firstTriangle = firstTriangle, + numTriangles = numTriangles, + positions = solverImplementation.positions, + deltas = solverImplementation.positionDeltas, + counts = solverImplementation.positionConstraintCounts, + + sorFactor = parameters.SORFactor + }; + + return applyConstraints.Schedule(m_ConstraintCount, 8, inputDeps); + } + + [BurstCompile] + public struct VolumeConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray triangles; + [ReadOnly] public NativeArray firstTriangle; + [ReadOnly] public NativeArray numTriangles; + [ReadOnly] public NativeArray restVolumes; + [ReadOnly] public NativeArray pressureStiffness; + public NativeArray lambdas; + + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray invMasses; + + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray gradients; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction][NativeDisableParallelForRestriction] public NativeArray counts; + + [ReadOnly] public float deltaTimeSqr; + + public void Execute(int i) + { + float compliance = pressureStiffness[i].y / deltaTimeSqr; + + NativeList particleIndices = new NativeList(numTriangles[i] * 3, Allocator.Temp); + + // calculate volume: + float volume = 0; + for (int j = 0; j < numTriangles[i]; ++j) + { + int v = (firstTriangle[i] + j) * 3; + int i1 = triangles[v]; + int i2 = triangles[v + 1]; + int i3 = triangles[v + 2]; + + particleIndices.Add(i1); + particleIndices.Add(i2); + particleIndices.Add(i3); + + //calculate this triangle's volume contribution: + volume += math.dot(math.cross(positions[i1].xyz, positions[i2].xyz), positions[i3].xyz) / 6.0f; + } + + particleIndices.Sort(); + int particleCount = particleIndices.AsArray().Unique(); + + // accumulate particle gradients: + for (int j = 0; j < particleCount; ++j) + gradients[particleIndices[j]] = float4.zero; + + for (int j = 0; j < numTriangles[i]; ++j) + { + int v = (firstTriangle[i] + j) * 3; + int i1 = triangles[v]; + int i2 = triangles[v + 1]; + int i3 = triangles[v + 2]; + + //accumulate gradient for each particle: + gradients[i1] += new float4(math.cross(positions[i2].xyz, positions[i3].xyz), 0); + gradients[i2] += new float4(math.cross(positions[i3].xyz, positions[i1].xyz), 0); + gradients[i3] += new float4(math.cross(positions[i1].xyz, positions[i2].xyz), 0); + } + + // calculate constraint denominator (G(Cj)*inv(M)): + float denominator = 0; + for (int j = 0; j < particleCount; ++j) + { + int p = particleIndices[j]; + denominator += invMasses[p] * math.lengthsq(gradients[p]); + } + + // equality constraint: volume - pressure * rest volume = 0 + float constraint = volume - pressureStiffness[i].x * restVolumes[i]; + + // calculate lagrange multiplier delta: + float dlambda = (-constraint - compliance * lambdas[i]) / (denominator + compliance + BurstMath.epsilon); + lambdas[i] += dlambda; + + // calculate position deltas: + for (int j = 0; j < particleCount; ++j) + { + int p = particleIndices[j]; + deltas[p] += dlambda * invMasses[p] * gradients[p]; + counts[p]++; + } + } + } + + [BurstCompile] + public struct ApplyVolumeConstraintsBatchJob : IJobParallelFor + { + [ReadOnly] public NativeArray triangles; + [ReadOnly] public NativeArray firstTriangle; + [ReadOnly] public NativeArray numTriangles; + [ReadOnly] public float sorFactor; + + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray deltas; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray counts; + + public void Execute(int i) + { + + for (int j = 0; j < numTriangles[i]; ++j) + { + int v = (firstTriangle[i] + j) * 3; + int p1 = triangles[v]; + int p2 = triangles[v + 1]; + int p3 = triangles[v + 2]; + + if (counts[p1] > 0) + { + positions[p1] += deltas[p1] * sorFactor / counts[p1]; + deltas[p1] = float4.zero; + counts[p1] = 0; + } + + if (counts[p2] > 0) + { + positions[p2] += deltas[p2] * sorFactor / counts[p2]; + deltas[p2] = float4.zero; + counts[p2] = 0; + } + + if (counts[p3] > 0) + { + positions[p3] += deltas[p3] * sorFactor / counts[p3]; + deltas[p3] = float4.zero; + counts[p3] = 0; + } + } + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Volume/BurstVolumeConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Volume/BurstVolumeConstraintsBatch.cs.meta new file mode 100644 index 000000000..cff4f91be --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Constraints/Volume/BurstVolumeConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7074d2203034e432a8b88a3b3018283a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures.meta new file mode 100644 index 000000000..0c37e0436 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7d7a8ea58f9a3403e9147d6d8874db86 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstAabb.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstAabb.cs new file mode 100644 index 000000000..a02213b38 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstAabb.cs @@ -0,0 +1,156 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Mathematics; + +namespace Obi +{ + public struct BurstAabb + { + public float4 min; + public float4 max; + + public float4 size + { + get { return max - min; } + } + + public float4 center + { + get { return min + (max - min) * 0.5f; } + } + + public BurstAabb(float4 min, float4 max) + { + this.min = min; + this.max = max; + } + + public BurstAabb(float4 v1, float4 v2, float4 v3, float margin) + { + min = math.min(math.min(v1, v2), v3) - new float4(margin, margin, margin, 0); + max = math.max(math.max(v1, v2), v3) + new float4(margin, margin, margin, 0); + } + + public BurstAabb(float2 v1, float2 v2, float margin) + { + min = new float4(math.min(v1, v2) - new float2(margin, margin),0,0); + max = new float4(math.max(v1, v2) + new float2(margin, margin),0,0); + } + + public BurstAabb(float4 previousPosition, float4 position, float radius) + { + min = math.min(position - radius, previousPosition - radius); + max = math.max(position + radius, previousPosition + radius); + } + + public float AverageAxisLength() + { + float4 d = max - min; + return (d.x + d.y + d.z) * 0.33f; + } + + public float MaxAxisLength() + { + return math.cmax(max - min); + } + + public void EncapsulateParticle(float4 position, float radius) + { + min = math.min(min, position - radius); + max = math.max(max, position + radius); + } + + public void EncapsulateParticle(float4 previousPosition, float4 position, float radius) + { + min = math.min(math.min(min, position - radius), previousPosition - radius); + max = math.max(math.max(max, position + radius), previousPosition + radius); + } + + public void EncapsulateBounds(in BurstAabb bounds) + { + min = math.min(min,bounds.min); + max = math.max(max,bounds.max); + } + + public void Expand(float4 amount) + { + min -= amount; + max += amount; + } + + public void Sweep(float4 velocity) + { + min = math.min(min, min + velocity); + max = math.max(max, max + velocity); + } + + public void Transform(in BurstAffineTransform transform) + { + Transform(float4x4.TRS(transform.translation.xyz, transform.rotation, transform.scale.xyz)); + } + + public void Transform(in float4x4 transform) + { + float3 xa = transform.c0.xyz * min.x; + float3 xb = transform.c0.xyz * max.x; + + float3 ya = transform.c1.xyz * min.y; + float3 yb = transform.c1.xyz * max.y; + + float3 za = transform.c2.xyz * min.z; + float3 zb = transform.c2.xyz * max.z; + + min = new float4(math.min(xa, xb) + math.min(ya, yb) + math.min(za, zb) + transform.c3.xyz, 0); + max = new float4(math.max(xa, xb) + math.max(ya, yb) + math.max(za, zb) + transform.c3.xyz, 0); + } + + public BurstAabb Transformed(in BurstAffineTransform transform) + { + var cpy = this; + cpy.Transform(transform); + return cpy; + } + + public BurstAabb Transformed(in float4x4 transform) + { + var cpy = this; + cpy.Transform(transform); + return cpy; + } + + public bool IntersectsAabb(in BurstAabb bounds, bool in2D = false) + { + if (in2D) + return (min[0] <= bounds.max[0] && max[0] >= bounds.min[0]) && + (min[1] <= bounds.max[1] && max[1] >= bounds.min[1]); + + return (min[0] <= bounds.max[0] && max[0] >= bounds.min[0]) && + (min[1] <= bounds.max[1] && max[1] >= bounds.min[1]) && + (min[2] <= bounds.max[2] && max[2] >= bounds.min[2]); + } + + public bool IntersectsRay(float4 origin, float4 inv_dir, bool in2D = false) + { + float4 t1 = (min - origin) * inv_dir; + float4 t2 = (max - origin) * inv_dir; + + float4 tmin1 = math.min(t1,t2); + float4 tmax1 = math.max(t1,t2); + + float tmin, tmax; + + if (in2D) + { + tmin = math.cmax(tmin1.xy); + tmax = math.cmin(tmax1.xy); + } + else + { + tmin = math.cmax(tmin1.xyz); + tmax = math.cmin(tmax1.xyz); + } + + return tmax >= math.max(0, tmin) && tmin <= 1; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstAabb.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstAabb.cs.meta new file mode 100644 index 000000000..e9a0ee4e2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstAabb.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2766a51cbde7a4fe490989456f737d23 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstAffineTransform.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstAffineTransform.cs new file mode 100644 index 000000000..cda36e3f0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstAffineTransform.cs @@ -0,0 +1,88 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Mathematics; +using System.Collections; + +namespace Obi +{ + public struct BurstAffineTransform + { + public float4 translation; + public float4 scale; + public quaternion rotation; + + public BurstAffineTransform(float4 translation, quaternion rotation, float4 scale) + { + // make sure there are good values in the 4th component: + translation[3] = 0; + scale[3] = 1; + + this.translation = translation; + this.rotation = rotation; + this.scale = scale; + } + + public static BurstAffineTransform operator *(BurstAffineTransform a, BurstAffineTransform b) + { + return new BurstAffineTransform(a.TransformPoint(b.translation), + math.mul(a.rotation,b.rotation), + a.scale * b.scale); + } + + public BurstAffineTransform Inverse() + { + return new BurstAffineTransform(new float4(math.rotate(math.conjugate(rotation),(translation / -scale).xyz),0), + math.conjugate(rotation), + 1 / scale); + } + + public BurstAffineTransform Interpolate(BurstAffineTransform other, float translationalMu, float rotationalMu, float scaleMu) + { + return new BurstAffineTransform(math.lerp(translation, other.translation, translationalMu), + math.slerp(rotation, other.rotation, rotationalMu), + math.lerp(scale, other.scale, scaleMu)); + } + + public float4 TransformPoint(float4 point) + { + return new float4(translation.xyz + math.rotate(rotation, (point * scale).xyz),0); + } + + public float4 InverseTransformPoint(float4 point) + { + return new float4(math.rotate(math.conjugate(rotation),(point - translation).xyz) / scale.xyz , 0); + } + + public float4 TransformPointUnscaled(float4 point) + { + return new float4(translation.xyz + math.rotate(rotation,point.xyz), 0); + } + + public float4 InverseTransformPointUnscaled(float4 point) + { + return new float4(math.rotate(math.conjugate(rotation), (point - translation).xyz), 0); + } + + + public float4 TransformDirection(float4 direction) + { + return new float4(math.rotate(rotation, direction.xyz), 0); + } + + public float4 InverseTransformDirection(float4 direction) + { + return new float4(math.rotate(math.conjugate(rotation), direction.xyz), 0); + } + + public float4 TransformVector(float4 vector) + { + return new float4(math.rotate(rotation, (vector * scale).xyz), 0); + } + + public float4 InverseTransformVector(float4 vector) + { + return new float4(math.rotate(math.conjugate(rotation),vector.xyz) / scale.xyz, 0); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstAffineTransform.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstAffineTransform.cs.meta new file mode 100644 index 000000000..f5c311f19 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstAffineTransform.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 42d935e53ff25405bb572c630431a08e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstCellSpan.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstCellSpan.cs new file mode 100644 index 000000000..beadf1007 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstCellSpan.cs @@ -0,0 +1,60 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Mathematics; +using System.Collections; +using System; + +namespace Obi +{ + public struct BurstCellSpan : IEquatable + { + public int4 min; + public int4 max; + + + public BurstCellSpan(CellSpan span) + { + this.min = new int4(span.min.x, span.min.y, span.min.z, span.min.w); + this.max = new int4(span.max.x, span.max.y, span.max.z, span.max.w); + } + + public BurstCellSpan(int4 min, int4 max) + { + this.min = min; + this.max = max; + } + + public int level + { + get{return min.w;} + } + + public bool Equals(BurstCellSpan other) + { + return min.Equals(other.min) && max.Equals(other.max); + } + + public override bool Equals(object obj) + { + return this.Equals((BurstCellSpan)obj); + } + + public override int GetHashCode() + { + return 0; // we don't have any non-mutable fields, so just return 0. + } + + public static bool operator ==(BurstCellSpan a, BurstCellSpan b) + { + return a.Equals(b); + } + + public static bool operator !=(BurstCellSpan a, BurstCellSpan b) + { + return !a.Equals(b); + } + + + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstCellSpan.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstCellSpan.cs.meta new file mode 100644 index 000000000..a574d71c4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstCellSpan.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9612a967e340a428ba9353b922a881be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstCollisionMaterial.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstCollisionMaterial.cs new file mode 100644 index 000000000..6bb3d5994 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstCollisionMaterial.cs @@ -0,0 +1,78 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Mathematics; +using System.Collections; +using System; + +namespace Obi +{ + public struct BurstCollisionMaterial // TODO: use CollisionMaterial directly. + { + public float dynamicFriction; + public float staticFriction; + public float rollingFriction; + public float stickiness; + public float stickDistance; + public Oni.MaterialCombineMode frictionCombine; + public Oni.MaterialCombineMode stickinessCombine; + public int rollingContacts; + + public static BurstCollisionMaterial CombineWith(BurstCollisionMaterial a, BurstCollisionMaterial b) + { + BurstCollisionMaterial result = new BurstCollisionMaterial(); + var frictionCombineMode = (Oni.MaterialCombineMode)math.max((int)a.frictionCombine, (int)b.frictionCombine); + var stickCombineMode = (Oni.MaterialCombineMode)math.max((int)a.stickinessCombine, (int)b.stickinessCombine); + + switch (frictionCombineMode) + { + case Oni.MaterialCombineMode.Average: + result.dynamicFriction = (a.dynamicFriction + b.dynamicFriction) * 0.5f; + result.staticFriction = (a.staticFriction + b.staticFriction) * 0.5f; + result.rollingFriction = (a.rollingFriction + b.rollingFriction) * 0.5f; + break; + + case Oni.MaterialCombineMode.Minimum: + result.dynamicFriction = math.min(a.dynamicFriction, b.dynamicFriction); + result.staticFriction = math.min(a.staticFriction, b.staticFriction); + result.rollingFriction = math.min(a.rollingFriction, b.rollingFriction); + break; + + case Oni.MaterialCombineMode.Maximum: + result.dynamicFriction = math.max(a.dynamicFriction, b.dynamicFriction); + result.staticFriction = math.max(a.staticFriction, b.staticFriction); + result.rollingFriction = math.max(a.rollingFriction, b.rollingFriction); + break; + + case Oni.MaterialCombineMode.Multiply: + result.dynamicFriction = a.dynamicFriction * b.dynamicFriction; + result.staticFriction = a.staticFriction * b.staticFriction; + result.rollingFriction = a.rollingFriction * b.rollingFriction; + break; + } + + switch (stickCombineMode) + { + case Oni.MaterialCombineMode.Average: + result.stickiness = (a.stickiness + b.stickiness) * 0.5f; + break; + + case Oni.MaterialCombineMode.Minimum: + result.stickiness = math.min(a.stickiness, b.stickiness); + break; + + case Oni.MaterialCombineMode.Maximum: + result.stickiness = math.max(a.stickiness, b.stickiness); + break; + + case Oni.MaterialCombineMode.Multiply: + result.stickiness = a.stickiness * b.stickiness; + break; + } + + result.stickDistance = math.max(a.stickDistance, b.stickDistance); + result.rollingContacts = a.rollingContacts | b.rollingContacts; + return result; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstCollisionMaterial.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstCollisionMaterial.cs.meta new file mode 100644 index 000000000..0adfc9556 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstCollisionMaterial.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: de388c94a975a489a8093d110d42af2a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstInertialFrame.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstInertialFrame.cs new file mode 100644 index 000000000..a49d7d566 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstInertialFrame.cs @@ -0,0 +1,60 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Mathematics; +using System.Collections; + +namespace Obi +{ + public struct BurstInertialFrame + { + public BurstAffineTransform frame; + public BurstAffineTransform prevFrame; + + public float4 velocity; + public float4 angularVelocity; + + public float4 acceleration; + public float4 angularAcceleration; + + public BurstInertialFrame(float4 position, float4 scale, quaternion rotation) + { + this.frame = new BurstAffineTransform(position, rotation, scale); + this.prevFrame = frame; + + velocity = float4.zero; + angularVelocity = float4.zero; + acceleration = float4.zero; + angularAcceleration = float4.zero; + } + + public BurstInertialFrame(BurstAffineTransform frame) + { + this.frame = frame; + this.prevFrame = frame; + + velocity = float4.zero; + angularVelocity = float4.zero; + acceleration = float4.zero; + angularAcceleration = float4.zero; + } + + public void Update(float4 position, float4 scale, quaternion rotation, float dt) + { + prevFrame = frame; + float4 prevVelocity = velocity; + float4 prevAngularVelocity = angularVelocity; + + frame.translation = position; + frame.rotation = rotation; + frame.scale = scale; + + velocity = BurstIntegration.DifferentiateLinear(frame.translation, prevFrame.translation, dt); + angularVelocity = BurstIntegration.DifferentiateAngular(frame.rotation, prevFrame.rotation, dt); + + acceleration = BurstIntegration.DifferentiateLinear(velocity, prevVelocity, dt); + angularAcceleration = BurstIntegration.DifferentiateLinear(angularVelocity, prevAngularVelocity, dt); + } + + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstInertialFrame.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstInertialFrame.cs.meta new file mode 100644 index 000000000..f48cd9ee5 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstInertialFrame.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3c3b9a94006d4984a94f040e6d2c737 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstQueryShape.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstQueryShape.cs new file mode 100644 index 000000000..39f7cf90c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstQueryShape.cs @@ -0,0 +1,16 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Mathematics; + +namespace Obi +{ + public struct BurstQueryShape + { + public float4 center; + public float4 size; + public QueryShape.QueryType type; + public float contactOffset; + public float distance; + public int filter; + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstQueryShape.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstQueryShape.cs.meta new file mode 100644 index 000000000..538a4ca17 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstQueryShape.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1407a04be79f44be6a770255e8e89195 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstRigidbody.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstRigidbody.cs new file mode 100644 index 000000000..6406cc850 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstRigidbody.cs @@ -0,0 +1,23 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; +using UnityEngine; +using Unity.Collections; +using Unity.Mathematics; + +namespace Obi +{ + + public struct BurstRigidbody + { + public float4x4 inverseInertiaTensor; + public float4 velocity; + public float4 angularVelocity; + public float4 com; + public float inverseMass; + + private int pad0; + private int pad1; + private int pad2; + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstRigidbody.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstRigidbody.cs.meta new file mode 100644 index 000000000..9487b1865 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/BurstRigidbody.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f72992ee9e3174e89b3c0e5b6da57a17 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher.meta new file mode 100644 index 000000000..528067dd2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 20b822fd4fe494009afa17025c273ec8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/BatchLUT.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/BatchLUT.cs new file mode 100644 index 000000000..509d7fe8a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/BatchLUT.cs @@ -0,0 +1,49 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; +using UnityEngine; +using Unity.Collections; + +namespace Obi +{ + public struct BatchLUT : IDisposable + { + public readonly int numBatches; + public readonly NativeArray batchIndex; + + public BatchLUT(int numBatches) + { + this.numBatches = numBatches; + + batchIndex = new NativeArray(UInt16.MaxValue + 1, Allocator.Persistent, NativeArrayOptions.ClearMemory); + const ushort end = UInt16.MaxValue; + ushort numBits = (ushort)(numBatches - 1); + + // For each entry in the table, compute the position of the first '0' bit in the index, starting from the less significant bit. + // This is the index of the first batch where we can add the constraint to. + + for (ushort value = 0; value < end; value++) + { + ushort valueCopy = value; + for (ushort i = 0; i < numBits; i++) + { + if ((valueCopy & 1) == 0) + { + batchIndex[value] = i; + break; + } + valueCopy >>= 1; + } + + } + + batchIndex[end] = numBits; + } + + public void Dispose() + { + batchIndex.Dispose(); + } + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/BatchLUT.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/BatchLUT.cs.meta new file mode 100644 index 000000000..60a9f235c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/BatchLUT.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0ba613bda78be4a71be94b90f92fbde5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ConstraintBatcher.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ConstraintBatcher.cs new file mode 100644 index 000000000..f1fcfb1f9 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ConstraintBatcher.cs @@ -0,0 +1,216 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Burst; +using Unity.Jobs; + +namespace Obi +{ + + public struct BatchData + { + public ushort batchID; // Batch identifier. All bits will be '0', except for the one at the position of the batch. + + public int startIndex; // first constraint in the batch + public int constraintCount; // amount of constraints in the batch. + public int activeConstraintCount; // auxiliar counter used to sort the constraints in linear time. + + public int workItemSize; // size of each work item. + public int workItemCount; // number of work items. + public bool isLast; + + public BatchData(int index, int maxBatches) + { + batchID = (ushort)(1 << index); + isLast = index == (maxBatches - 1); + constraintCount = 0; + activeConstraintCount = 0; + + startIndex = 0; + workItemSize = 0; + workItemCount = 0; + } + + public void GetConstraintRange(int workItemIndex, out int start, out int end) + { + start = startIndex + workItemSize * workItemIndex; + end = startIndex + math.min(constraintCount, workItemSize * (workItemIndex + 1)); + } + + } + + public unsafe struct WorkItem + { + public const int minWorkItemSize = 64; + public fixed int constraints[minWorkItemSize]; + public int constraintCount; + + public bool Add(int constraintIndex) + { + // add the constraint to this work item. + fixed (int* constraintIndices = constraints) + { + constraintIndices[constraintCount] = constraintIndex; + } + + // if we've completed the work item, close it and reuse for the next one. + return (++constraintCount == minWorkItemSize); + } + } + + public struct ConstraintBatcher : IDisposable where T : struct, IConstraintProvider + { + public int maxBatches; + private BatchLUT batchLUT; // look up table for batch indices. + + public ConstraintBatcher(int maxBatches) + { + this.maxBatches = math.min(17, maxBatches); + batchLUT = new BatchLUT(this.maxBatches); + } + + public void Dispose() + { + batchLUT.Dispose(); + } + + /** + * Linear-time graph coloring using bitmasks and a look-up table. Used to organize contacts into batches for parallel processing. + * input: array of unsorted constraints. + * output: + * - sorted constraint indices array. + * - array of batchData, one per batch: startIndex, batchSize, workItemSize (at most == batchSize), numWorkItems + * - number of active batches. + */ + + public JobHandle BatchConstraints(ref T constraintDesc, + int particleCount, + ref NativeArray batchData, + ref NativeArray activeBatchCount, + JobHandle inputDeps) + { + if (activeBatchCount.Length != 1) + return inputDeps; + + var batchJob = new BatchContactsJob + { + batchMasks = new NativeArray(particleCount, Allocator.TempJob, NativeArrayOptions.ClearMemory), + batchIndices = new NativeArray(constraintDesc.GetConstraintCount(), Allocator.TempJob, NativeArrayOptions.ClearMemory), + lut = batchLUT, + constraintDesc = constraintDesc, + batchData = batchData, + activeBatchCount = activeBatchCount, + maxBatches = maxBatches + }; + + return batchJob.Schedule(inputDeps); + } + + [BurstCompile] + private struct BatchContactsJob : IJob + { + [DeallocateOnJobCompletion] + public NativeArray batchMasks; + + [DeallocateOnJobCompletion] + public NativeArray batchIndices; + + [ReadOnly] public BatchLUT lut; + public T constraintDesc; + public NativeArray batchData; + public NativeArray activeBatchCount; + + public int maxBatches; + + public unsafe void Execute() + { + // Initialize batch data array + for (int i = 0; i < batchData.Length; ++i) + batchData[i] = new BatchData(i, maxBatches); + + // temporary array containing an open work item for each batch. + WorkItem* workItems = stackalloc WorkItem[maxBatches]; + for (int i = 0; i < maxBatches; i++) + workItems[i] = new WorkItem(); + + int constraintCount = constraintDesc.GetConstraintCount(); + + // find a batch for each constraint: + for (int i = 0; i < constraintCount; ++i) + { + // OR together the batch masks of all entities involved in the constraint: + int batchMask = 0; + for (int k = 0; k < constraintDesc.GetParticleCount(i); ++k) + batchMask |= batchMasks[constraintDesc.GetParticle(i, k)]; + + // look up the first free batch index for this constraint: + int batchIndex = batchIndices[i] = lut.batchIndex[batchMask]; + + // update the amount of constraints in the batch: + var batch = batchData[batchIndex]; + batch.constraintCount++; + batchData[batchIndex] = batch; + + // add the constraint to the last work item of the batch: + if (workItems[batchIndex].Add(i)) + { + // if this work item does not belong to the last batch: + if (batchIndex != maxBatches - 1) + { + // tag all entities in the work item with the batch mask to close it. + // this way we know constraints referencing any of these entities can no longer be added to this batch. + for (int j = 0; j < workItems[batchIndex].constraintCount; j++) + { + int constraint = workItems[batchIndex].constraints[j]; + + for (int k = 0; k < constraintDesc.GetParticleCount(constraint); ++k) + batchMasks[constraintDesc.GetParticle(constraint, k)] |= batch.batchID; + } + } + + // reuse the work item. + workItems[batchIndex].constraintCount = 0; + } + + } + + // fill batch data: + activeBatchCount[0] = 0; + int numConstraints = 0; + for (int i = 0; i < batchData.Length; ++i) + { + var batch = batchData[i]; + + // bail out when we find the first empty batch: + if (batch.constraintCount == 0) + break; + + // calculate work item size, count, and index of the first constraint + batch.workItemSize = math.min(WorkItem.minWorkItemSize, batch.constraintCount); + batch.workItemCount = (batch.constraintCount + batch.workItemSize - 1) / batch.workItemSize; + batch.startIndex = numConstraints; + + numConstraints += batch.constraintCount; + activeBatchCount[0]++; + + batchData[i] = batch; + } + + // write out sorted constraint indices: + for (int i = 0; i < constraintCount; ++i) + { + var batch = batchData[batchIndices[i]]; + int sortedIndex = batch.startIndex + (batch.activeConstraintCount++); + constraintDesc.WriteSortedConstraint(i, sortedIndex); + batchData[batchIndices[i]] = batch; + } + + } + + + } + + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ConstraintBatcher.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ConstraintBatcher.cs.meta new file mode 100644 index 000000000..7b2143c67 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ConstraintBatcher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f15c420c952f4f689684489a7de8920 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ConstraintSorter.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ConstraintSorter.cs new file mode 100644 index 000000000..f15939bf9 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ConstraintSorter.cs @@ -0,0 +1,160 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; +using System.Collections.Generic; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Burst; +using Unity.Jobs; + +namespace Obi +{ + public class ConstraintSorter where T : unmanaged, IConstraint + { + + public struct ConstraintComparer : IComparer where K : IConstraint + { + // Compares by Height, Length, and Width. + public int Compare(K x, K y) + { + return x.GetParticle(1).CompareTo(y.GetParticle(1)); + } + } + + /** + * Performs a single-threaded count sort on the constraints array using the first particle index, + * then multiple parallel sorts over slices of the original array sorting by the second particle index. + */ + public JobHandle SortConstraints(int particleCount, + NativeArray constraints, + ref NativeArray sortedConstraints, + JobHandle handle) + { + // Count the amount of digits in the largest particle index that can be referenced by a constraint: + NativeArray totalCountUpToDigit = new NativeArray(particleCount + 1, Allocator.TempJob); + int numDigits = 0; + int maxBodyIndex = particleCount - 1; + { + int val = maxBodyIndex; + while (val > 0) + { + val >>= 1; + numDigits++; + } + } + + handle = new CountSortPerFirstParticleJob + { + input = constraints, + output = sortedConstraints, + maxDigits = numDigits, + maxIndex = maxBodyIndex, + digitCount = totalCountUpToDigit + }.Schedule(handle); + + // Sort sub arrays with default sort. + int numPerBatch = math.max(1, maxBodyIndex / 32); + + handle = new SortSubArraysJob + { + InOutArray = sortedConstraints, + NextElementIndex = totalCountUpToDigit, + comparer = new ConstraintComparer() + }.Schedule(totalCountUpToDigit.Length, numPerBatch, handle); + + return handle; + } + + [BurstCompile] + public struct CountSortPerFirstParticleJob : IJob + { + [ReadOnly] [NativeDisableContainerSafetyRestriction] public NativeArray input; + public NativeArray output; + + [NativeDisableContainerSafetyRestriction] public NativeArray digitCount; + + public int maxDigits; + public int maxIndex; + + public void Execute() + { + // no real need for a mask, just in case bad particle indices were passed that have more digits than maxDigits. + int mask = (1 << maxDigits) - 1; + + // Count digits + for (int i = 0; i < input.Length; i++) + { + digitCount[input[i].GetParticle(0) & mask]++; + } + + // Calculate start index for each digit + int prev = digitCount[0]; + digitCount[0] = 0; + for (int i = 1; i <= maxIndex; i++) + { + int current = digitCount[i]; + digitCount[i] = digitCount[i - 1] + prev; + prev = current; + } + + // Copy elements into buckets based on particle index + for (int i = 0; i < input.Length; i++) + { + int index = digitCount[input[i].GetParticle(0) & mask]++; + if (index == 1 && input.Length == 1) + { + output[0] = input[0]; + } + output[index] = input[i]; + } + } + } + + // Sorts slices of an array in parallel + [BurstCompile] + public struct SortSubArraysJob : IJobParallelFor + { + [NativeDisableContainerSafetyRestriction] public NativeArray InOutArray; + + // Typically lastDigitIndex is resulting RadixSortPerBodyAJob.digitCount. nextElementIndex[i] = index of first element with bodyA index == i + 1 + [NativeDisableContainerSafetyRestriction] [DeallocateOnJobCompletion] public NativeArray NextElementIndex; + + [ReadOnly] public ConstraintComparer comparer; + + public void Execute(int workItemIndex) + { + int startIndex = 0; + if (workItemIndex > 0) + { + startIndex = NextElementIndex[workItemIndex - 1]; + } + + if (startIndex < InOutArray.Length) + { + int length = NextElementIndex[workItemIndex] - startIndex; + DefaultSortOfSubArrays(InOutArray, startIndex, length, comparer); + } + } + + public static void DefaultSortOfSubArrays(NativeArray inOutArray, int startIndex, int length, ConstraintComparer comparer) + { + if (length > 2) + { + var slice = inOutArray.Slice(startIndex, length); + slice.Sort(comparer); + } + else if (length == 2) // just swap: + { + if (inOutArray[startIndex].GetParticle(1) > inOutArray[startIndex + 1].GetParticle(1)) + { + var temp = inOutArray[startIndex + 1]; + inOutArray[startIndex + 1] = inOutArray[startIndex]; + inOutArray[startIndex] = temp; + } + } + } + } + + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ConstraintSorter.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ConstraintSorter.cs.meta new file mode 100644 index 000000000..f96538a00 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ConstraintSorter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4cb7051d5b32442d79da18c47c1fbcc2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ContactProvider.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ContactProvider.cs new file mode 100644 index 000000000..011fecd08 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ContactProvider.cs @@ -0,0 +1,41 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Collections; + +namespace Obi +{ + public struct ContactProvider : IConstraintProvider + { + public NativeArray contacts; + public NativeArray sortedContacts; + public NativeArray simplices; + public SimplexCounts simplexCounts; + + public int GetConstraintCount() + { + return contacts.Length; + } + + public int GetParticleCount(int constraintIndex) + { + simplexCounts.GetSimplexStartAndSize(contacts[constraintIndex].bodyA, out int simplexSizeA); + simplexCounts.GetSimplexStartAndSize(contacts[constraintIndex].bodyB, out int simplexSizeB); + return simplexSizeA + simplexSizeB; + } + public int GetParticle(int constraintIndex, int index) + { + int simplexStartA = simplexCounts.GetSimplexStartAndSize(contacts[constraintIndex].bodyA, out int simplexSizeA); + int simplexStartB = simplexCounts.GetSimplexStartAndSize(contacts[constraintIndex].bodyB, out int simplexSizeB); + if (index < simplexSizeA) + return simplices[simplexStartA + index]; + else + return simplices[simplexStartB + index - simplexSizeA]; + } + + public void WriteSortedConstraint(int constraintIndex, int sortedIndex) + { + sortedContacts[sortedIndex] = contacts[constraintIndex]; + } + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ContactProvider.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ContactProvider.cs.meta new file mode 100644 index 000000000..307657ae4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/ContactProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fec3d78324058457cb723a60fb4858a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/FluidInteractionProvider.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/FluidInteractionProvider.cs new file mode 100644 index 000000000..f6bf87f5f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/FluidInteractionProvider.cs @@ -0,0 +1,32 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Collections; + +namespace Obi +{ + public struct FluidInteractionProvider : IConstraintProvider + { + public NativeArray interactions; + public NativeArray sortedInteractions; + + public int GetConstraintCount() + { + return interactions.Length; + } + + public int GetParticleCount(int constraintIndex) + { + return 2; + } + public int GetParticle(int constraintIndex, int index) + { + return interactions[constraintIndex].GetParticle(index); + } + + public void WriteSortedConstraint(int constraintIndex, int sortedIndex) + { + sortedInteractions[sortedIndex] = interactions[constraintIndex]; + } + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/FluidInteractionProvider.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/FluidInteractionProvider.cs.meta new file mode 100644 index 000000000..1567c7444 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/FluidInteractionProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 66b0d6e3db3c14b929541a23187c393b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/IConstraint.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/IConstraint.cs new file mode 100644 index 000000000..5c1470577 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/IConstraint.cs @@ -0,0 +1,9 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; + +public interface IConstraint +{ + int GetParticleCount(); + int GetParticle(int index); +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/IConstraint.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/IConstraint.cs.meta new file mode 100644 index 000000000..7c631bab9 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/IConstraint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 49760f68f387c45b8b1e5482a6d0dabe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/IConstraintProvider.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/IConstraintProvider.cs new file mode 100644 index 000000000..44cf18600 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/IConstraintProvider.cs @@ -0,0 +1,12 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +namespace Obi +{ + public interface IConstraintProvider + { + int GetConstraintCount(); + int GetParticleCount(int constraintIndex); + int GetParticle(int constraintIndex, int index); + void WriteSortedConstraint(int constraintIndex, int sortedIndex); + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/IConstraintProvider.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/IConstraintProvider.cs.meta new file mode 100644 index 000000000..26f478400 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ConstraintBatcher/IConstraintProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2f9cbc3295db8411ba4ac8c9a75291ec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/FluidInteraction.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/FluidInteraction.cs new file mode 100644 index 000000000..f79ea05b3 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/FluidInteraction.cs @@ -0,0 +1,19 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; +using Unity.Mathematics; + +namespace Obi +{ + public struct FluidInteraction : IConstraint + { + public float4 gradient; + public float avgKernel; + public float avgGradient; + public int particleA; + public int particleB; + + public int GetParticleCount() { return 2; } + public int GetParticle(int index) { return index == 0 ? particleA : particleB; } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/FluidInteraction.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/FluidInteraction.cs.meta new file mode 100644 index 000000000..12b840183 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/FluidInteraction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 98e6b7036ee4a4806b75d155a753b769 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/GridHash.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/GridHash.cs new file mode 100644 index 000000000..c572cea82 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/GridHash.cs @@ -0,0 +1,118 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Mathematics; + +public struct GridHash +{ + public readonly static int3[] cellOffsets3D = + { + new int3(1,0,0), + new int3(0,1,0), + new int3(1,1,0), + new int3(0,0,1), + new int3(1,0,1), + new int3(0,1,1), + new int3(1,1,1), + new int3(-1,1,0), + new int3(-1,-1,1), + new int3(0,-1,1), + new int3(1,-1,1), + new int3(-1,0,1), + new int3(-1,1,1) + }; + + public readonly static int3[] cellOffsets = + { + new int3(0, 0, 0), + new int3(-1, 0, 0), + new int3(0, -1, 0), + new int3(0, 0, -1), + new int3(1, 0, 0), + new int3(0, 1, 0), + new int3(0, 0, 1) + }; + + public readonly static int2[] cell2DOffsets = + { + new int2(0, 0), + new int2(-1, 0), + new int2(0, -1), + new int2(1, 0), + new int2(0, 1), + }; + + public static int Hash(float3 v, float cellSize) + { + return Hash(Quantize(v, cellSize)); + } + + public static int3 Quantize(float3 v, float cellSize) + { + return new int3(math.floor(v / cellSize)); + } + + public static int Hash(float2 v, float cellSize) + { + return Hash(Quantize(v, cellSize)); + } + + public static int2 Quantize(float2 v, float cellSize) + { + return new int2(math.floor(v / cellSize)); + } + + public static int Hash(int3 grid) + { + unchecked + { + // Simple int3 hash based on a pseudo mix of : + // 1) https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + // 2) https://en.wikipedia.org/wiki/Jenkins_hash_function + int hash = grid.x; + hash = (hash * 397) ^ grid.y; + hash = (hash * 397) ^ grid.z; + hash += hash << 3; + hash ^= hash >> 11; + hash += hash << 15; + return hash; + } + } + + public static int Hash(int2 grid) + { + unchecked + { + // Simple int3 hash based on a pseudo mix of : + // 1) https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + // 2) https://en.wikipedia.org/wiki/Jenkins_hash_function + int hash = grid.x; + hash = (hash * 397) ^ grid.y; + hash += hash << 3; + hash ^= hash >> 11; + hash += hash << 15; + return hash; + } + } + + public static ulong Hash(ulong hash, ulong key) + { + const ulong m = 0xc6a4a7935bd1e995UL; + const int r = 47; + + ulong h = hash; + ulong k = key; + + k *= m; + k ^= k >> r; + k *= m; + + h ^= k; + h *= m; + + h ^= h >> r; + h *= m; + h ^= h >> r; + + return h; + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/GridHash.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/GridHash.cs.meta new file mode 100644 index 000000000..8a077a2ed --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/GridHash.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 87666fac08214420abefb36a9166df43 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/NativeMultilevelGrid.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/NativeMultilevelGrid.cs new file mode 100644 index 000000000..c70f198fb --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/NativeMultilevelGrid.cs @@ -0,0 +1,282 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using System.Runtime.CompilerServices; + +namespace Obi +{ + + /** + * MultilevelGrid is the most used spatial partitioning structure in Obi. It is: + * + * - Unbounded: defines no limits on the size of location of space partitioned. + * - Sparse: only allocates memory where space has interesting features to track. + * - Multilevel: can store several levels of spatial subdivision, from very fine to very large. + * - Implicit: the hierarchical relationship between cells is not stored in memory, + * but implicitly derived from the structure itself. + * + * These characteristics make it extremely flexible, memory efficient, and fast. + * Its implementation is also fairly simple and concise. + */ + public unsafe struct NativeMultilevelGrid : IDisposable where T : unmanaged, IEquatable + { + + public const float minSize = 0.01f; + + /** + * A cell in the multilevel grid. Coords are 4-dimensional, the 4th component is the grid level. + */ + public struct Cell where K : unmanaged, IEquatable + { + int4 coords; + UnsafeList contents; + + public Cell(int4 coords) + { + this.coords = coords; + contents = new UnsafeList(4,Allocator.Persistent); + } + + public int4 Coords + { + get { return coords; } + } + + public int Length + { + get { return contents.Length; } + } + + public void* ContentsPointer + { + get { return contents.Ptr; } + } + + public K this[int index] + { + get + { + return UnsafeUtility.ReadArrayElement(contents.Ptr, index); + } + } + + public void Add(K entity) + { + contents.Add(entity); + } + + public bool Remove(K entity) + { + //int index = contents.IndexOf(entity); + int index = -1; + for (int i = 0; i < contents.Length; ++i) + if (contents[i].Equals(entity)) { index = i; break; } + + if (index >= 0) + { + contents.RemoveAtSwapBack(index); + return true; + } + return false; + } + + public void Dispose() + { + contents.Dispose(); + } + } + + public NativeHashMap grid; + public NativeList> usedCells; + public NativeHashMap populatedLevels; + + public NativeMultilevelGrid(int capacity, Allocator label) + { + grid = new NativeHashMap(capacity, label); + usedCells = new NativeList>(label); + populatedLevels = new NativeHashMap(10, label); + } + + public int CellCount + { + get { return usedCells.Length; } + } + + public void Clear() + { + for (int i = 0; i < usedCells.Length; ++i) + usedCells[i].Dispose(); + + grid.Clear(); + usedCells.Clear(); + populatedLevels.Clear(); + } + + public void Dispose() + { + for (int i = 0; i < usedCells.Length; ++i) + usedCells[i].Dispose(); + + grid.Dispose(); + usedCells.Dispose(); + populatedLevels.Dispose(); + } + + public int GetOrCreateCell(int4 cellCoords) + { + int cellIndex; + if (grid.TryGetValue(cellCoords, out cellIndex)) + { + return cellIndex; + } + else + { + grid.TryAdd(cellCoords, usedCells.Length); + usedCells.Add(new Cell(cellCoords)); + + IncreaseLevelPopulation(cellCoords.w); + + return usedCells.Length - 1; + } + } + + public bool TryGetCellIndex(int4 cellCoords, out int cellIndex) + { + return grid.TryGetValue(cellCoords, out cellIndex); + } + + public void RemoveEmpty() + { + // remove empty cells from the used cells list and the grid: + for (int i = usedCells.Length - 1; i >= 0 ; --i) + { + if (usedCells[i].Length == 0) + { + DecreaseLevelPopulation(usedCells[i].Coords.w); + grid.Remove(usedCells[i].Coords); + usedCells[i].Dispose(); + usedCells.RemoveAtSwapBack(i); + } + } + + // update grid indices: + for (int i = 0; i < usedCells.Length; ++i) + { + grid.Remove(usedCells[i].Coords); + grid.TryAdd(usedCells[i].Coords, i); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int GridLevelForSize(float size) + { + // the magic number is 1/log(2) + return (int)math.ceil(math.log(math.max(size,minSize)) * 1.44269504089f); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float CellSizeOfLevel(int level) + { + return math.exp2(level); + } + + /** + * Given a cell coordinate, returns the coordinates of the cell containing it in a superior level. + */ + public static int4 GetParentCellCoords(int4 cellCoords, int level) + { + float decimation = CellSizeOfLevel(level - cellCoords[3]); + int4 cell = (int4)math.floor((float4)cellCoords / decimation); + cell[3] = level; + return cell; + } + + public void RemoveFromCells(BurstCellSpan span, T content) + { + for (int x = span.min[0]; x <= span.max[0]; ++x) + for (int y = span.min[1]; y <= span.max[1]; ++y) + for (int z = span.min[2]; z <= span.max[2]; ++z) + { + int cellIndex; + if (TryGetCellIndex(new int4(x, y, z, span.level), out cellIndex)) + { + var oldCell = usedCells[cellIndex]; + oldCell.Remove(content); + usedCells[cellIndex] = oldCell; + } + } + } + + public void AddToCells(BurstCellSpan span, T content) + { + for (int x = span.min[0]; x <= span.max[0]; ++x) + for (int y = span.min[1]; y <= span.max[1]; ++y) + for (int z = span.min[2]; z <= span.max[2]; ++z) + { + int cellIndex = GetOrCreateCell(new int4(x, y, z, span.level)); + + var newCell = usedCells[cellIndex]; + newCell.Add(content); + usedCells[cellIndex] = newCell; + } + } + + public static void GetCellCoordsForBoundsAtLevel(NativeList coords, BurstAabb bounds, int level, int maxSize = 10) + { + coords.Clear(); + float cellSize = CellSizeOfLevel(level); + + int3 minCell = GridHash.Quantize(bounds.min.xyz, cellSize); + int3 maxCell = GridHash.Quantize(bounds.max.xyz, cellSize); + maxCell = minCell + math.min(maxCell - minCell, new int3(maxSize)); + + int3 size = maxCell - minCell + new int3(1); + + coords.Capacity = size.x * size.y * size.z; + + // TODO: return some sort of iterator trough the cells, not a native array. + for (int x = minCell[0]; x <= maxCell[0]; ++x) + { + for (int y = minCell[1]; y <= maxCell[1]; ++y) + { + for (int z = minCell[2]; z <= maxCell[2]; ++z) + { + coords.Add(new int4(x, y, z, level)); + } + } + } + } + + private void IncreaseLevelPopulation(int level) + { + + int population = 0; + if (populatedLevels.TryGetValue(level, out population)) + { + populatedLevels.Remove(level); + } + + populatedLevels.TryAdd(level, population + 1); + } + + private void DecreaseLevelPopulation(int level) + { + + int population = 0; + if (populatedLevels.TryGetValue(level, out population)) + { + population--; + populatedLevels.Remove(level); + + if (population > 0) + { + populatedLevels.TryAdd(level, population); + } + } + + } + } +} +#endif diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/NativeMultilevelGrid.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/NativeMultilevelGrid.cs.meta new file mode 100644 index 000000000..c1d785721 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/NativeMultilevelGrid.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2745cdd0ade4f4ac0a7ca952c1ad5dd8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ParticleGrid.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ParticleGrid.cs new file mode 100644 index 000000000..5fab570fc --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ParticleGrid.cs @@ -0,0 +1,589 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using System; +using Unity.Collections; +using Unity.Jobs; +using Unity.Mathematics; +using Unity.Burst; + +namespace Obi +{ + public struct MovingEntity + { + public int4 oldCellCoord; + public int4 newCellCoord; + public int entity; + } + + public class ParticleGrid : IDisposable + { + public NativeMultilevelGrid grid; + public NativeQueue particleContactQueue; + public NativeQueue fluidInteractionQueue; + + + [BurstCompile] + struct CalculateCellCoords : IJobParallelFor + { + [ReadOnly] public NativeArray simplexBounds; + public NativeArray cellCoords; + [ReadOnly] public bool is2D; + + public void Execute(int i) + { + int level = NativeMultilevelGrid.GridLevelForSize(simplexBounds[i].AverageAxisLength()); + float cellSize = NativeMultilevelGrid.CellSizeOfLevel(level); + + // get new particle cell coordinate: + int4 newCellCoord = new int4(GridHash.Quantize(simplexBounds[i].center.xyz, cellSize), level); + + // if the solver is 2D, project the particle to the z = 0 cell. + if (is2D) newCellCoord[2] = 0; + + cellCoords[i] = newCellCoord; + } + } + + [BurstCompile] + struct UpdateGrid : IJob + { + public NativeMultilevelGrid grid; + [ReadOnly] public NativeArray cellCoords; + [ReadOnly] public int simplexCount; + + public void Execute() + { + grid.Clear(); + + for (int i = 0; i < simplexCount; ++i) + { + // add to new cell: + int cellIndex = grid.GetOrCreateCell(cellCoords[i]); + var newCell = grid.usedCells[cellIndex]; + newCell.Add(i); + grid.usedCells[cellIndex] = newCell; + } + } + } + + [BurstCompile] + public struct GenerateParticleParticleContactsJob : IJobParallelFor + { + [ReadOnly] public NativeMultilevelGrid grid; + [DeallocateOnJobCompletion] + [ReadOnly] public NativeArray gridLevels; + + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray orientations; + [ReadOnly] public NativeArray restPositions; + [ReadOnly] public NativeArray restOrientations; + [ReadOnly] public NativeArray velocities; + [ReadOnly] public NativeArray invMasses; + [ReadOnly] public NativeArray radii; + [ReadOnly] public NativeArray normals; + [ReadOnly] public NativeArray fluidRadii; + [ReadOnly] public NativeArray phases; + [ReadOnly] public NativeArray filters; + + // simplex arrays: + [ReadOnly] public NativeArray simplices; + [ReadOnly] public SimplexCounts simplexCounts; + [ReadOnly] public NativeArray simplexBounds; + + [ReadOnly] public NativeArray particleMaterialIndices; + [ReadOnly] public NativeArray collisionMaterials; + + [WriteOnly] + [NativeDisableParallelForRestriction] + public NativeQueue.ParallelWriter contactsQueue; + + [WriteOnly] + [NativeDisableParallelForRestriction] + public NativeQueue.ParallelWriter fluidInteractionsQueue; + + [ReadOnly] public float dt; + [ReadOnly] public float collisionMargin; + [ReadOnly] public int optimizationIterations; + [ReadOnly] public float optimizationTolerance; + + public void Execute(int i) + { + BurstSimplex simplexShape = new BurstSimplex() + { + positions = restPositions, + radii = radii, + simplices = simplices, + }; + + // Looks for close particles in the same cell: + IntraCellSearch(i, ref simplexShape); + + // Looks for close particles in neighboring cells, in the same level or higher levels. + IntraLevelSearch(i, ref simplexShape); + } + + private void IntraCellSearch(int cellIndex, ref BurstSimplex simplexShape) + { + int cellLength = grid.usedCells[cellIndex].Length; + + for (int p = 0; p < cellLength; ++p) + { + for (int n = p + 1; n < cellLength; ++n) + { + InteractionTest(grid.usedCells[cellIndex][p], grid.usedCells[cellIndex][n], ref simplexShape); + } + } + } + + private void InterCellSearch(int cellIndex, int neighborCellIndex, ref BurstSimplex simplexShape) + { + int cellLength = grid.usedCells[cellIndex].Length; + int neighborCellLength = grid.usedCells[neighborCellIndex].Length; + + for (int p = 0; p < cellLength; ++p) + { + for (int n = 0; n < neighborCellLength; ++n) + { + InteractionTest(grid.usedCells[cellIndex][p], grid.usedCells[neighborCellIndex][n], ref simplexShape); + } + } + } + + private void IntraLevelSearch(int cellIndex, ref BurstSimplex simplexShape) + { + int4 cellCoords = grid.usedCells[cellIndex].Coords; + + // neighboring cells in the current level: + for (int i = 0; i < 13; ++i) + { + int4 neighborCellCoords = new int4(cellCoords.xyz + GridHash.cellOffsets3D[i], cellCoords.w); + + int neighborCellIndex; + if (grid.TryGetCellIndex(neighborCellCoords, out neighborCellIndex)) + { + InterCellSearch(cellIndex, neighborCellIndex, ref simplexShape); + } + } + + // neighboring cells in levels above the current one: + int levelIndex = gridLevels.IndexOf(cellCoords.w); + if (levelIndex >= 0) + { + levelIndex++; + for (; levelIndex < gridLevels.Length; ++levelIndex) + { + int level = gridLevels[levelIndex]; + + // calculate index of parent cell in parent level: + int4 parentCellCoords = NativeMultilevelGrid.GetParentCellCoords(cellCoords, level); + + // search in all neighbouring cells: + for (int x = -1; x <= 1; ++x) + for (int y = -1; y <= 1; ++y) + for (int z = -1; z <= 1; ++z) + { + int4 neighborCellCoords = parentCellCoords + new int4(x, y, z, 0); + + int neighborCellIndex; + if (grid.TryGetCellIndex(neighborCellCoords, out neighborCellIndex)) + { + InterCellSearch(cellIndex, neighborCellIndex, ref simplexShape); + } + } + } + } + } + + private int GetSimplexGroup(int simplexStart, int simplexSize, out ObiUtils.ParticleFlags flags, out int category, out int mask, ref bool restPositionsEnabled) + { + flags = 0; + int group = 0; + category = 0; + mask = 0; + for (int j = 0; j < simplexSize; ++j) + { + int particleIndex = simplices[simplexStart + j]; + flags |= ObiUtils.GetFlagsFromPhase(phases[particleIndex]); + category |= filters[particleIndex] & ObiUtils.FilterCategoryBitmask; + mask |= (filters[particleIndex] & ObiUtils.FilterMaskBitmask) >> 16; + group = math.max(group, ObiUtils.GetGroupFromPhase(phases[particleIndex])); + restPositionsEnabled |= restPositions[particleIndex].w > 0.5f; + } + + return group; + } + + private void InteractionTest(int A, int B, ref BurstSimplex simplexShape) + { + // skip the pair if their bounds don't intersect: + if (!simplexBounds[A].IntersectsAabb(simplexBounds[B])) + return; + + // get the start index and size of each simplex: + int simplexStartA = simplexCounts.GetSimplexStartAndSize(A, out int simplexSizeA); + int simplexStartB = simplexCounts.GetSimplexStartAndSize(B, out int simplexSizeB); + + // immediately reject simplex pairs that share particles: + for (int a = 0; a < simplexSizeA; ++a) + for (int b = 0; b < simplexSizeB; ++b) + if (simplices[simplexStartA + a] == simplices[simplexStartB + b]) + return; + + // get group for each simplex: + bool restPositionsEnabled = false; + int groupA = GetSimplexGroup(simplexStartA, simplexSizeA, out ObiUtils.ParticleFlags flagsA, out int categoryA, out int maskA, ref restPositionsEnabled); + int groupB = GetSimplexGroup(simplexStartB, simplexSizeB, out ObiUtils.ParticleFlags flagsB, out int categoryB, out int maskB, ref restPositionsEnabled); + + // if all particles are in the same group: + if (groupA == groupB) + { + // if none are self-colliding, reject the pair. + if ((flagsA & flagsB & ObiUtils.ParticleFlags.SelfCollide) == 0) + return; + } + // category-based filtering: + else if ((maskA & categoryB) == 0 || (maskB & categoryA) == 0) + return; + + // if all simplices are fluid, check their smoothing radii: + if ((flagsA & ObiUtils.ParticleFlags.Fluid) != 0 && (flagsB & ObiUtils.ParticleFlags.Fluid) != 0) + { + int particleA = simplices[simplexStartA]; + int particleB = simplices[simplexStartB]; + + // for fluid we only consider the first particle in each simplex. + float4 predictedPositionA = positions[particleA] + velocities[particleA] * dt; + float4 predictedPositionB = positions[particleB] + velocities[particleB] * dt; + + // Calculate particle center distance: + float d2 = math.lengthsq(predictedPositionA - predictedPositionB); + + float fluidDistance = math.max(fluidRadii[particleA], fluidRadii[particleB]); + if (d2 <= fluidDistance * fluidDistance) + { + fluidInteractionsQueue.Enqueue(new FluidInteraction { particleA = particleA, particleB = particleB }); + } + } + else // at least one solid particle is present: + { + // swap simplices so that B is always the one-sided one. + if ((flagsA & ObiUtils.ParticleFlags.OneSided) != 0 && categoryA < categoryB) + { + ObiUtils.Swap(ref A, ref B); + ObiUtils.Swap(ref simplexStartA, ref simplexStartB); + ObiUtils.Swap(ref simplexSizeA, ref simplexSizeB); + ObiUtils.Swap(ref flagsA, ref flagsB); + ObiUtils.Swap(ref groupA, ref groupB); + } + + float4 simplexBary = BurstMath.BarycenterForSimplexOfSize(simplexSizeA); + float4 simplexPoint; + + simplexShape.simplexStart = simplexStartB; + simplexShape.simplexSize = simplexSizeB; + simplexShape.positions = restPositions; + simplexShape.CacheData(); + + float simplexRadiusA = 0, simplexRadiusB = 0; + + // skip the contact if there's self-intersection at rest: + if (groupA == groupB && restPositionsEnabled) + { + var restPoint = BurstLocalOptimization.Optimize(ref simplexShape, restPositions, restOrientations, radii, + simplices, simplexStartA, simplexSizeA, ref simplexBary, out simplexPoint, 4, 0); + + for (int j = 0; j < simplexSizeA; ++j) + simplexRadiusA += radii[simplices[simplexStartA + j]].x * simplexBary[j]; + + for (int j = 0; j < simplexSizeB; ++j) + simplexRadiusB += radii[simplices[simplexStartB + j]].x * restPoint.bary[j]; + + // compare distance along contact normal with radius. + if (math.dot(simplexPoint - restPoint.point, restPoint.normal) < simplexRadiusA + simplexRadiusB) + return; + } + + simplexBary = BurstMath.BarycenterForSimplexOfSize(simplexSizeA); + simplexShape.positions = positions; + simplexShape.CacheData(); + + var surfacePoint = BurstLocalOptimization.Optimize(ref simplexShape, positions, orientations, radii, + simplices, simplexStartA, simplexSizeA, ref simplexBary, out simplexPoint, optimizationIterations, optimizationTolerance); + + simplexRadiusA = 0; simplexRadiusB = 0; + float4 velocityA = float4.zero, velocityB = float4.zero, normalB = float4.zero; + + for (int j = 0; j < simplexSizeA; ++j) + { + int particleIndex = simplices[simplexStartA + j]; + simplexRadiusA += radii[particleIndex].x * simplexBary[j]; + velocityA += velocities[particleIndex] * simplexBary[j]; + } + + for (int j = 0; j < simplexSizeB; ++j) + { + int particleIndex = simplices[simplexStartB + j]; + simplexRadiusB += radii[particleIndex].x * surfacePoint.bary[j]; + velocityB += velocities[particleIndex] * surfacePoint.bary[j]; + normalB += normals[particleIndex] * surfacePoint.bary[j]; + } + + float dAB = math.dot(simplexPoint - surfacePoint.point, surfacePoint.normal); + float vel = math.dot(velocityA - velocityB, surfacePoint.normal); + + // check if the projected velocity along the contact normal will get us within collision distance. + if (vel * dt + dAB <= simplexRadiusA + simplexRadiusB + collisionMargin) + { + // adapt collision normal for one-sided simplices: + if ((flagsB & ObiUtils.ParticleFlags.OneSided) != 0 && categoryA < categoryB) + BurstMath.OneSidedNormal(normalB, ref surfacePoint.normal); + + contactsQueue.Enqueue(new BurstContact() + { + bodyA = A, + bodyB = B, + pointA = simplexBary, + pointB = surfacePoint.bary, + normal = surfacePoint.normal + }); + } + } + } + } + + [BurstCompile] + public struct InterpolateDiffusePropertiesJob : IJobParallelFor + { + [ReadOnly] public NativeMultilevelGrid grid; + + [DeallocateOnJobCompletion] + [ReadOnly] public NativeArray cellOffsets; + + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray properties; + [ReadOnly] public NativeArray diffusePositions; + [ReadOnly] public Poly6Kernel densityKernel; + + public NativeArray diffuseProperties; + public NativeArray neighbourCount; + + [DeallocateOnJobCompletion] + [ReadOnly] public NativeArray gridLevels; + + [ReadOnly] public BurstInertialFrame inertialFrame; + [ReadOnly] public bool mode2D; + + public void Execute(int p) + { + neighbourCount[p] = 0; + float4 diffuseProperty = float4.zero; + float kernelSum = 0; + + int offsetCount = mode2D ? 4 : 8; + + float4 solverDiffusePosition = inertialFrame.frame.InverseTransformPoint(diffusePositions[p]); + + for (int k = 0; k < gridLevels.Length; ++k) + { + int l = gridLevels[k]; + float radius = NativeMultilevelGrid.CellSizeOfLevel(l); + + float4 cellCoords = math.floor(solverDiffusePosition / radius); + + cellCoords[3] = 0; + if (mode2D) + cellCoords[2] = 0; + + float4 posInCell = solverDiffusePosition - (cellCoords * radius + new float4(radius * 0.5f)); + int4 quadrant = (int4)math.sign(posInCell); + + quadrant[3] = l; + + for (int i = 0; i < offsetCount; ++i) + { + int cellIndex; + if (grid.TryGetCellIndex((int4)cellCoords + cellOffsets[i] * quadrant, out cellIndex)) + { + var cell = grid.usedCells[cellIndex]; + for (int n = 0; n < cell.Length; ++n) + { + float4 r = solverDiffusePosition - positions[cell[n]]; + r[3] = 0; + if (mode2D) + r[2] = 0; + + float d = math.length(r); + if (d <= radius) + { + float w = densityKernel.W(d, radius); + kernelSum += w; + diffuseProperty += properties[cell[n]] * w; + neighbourCount[p]++; + } + } + } + } + } + + if (kernelSum > BurstMath.epsilon) + diffuseProperties[p] = diffuseProperty / kernelSum; + } + } + + public ParticleGrid() + { + this.grid = new NativeMultilevelGrid(1000, Allocator.Persistent); + this.particleContactQueue = new NativeQueue(Allocator.Persistent); + this.fluidInteractionQueue = new NativeQueue(Allocator.Persistent); + } + + public void Update(BurstSolverImpl solver, float deltaTime, JobHandle inputDeps) + { + var calculateCells = new CalculateCellCoords + { + simplexBounds = solver.simplexBounds, + cellCoords = solver.cellCoords, + is2D = solver.abstraction.parameters.mode == Oni.SolverParameters.Mode.Mode2D, + }; + + inputDeps = calculateCells.Schedule(solver.simplexCounts.simplexCount, 4, inputDeps); + + var updateGrid = new UpdateGrid + { + grid = grid, + cellCoords = solver.cellCoords, + simplexCount = solver.simplexCounts.simplexCount + }; + updateGrid.Schedule(inputDeps).Complete(); + } + + public JobHandle GenerateContacts(BurstSolverImpl solver, float deltaTime) + { + + var generateParticleContactsJob = new GenerateParticleParticleContactsJob + { + grid = grid, + gridLevels = grid.populatedLevels.GetKeyArray(Allocator.TempJob), + + positions = solver.positions, + orientations = solver.orientations, + restPositions = solver.restPositions, + restOrientations = solver.restOrientations, + velocities = solver.velocities, + invMasses = solver.invMasses, + radii = solver.principalRadii, + normals = solver.normals, + fluidRadii = solver.smoothingRadii, + phases = solver.phases, + filters = solver.filters, + + simplices = solver.simplices, + simplexCounts = solver.simplexCounts, + simplexBounds = solver.simplexBounds, + + particleMaterialIndices = solver.abstraction.collisionMaterials.AsNativeArray(), + collisionMaterials = ObiColliderWorld.GetInstance().collisionMaterials.AsNativeArray(), + + contactsQueue = particleContactQueue.AsParallelWriter(), + fluidInteractionsQueue = fluidInteractionQueue.AsParallelWriter(), + dt = deltaTime, + collisionMargin = solver.abstraction.parameters.collisionMargin, + optimizationIterations = solver.abstraction.parameters.surfaceCollisionIterations, + optimizationTolerance = solver.abstraction.parameters.surfaceCollisionTolerance, + }; + + return generateParticleContactsJob.Schedule(grid.CellCount, 1); + } + + public JobHandle InterpolateDiffuseProperties(BurstSolverImpl solver, + NativeArray properties, + NativeArray diffusePositions, + NativeArray diffuseProperties, + NativeArray neighbourCount, + int diffuseCount) + { + + NativeArray offsets = new NativeArray(8, Allocator.TempJob); + offsets[0] = new int4(0, 0, 0, 1); + offsets[1] = new int4(1, 0, 0, 1); + offsets[2] = new int4(0, 1, 0, 1); + offsets[3] = new int4(1, 1, 0, 1); + offsets[4] = new int4(0, 0, 1, 1); + offsets[5] = new int4(1, 0, 1, 1); + offsets[6] = new int4(0, 1, 1, 1); + offsets[7] = new int4(1, 1, 1, 1); + + var interpolateDiffusePropertiesJob = new InterpolateDiffusePropertiesJob + { + grid = grid, + positions = solver.abstraction.positions.AsNativeArray(), + cellOffsets = offsets, + properties = properties, + diffusePositions = diffusePositions, + diffuseProperties = diffuseProperties, + neighbourCount = neighbourCount, + densityKernel = new Poly6Kernel(solver.abstraction.parameters.mode == Oni.SolverParameters.Mode.Mode2D), + gridLevels = grid.populatedLevels.GetKeyArray(Allocator.TempJob), + inertialFrame = solver.inertialFrame, + mode2D = solver.abstraction.parameters.mode == Oni.SolverParameters.Mode.Mode2D + }; + + return interpolateDiffusePropertiesJob.Schedule(diffuseCount, 64); + } + + public JobHandle SpatialQuery(BurstSolverImpl solver, + NativeArray shapes, + NativeArray transforms, + NativeQueue results) + { + var world = ObiColliderWorld.GetInstance(); + + var job = new SpatialQueryJob + { + grid = grid, + + positions = solver.abstraction.prevPositions.AsNativeArray(), + orientations = solver.abstraction.prevOrientations.AsNativeArray(), + radii = solver.abstraction.principalRadii.AsNativeArray(), + filters = solver.abstraction.filters.AsNativeArray(), + + simplices = solver.simplices, + simplexCounts = solver.simplexCounts, + + shapes = shapes, + transforms = transforms, + + results = results.AsParallelWriter(), + worldToSolver = solver.worldToSolver, + parameters = solver.abstraction.parameters + }; + + return job.Schedule(shapes.Length, 4); + } + + public void GetCells(ObiNativeAabbList cells) + { + if (cells.count == grid.usedCells.Length) + { + for (int i = 0; i < grid.usedCells.Length; ++i) + { + var cell = grid.usedCells[i]; + float size = NativeMultilevelGrid.CellSizeOfLevel(cell.Coords.w); + + float4 min = (float4)cell.Coords * size; + min[3] = 0; + + cells[i] = new Aabb(min, min + new float4(size, size, size, 0)); + } + } + } + + public void Dispose() + { + grid.Dispose(); + particleContactQueue.Dispose(); + fluidInteractionQueue.Dispose(); + } + + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ParticleGrid.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ParticleGrid.cs.meta new file mode 100644 index 000000000..9b1ea3104 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/ParticleGrid.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 581337416adb545a388c356940ae38be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/Queries.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/Queries.meta new file mode 100644 index 000000000..e9f48027f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/Queries.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3c5f4522f2a394ac0a5017b7de9a31d5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/Queries/BurstContact.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/Queries/BurstContact.cs new file mode 100644 index 000000000..aee21d6f2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/Queries/BurstContact.cs @@ -0,0 +1,244 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Mathematics; +using Unity.Collections; + +namespace Obi +{ + public struct BurstContact : IConstraint, System.IComparable + { + public float4 pointA; // point A, expressed as simplex barycentric coords for simplices, as a solver-space position for colliders. + public float4 pointB; // point B, expressed as simplex barycentric coords for simplices, as a solver-space position for colliders. + + public float4 normal; + public float4 tangent; + public float4 bitangent; + + public float distance; + + float normalLambda; + float tangentLambda; + float bitangentLambda; + float stickLambda; + float rollingFrictionImpulse; + + public int bodyA; + public int bodyB; + + public float normalInvMassA; + public float tangentInvMassA; + public float bitangentInvMassA; + + public float normalInvMassB; + public float tangentInvMassB; + public float bitangentInvMassB; + + public double pad0; // padding to ensure correct alignment to 128 bytes. + + public int GetParticleCount() { return 2; } + public int GetParticle(int index) { return index == 0 ? bodyA : bodyB; } + + public override string ToString() + { + return bodyA + "," + bodyB; + } + + public int CompareTo(BurstContact other) + { + int first = bodyA.CompareTo(other.bodyA); + if (first == 0) + return bodyB.CompareTo(other.bodyB); + return first; + } + + public float TotalNormalInvMass + { + get { return normalInvMassA + normalInvMassB; } + } + + public float TotalTangentInvMass + { + get { return tangentInvMassA + tangentInvMassB; } + } + + public float TotalBitangentInvMass + { + get { return bitangentInvMassA + bitangentInvMassB; } + } + + public void CalculateBasis(float4 relativeVelocity) + { + tangent = math.normalizesafe(relativeVelocity - math.dot(relativeVelocity, normal) * normal); + bitangent = math.normalizesafe(new float4(math.cross(normal.xyz, tangent.xyz),0)); + } + + public void CalculateContactMassesA(float invMass, + float4 inverseInertiaTensor, + float4 position, + quaternion orientation, + float4 contactPoint, + bool rollingContacts) + { + // initialize inverse linear masses: + normalInvMassA = tangentInvMassA = bitangentInvMassA = invMass; + + if (rollingContacts) + { + float4 rA = contactPoint - position; + float4x4 solverInertiaA = BurstMath.TransformInertiaTensor(inverseInertiaTensor, orientation); + + normalInvMassA += BurstMath.RotationalInvMass(solverInertiaA, rA, normal); + tangentInvMassA += BurstMath.RotationalInvMass(solverInertiaA, rA, tangent); + bitangentInvMassA += BurstMath.RotationalInvMass(solverInertiaA, rA, bitangent); + } + } + + public void CalculateContactMassesB(float invMass, + float4 inverseInertiaTensor, + float4 position, + quaternion orientation, + float4 contactPoint, + bool rollingContacts) + { + // initialize inverse linear masses: + normalInvMassB = tangentInvMassB = bitangentInvMassB = invMass; + + if (rollingContacts) + { + float4 rB = contactPoint - position; + float4x4 solverInertiaB = BurstMath.TransformInertiaTensor(inverseInertiaTensor, orientation); + + normalInvMassB += BurstMath.RotationalInvMass(solverInertiaB, rB, normal); + tangentInvMassB += BurstMath.RotationalInvMass(solverInertiaB, rB, tangent); + bitangentInvMassB += BurstMath.RotationalInvMass(solverInertiaB, rB, bitangent); + } + } + + + public void CalculateContactMassesB(in BurstRigidbody rigidbody, in BurstAffineTransform solver2World) + { + float4 rB = solver2World.TransformPoint(pointB) - rigidbody.com; + + // initialize inverse linear masses: + normalInvMassB = tangentInvMassB = bitangentInvMassB = rigidbody.inverseMass; + normalInvMassB += BurstMath.RotationalInvMass(rigidbody.inverseInertiaTensor, rB, normal); + tangentInvMassB += BurstMath.RotationalInvMass(rigidbody.inverseInertiaTensor, rB, tangent); + bitangentInvMassB += BurstMath.RotationalInvMass(rigidbody.inverseInertiaTensor, rB, bitangent); + } + + public float SolveAdhesion(float4 posA, float4 posB, float stickDistance, float stickiness, float dt) + { + + if (TotalNormalInvMass <= 0 || stickDistance <= 0 || stickiness <= 0 || dt <= 0) + return 0; + + distance = math.dot(posA - posB, normal); + + // calculate stickiness position correction: + float constraint = stickiness * (1 - math.max(distance / stickDistance, 0)) * dt; + + // calculate lambda multiplier: + float dlambda = -constraint / TotalNormalInvMass; + + // accumulate lambda: + float newStickinessLambda = math.min(stickLambda + dlambda, 0); + + // calculate lambda change and update accumulated lambda: + float lambdaChange = newStickinessLambda - stickLambda; + stickLambda = newStickinessLambda; + + return lambdaChange; + } + + public float SolvePenetration(float4 posA, float4 posB, float maxDepenetrationDelta) + { + + if (TotalNormalInvMass <= 0) + return 0; + + //project position delta to normal vector: + distance = math.dot(posA - posB, normal); + + // calculate max projection distance based on depenetration velocity: + float maxProjection = math.max(-distance - maxDepenetrationDelta, 0); + + // calculate lambda multiplier: + float dlambda = -(distance + maxProjection) / TotalNormalInvMass; + + // accumulate lambda: + float newLambda = math.max(normalLambda + dlambda, 0); + + // calculate lambda change and update accumulated lambda: + float lambdaChange = newLambda - normalLambda; + normalLambda = newLambda; + + return lambdaChange; + } + + public float2 SolveFriction(float4 relativeVelocity, float staticFriction, float dynamicFriction, float dt) + { + float2 lambdaChange = float2.zero; + + if (TotalTangentInvMass <= 0 || TotalBitangentInvMass <= 0 || + (dynamicFriction <= 0 && staticFriction <= 0) || (normalLambda <= 0 && stickLambda <= 0)) + return lambdaChange; + + // calculate delta projection on both friction axis: + float tangentPosDelta = math.dot(relativeVelocity, tangent); + float bitangentPosDelta = math.dot(relativeVelocity, bitangent); + + // calculate friction pyramid limit: + float dynamicFrictionCone = normalLambda / dt * dynamicFriction; + float staticFrictionCone = normalLambda / dt * staticFriction; + + // tangent impulse: + float tangentLambdaDelta = -tangentPosDelta / TotalTangentInvMass; + float newTangentLambda = tangentLambda + tangentLambdaDelta; + + if (math.abs(newTangentLambda) > staticFrictionCone) + newTangentLambda = math.clamp(newTangentLambda, -dynamicFrictionCone, dynamicFrictionCone); + + lambdaChange[0] = newTangentLambda - tangentLambda; + tangentLambda = newTangentLambda; + + // bitangent impulse: + float bitangentLambdaDelta = -bitangentPosDelta / TotalBitangentInvMass; + float newBitangentLambda = bitangentLambda + bitangentLambdaDelta; + + if (math.abs(newBitangentLambda) > staticFrictionCone) + newBitangentLambda = math.clamp(newBitangentLambda, -dynamicFrictionCone, dynamicFrictionCone); + + lambdaChange[1] = newBitangentLambda - bitangentLambda; + bitangentLambda = newBitangentLambda; + + return lambdaChange; + } + + + public float SolveRollingFriction(float4 angularVelocityA, + float4 angularVelocityB, + float rollingFriction, + float invMassA, + float invMassB, + ref float4 rolling_axis) + { + float totalInvMass = invMassA + invMassB; + if (totalInvMass <= 0) + return 0; + + rolling_axis = math.normalizesafe(angularVelocityA - angularVelocityB); + + float vel1 = math.dot(angularVelocityA,rolling_axis); + float vel2 = math.dot(angularVelocityB,rolling_axis); + + float relativeVelocity = vel1 - vel2; + + float maxImpulse = normalLambda * rollingFriction; + float newRollingImpulse = math.clamp(rollingFrictionImpulse - relativeVelocity / totalInvMass, -maxImpulse, maxImpulse); + float rolling_impulse_change = newRollingImpulse - rollingFrictionImpulse; + rollingFrictionImpulse = newRollingImpulse; + + return rolling_impulse_change; + } +} +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/Queries/BurstContact.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/Queries/BurstContact.cs.meta new file mode 100644 index 000000000..78667f132 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/Queries/BurstContact.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 70486b82a23044fccaf324d309757b8f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/Queries/BurstQueryResult.cs b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/Queries/BurstQueryResult.cs new file mode 100644 index 000000000..7d676052c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/Queries/BurstQueryResult.cs @@ -0,0 +1,18 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Mathematics; +using Unity.Collections; + +namespace Obi +{ + public struct BurstQueryResult + { + public float4 simplexBary; // point A, expressed as simplex barycentric coords for simplices, as a solver-space position for colliders. + public float4 queryPoint; // point B, expressed as simplex barycentric coords for simplices, as a solver-space position for colliders. + public float4 normal; + public float distance; + public int simplexIndex; + public int queryIndex; + public int pad0; // padding to ensure correct alignment. + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/Queries/BurstQueryResult.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/Queries/BurstQueryResult.cs.meta new file mode 100644 index 000000000..11928dd14 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/Queries/BurstQueryResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a3a82674a4b3b432ebcddfc108bb44c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Queries.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Queries.meta new file mode 100644 index 000000000..ce25ade9d --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Queries.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0a89041802caf45b3bb46e192cc3c220 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstBoxQuery.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstBoxQuery.cs new file mode 100644 index 000000000..4be8d5f1b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstBoxQuery.cs @@ -0,0 +1,86 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Collections; +using Unity.Mathematics; + +namespace Obi +{ + public struct BurstBoxQuery : BurstLocalOptimization.IDistanceFunction + { + public BurstQueryShape shape; + public BurstAffineTransform colliderToSolver; + + public void Evaluate(float4 point, float4 radii, quaternion orientation, ref BurstLocalOptimization.SurfacePoint projectedPoint) + { + float4 center = shape.center * colliderToSolver.scale; + float4 size = shape.size * colliderToSolver.scale * 0.5f; + + // clamp the point to the surface of the box: + point = colliderToSolver.InverseTransformPointUnscaled(point) - center; + + /*if (shape.is2D != 0) + point[2] = 0;*/ + + // get minimum distance for each axis: + float4 distances = size - math.abs(point); + + if (distances.x >= 0 && distances.y >= 0 && distances.z >= 0) + { + // find minimum distance in all three axes and the axis index: + float min = float.MaxValue; + int axis = 0; + + for (int i = 0; i < 3; ++i) + { + if (distances[i] < min) + { + min = distances[i]; + axis = i; + } + } + + projectedPoint.normal = float4.zero; + projectedPoint.point = point; + + projectedPoint.normal[axis] = point[axis] > 0 ? 1 : -1; + projectedPoint.point[axis] = size[axis] * projectedPoint.normal[axis]; + } + else + { + projectedPoint.point = math.clamp(point, -size, size); + projectedPoint.normal = math.normalizesafe(point - projectedPoint.point); + } + + projectedPoint.point = colliderToSolver.TransformPointUnscaled(projectedPoint.point + center + projectedPoint.normal * shape.contactOffset); + projectedPoint.normal = colliderToSolver.TransformDirection(projectedPoint.normal); + } + + public void Query(int shapeIndex, + NativeArray positions, + NativeArray orientations, + NativeArray radii, + NativeArray simplices, + int simplexIndex, + int simplexStart, + int simplexSize, + + NativeQueue.ParallelWriter results, + int optimizationIterations, + float optimizationTolerance) + { + var co = new BurstQueryResult() { simplexIndex = simplexIndex, queryIndex = shapeIndex }; + float4 simplexBary = BurstMath.BarycenterForSimplexOfSize(simplexSize); + + var colliderPoint = BurstLocalOptimization.Optimize(ref this, positions, orientations, radii, simplices, simplexStart, simplexSize, + ref simplexBary, out float4 convexPoint, optimizationIterations, optimizationTolerance); + + co.queryPoint = colliderPoint.point; + co.normal = colliderPoint.normal; + co.simplexBary = simplexBary; + + results.Enqueue(co); + } + + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstBoxQuery.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstBoxQuery.cs.meta new file mode 100644 index 000000000..0e33279c3 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstBoxQuery.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d6b3a07d6f9da432ea6e8e0dd3eea022 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstRay.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstRay.cs new file mode 100644 index 000000000..ce2533383 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstRay.cs @@ -0,0 +1,75 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Collections; +using Unity.Mathematics; + +namespace Obi +{ + public struct BurstRay : BurstLocalOptimization.IDistanceFunction + { + public BurstQueryShape shape; + public BurstAffineTransform colliderToSolver; + + public void Evaluate(float4 point, float4 radii, quaternion orientation, ref BurstLocalOptimization.SurfacePoint projectedPoint) + { + float4x4 simplexToSolver = float4x4.TRS(point.xyz, orientation, radii.xyz); + float4x4 solverToSimplex = math.inverse(simplexToSolver); + float4x4 colliderToSimplex = math.mul(solverToSimplex, float4x4.TRS(colliderToSolver.translation.xyz, colliderToSolver.rotation, colliderToSolver.scale.xyz)); + + // express ray in simplex space (ellipsoid == scaled sphere) + float4 rayOrigin = math.mul(colliderToSimplex, new float4(shape.center.xyz,1)); + float4 rayDirection = math.normalizesafe(math.mul(colliderToSimplex, new float4((shape.size - shape.center).xyz,0))); + + float rayDistance = ObiUtils.RaySphereIntersection(rayOrigin.xyz, rayDirection.xyz, float3.zero, 1); + + if (rayDistance < 0) + { + point = colliderToSolver.InverseTransformPointUnscaled(point); + + float4 centerLine = BurstMath.NearestPointOnEdge(shape.center * colliderToSolver.scale, shape.size * colliderToSolver.scale, point, out float mu); + float4 centerToPoint = point - centerLine; + float distanceToCenter = math.length(centerToPoint); + + float4 normal = centerToPoint / (distanceToCenter + BurstMath.epsilon); + + projectedPoint.point = colliderToSolver.TransformPointUnscaled(centerLine + normal * shape.contactOffset); + projectedPoint.normal = colliderToSolver.TransformDirection(normal); + } + else + { + float4 rayPoint = math.mul(simplexToSolver, new float4((rayOrigin + rayDirection * rayDistance).xyz,1)); + float4 normal = math.normalizesafe(new float4((point - rayPoint).xyz,0)); + + projectedPoint.point = rayPoint + normal * shape.contactOffset; + projectedPoint.normal = normal; + } + } + + public void Query(int shapeIndex, + NativeArray positions, + NativeArray orientations, + NativeArray radii, + NativeArray simplices, + int simplexIndex, + int simplexStart, + int simplexSize, + + NativeQueue.ParallelWriter results, + int optimizationIterations, + float optimizationTolerance) + { + var co = new BurstQueryResult() { simplexIndex = simplexIndex, queryIndex = shapeIndex }; + float4 simplexBary = BurstMath.BarycenterForSimplexOfSize(simplexSize); + + var colliderPoint = BurstLocalOptimization.Optimize(ref this, positions, orientations, radii, simplices, simplexStart, simplexSize, + ref simplexBary, out float4 convexPoint, optimizationIterations, optimizationTolerance); + + co.queryPoint = colliderPoint.point; + co.normal = colliderPoint.normal; + co.simplexBary = simplexBary; + + results.Enqueue(co); + } + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstRay.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstRay.cs.meta new file mode 100644 index 000000000..8d62f282a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstRay.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 57b77d0143f8a4af18df103368d328f6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstSphereQuery.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstSphereQuery.cs new file mode 100644 index 000000000..e36412357 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstSphereQuery.cs @@ -0,0 +1,57 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Collections; +using Unity.Mathematics; + +namespace Obi +{ + public struct BurstSphereQuery : BurstLocalOptimization.IDistanceFunction + { + public BurstQueryShape shape; + public BurstAffineTransform colliderToSolver; + + public void Evaluate(float4 point, float4 radii, quaternion orientation, ref BurstLocalOptimization.SurfacePoint projectedPoint) + { + float4 center = shape.center * colliderToSolver.scale; + point = colliderToSolver.InverseTransformPointUnscaled(point) - center; + + /*if (shape.is2D != 0) + point[2] = 0;*/ + + float radius = shape.size.x * math.cmax(colliderToSolver.scale.xyz); + float distanceToCenter = math.length(point); + + float4 normal = point / (distanceToCenter + BurstMath.epsilon); + + projectedPoint.point = colliderToSolver.TransformPointUnscaled(center + normal * (radius + shape.contactOffset)); + projectedPoint.normal = colliderToSolver.TransformDirection(normal); + } + + public void Query(int shapeIndex, + NativeArray positions, + NativeArray orientations, + NativeArray radii, + NativeArray simplices, + int simplexIndex, + int simplexStart, + int simplexSize, + + NativeQueue.ParallelWriter results, + int optimizationIterations, + float optimizationTolerance) + { + var co = new BurstQueryResult() { simplexIndex = simplexIndex, queryIndex = shapeIndex }; + float4 simplexBary = BurstMath.BarycenterForSimplexOfSize(simplexSize); + + var colliderPoint = BurstLocalOptimization.Optimize(ref this, positions, orientations, radii, simplices, simplexStart, simplexSize, + ref simplexBary, out float4 convexPoint, optimizationIterations, optimizationTolerance); + + co.queryPoint = colliderPoint.point; + co.normal = colliderPoint.normal; + co.simplexBary = simplexBary; + + results.Enqueue(co); + } + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstSphereQuery.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstSphereQuery.cs.meta new file mode 100644 index 000000000..50b176c88 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Queries/BurstSphereQuery.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3c36e77eab954f2e9b12e7fd5c63a6f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Queries/SpatialQueryJob.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Queries/SpatialQueryJob.cs new file mode 100644 index 000000000..6ea4f5875 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Queries/SpatialQueryJob.cs @@ -0,0 +1,164 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Jobs; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Burst; + +namespace Obi +{ + + [BurstCompile] + unsafe struct SpatialQueryJob : IJobParallelFor + { + //collider grid: + [ReadOnly] public NativeMultilevelGrid grid; + + // particle arrays: + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray orientations; + [ReadOnly] public NativeArray radii; + [ReadOnly] public NativeArray filters; + + // simplex arrays: + [ReadOnly] public NativeArray simplices; + [ReadOnly] public SimplexCounts simplexCounts; + + // query arrays: + [ReadOnly] public NativeArray shapes; + [ReadOnly] public NativeArray transforms; + + // output contacts queue: + [WriteOnly] + [NativeDisableParallelForRestriction] + public NativeQueue.ParallelWriter results; + + // auxiliar data: + [ReadOnly] public BurstAffineTransform worldToSolver; + [ReadOnly] public Oni.SolverParameters parameters; + + // execute for each query shape: + public void Execute(int i) + { + var shapeToSolver = worldToSolver * transforms[i]; + + // calculate solver-space aabb of query shape: + BurstAabb queryBoundsSS = CalculateShapeAABB(shapes[i]).Transformed(shapeToSolver); + + var shapeCategory = shapes[i].filter & ObiUtils.FilterCategoryBitmask; + var shapeMask = (shapes[i].filter & ObiUtils.FilterMaskBitmask) >> 16; + + bool is2D = parameters.mode == Oni.SolverParameters.Mode.Mode2D; + + // iterate over all occupied cells: + for (int c = 0; c < grid.usedCells.Length; ++c) + { + var cell = grid.usedCells[c]; + + // calculate thickedned grid bounds: + float size = NativeMultilevelGrid.CellSizeOfLevel(cell.Coords.w); + float4 cellPos = (float4)cell.Coords * size; + BurstAabb cellBounds = new BurstAabb(cellPos - new float4(size), cellPos + new float4(2 * size)); + + // if cell and query bounds intersect: + if (cellBounds.IntersectsAabb(in queryBoundsSS, is2D)) + { + // iterate over cell contents: + for (int k = 0; k < cell.Length; ++k) + { + int simplexStart = simplexCounts.GetSimplexStartAndSize(cell[k], out int simplexSize); + + // check if any simplex particle and the query shape should collide: + bool shouldCollide = false; + for (int j = 0; j < simplexSize; ++j) + { + var simplexCategory = filters[simplices[simplexStart + j]] & ObiUtils.FilterCategoryBitmask; + var simplexMask = (filters[simplices[simplexStart + j]] & ObiUtils.FilterMaskBitmask) >> 16; + shouldCollide |= (simplexCategory & shapeMask) != 0 && (simplexMask & shapeCategory) != 0; + } + + if (shouldCollide) + Query(shapes[i], shapeToSolver, i, cell[k], simplexStart, simplexSize); + } + } + } + } + + private BurstAabb CalculateShapeAABB(in BurstQueryShape shape) + { + float offset = shape.contactOffset + shape.distance; + switch (shape.type) + { + case QueryShape.QueryType.Sphere: + return new BurstAabb(shape.center, shape.center, shape.size.x + offset); + case QueryShape.QueryType.Box: + return new BurstAabb(shape.center - shape.size*0.5f - offset, shape.center + shape.size * 0.5f + offset); + case QueryShape.QueryType.Ray: + return new BurstAabb(shape.center, shape.size, offset); + } + return new BurstAabb(); + } + + private void Query(in BurstQueryShape shape, + in BurstAffineTransform shapeToSolver, + int shapeIndex, + int simplexIndex, + int simplexStart, + int simplexSize) + { + switch (shape.type) + { + case QueryShape.QueryType.Sphere: + BurstSphereQuery sphereShape = new BurstSphereQuery() { colliderToSolver = shapeToSolver, shape = shape}; + sphereShape.Query(shapeIndex, positions, orientations, radii, simplices, + simplexIndex, simplexStart, simplexSize, results, parameters.surfaceCollisionIterations, parameters.surfaceCollisionTolerance); + break; + case QueryShape.QueryType.Box: + BurstBoxQuery boxShape = new BurstBoxQuery() { colliderToSolver = shapeToSolver, shape = shape}; + boxShape.Query(shapeIndex, positions, orientations, radii, simplices, + simplexIndex, simplexStart, simplexSize, results, parameters.surfaceCollisionIterations, parameters.surfaceCollisionTolerance); + break; + case QueryShape.QueryType.Ray: + BurstRay rayShape = new BurstRay() { colliderToSolver = shapeToSolver, shape = shape }; + rayShape.Query(shapeIndex, positions, orientations, radii, simplices, + simplexIndex, simplexStart, simplexSize, results, parameters.surfaceCollisionIterations, parameters.surfaceCollisionTolerance); + break; + } + } + } + + [BurstCompile] + public struct CalculateQueryDistances : IJobParallelFor + { + [ReadOnly] public NativeArray prevPositions; + [ReadOnly] public NativeArray prevOrientations; + [ReadOnly] public NativeArray radii; + + // simplex arrays: + [ReadOnly] public NativeArray simplices; + [ReadOnly] public SimplexCounts simplexCounts; + + public NativeArray queryResults; + + public void Execute(int i) + { + var result = queryResults[i]; + + int simplexStart = simplexCounts.GetSimplexStartAndSize(result.simplexIndex, out int simplexSize); + + float4 simplexPrevPosition = float4.zero; + float simplexRadius = 0; + + for (int j = 0; j < simplexSize; ++j) + { + int particleIndex = simplices[simplexStart + j]; + simplexPrevPosition += prevPositions[particleIndex] * result.simplexBary[j]; + simplexRadius += BurstMath.EllipsoidRadius(result.normal, prevOrientations[particleIndex], radii[particleIndex].xyz) * result.simplexBary[j]; + } + + // update contact distance + result.distance = math.dot(simplexPrevPosition - result.queryPoint, result.normal) - simplexRadius; + queryResults[i] = result; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Queries/SpatialQueryJob.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Queries/SpatialQueryJob.cs.meta new file mode 100644 index 000000000..e44e250e7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Queries/SpatialQueryJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f8bb8e6f2de74ab3b2ab294100629a4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Solver.meta new file mode 100644 index 000000000..98abee022 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b6251e5c85abf48ee822588eb5da9aa2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/ApplyInertialForcesJob.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/ApplyInertialForcesJob.cs new file mode 100644 index 000000000..fa1cc8e1a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/ApplyInertialForcesJob.cs @@ -0,0 +1,46 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Burst; +using System; +using System.Collections; + +namespace Obi +{ + [BurstCompile] + struct ApplyInertialForcesJob : IJobParallelFor + { + [ReadOnly] public NativeArray activeParticles; + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray invMasses; + + [ReadOnly] public float4 angularVel; + [ReadOnly] public float4 inertialAccel; + [ReadOnly] public float4 eulerAccel; + + [ReadOnly] public float worldLinearInertiaScale; + [ReadOnly] public float worldAngularInertiaScale; + + [NativeDisableParallelForRestriction] public NativeArray velocities; + + [ReadOnly] public float deltaTime; + + public void Execute(int index) + { + int i = activeParticles[index]; + + if (invMasses[i] > 0) + { + float4 euler = new float4(math.cross(eulerAccel.xyz, positions[i].xyz), 0); + float4 centrifugal = new float4(math.cross(angularVel.xyz, math.cross(angularVel.xyz, positions[i].xyz)), 0); + float4 coriolis = 2 * new float4(math.cross(angularVel.xyz, velocities[i].xyz), 0); + float4 angularAccel = euler + coriolis + centrifugal; + + velocities[i] -= (inertialAccel * worldLinearInertiaScale + angularAccel * worldAngularInertiaScale) * deltaTime; + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/ApplyInertialForcesJob.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/ApplyInertialForcesJob.cs.meta new file mode 100644 index 000000000..ffb53be3c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/ApplyInertialForcesJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9583eea8cf2234362a59c97e3f908a85 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BoundsReductionJob.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BoundsReductionJob.cs new file mode 100644 index 000000000..89da4b413 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BoundsReductionJob.cs @@ -0,0 +1,53 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Burst; +using System; +using System.Collections; + +namespace Obi +{ + [BurstCompile] + struct ParticleToBoundsJob : IJobParallelFor + { + [ReadOnly] public NativeArray activeParticles; + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray radii; + + public NativeArray bounds; + + public void Execute(int i) + { + int p = activeParticles[i]; + bounds[i] = new BurstAabb(positions[p] - radii[p].x, positions[p] + radii[p].x); + } + } + + [BurstCompile] + struct BoundsReductionJob : IJobParallelFor + { + [NativeDisableParallelForRestriction] public NativeArray bounds; // the length of bounds must be a multiple of size. + [ReadOnly] public int stride; + [ReadOnly] public int size; + + public void Execute(int first) + { + int baseIndex = first * size; + for (int i = 1; i < size; ++i) + { + int dest = baseIndex * stride; + int source = (baseIndex + i) * stride; + + if (source < bounds.Length) + { + var v = bounds[dest]; + v.EncapsulateBounds(bounds[source]); + bounds[dest] = v; + } + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BoundsReductionJob.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BoundsReductionJob.cs.meta new file mode 100644 index 000000000..e630da171 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BoundsReductionJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 31e84cee4b2444511a44d1c8ff0c8cd1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BuildSimplexAabbs.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BuildSimplexAabbs.cs new file mode 100644 index 000000000..d8931f228 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BuildSimplexAabbs.cs @@ -0,0 +1,55 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Burst; +using System; +using System.Collections; + +namespace Obi +{ + + [BurstCompile] + struct BuildSimplexAabbs : IJobParallelFor + { + [ReadOnly] public NativeArray radii; + [ReadOnly] public NativeArray fluidRadii; + [ReadOnly] public NativeArray positions; + [ReadOnly] public NativeArray velocities; + + // simplex arrays: + [ReadOnly] public NativeArray simplices; + [ReadOnly] public SimplexCounts simplexCounts; + + [ReadOnly] public NativeArray particleMaterialIndices; + [ReadOnly] public NativeArray collisionMaterials; + [ReadOnly] public float collisionMargin; + [ReadOnly] public float continuousCollisionDetection; + [ReadOnly] public float dt; + + public NativeArray simplexBounds; + + public void Execute(int i) + { + int simplexStart = simplexCounts.GetSimplexStartAndSize(i, out int simplexSize); + + var bounds = new BurstAabb(float.MaxValue, float.MinValue); + for (int j = 0; j < simplexSize; ++j) + { + int p = simplices[simplexStart + j]; + + // Find this particle's stick distance: + int m = particleMaterialIndices[p]; + float stickDistance = m >= 0 ? collisionMaterials[m].stickDistance : 0; + + // Expand simplex bounds, using both the particle's original position and its velocity: + bounds.EncapsulateParticle(positions[p], positions[p] + velocities[p] * continuousCollisionDetection * dt, + math.max(radii[p].x + stickDistance, fluidRadii[p] * 0.5f) + collisionMargin); + } + + simplexBounds[i] = bounds; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BuildSimplexAabbs.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BuildSimplexAabbs.cs.meta new file mode 100644 index 000000000..d0ff571de --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BuildSimplexAabbs.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7834dd4a6de2346b5b36154d6aaa531a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BurstSolverImpl.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BurstSolverImpl.cs new file mode 100644 index 000000000..309143c7e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BurstSolverImpl.cs @@ -0,0 +1,970 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Mathematics; +using Unity.Collections; + +namespace Obi +{ + public class BurstSolverImpl : ISolverImpl + { + ObiSolver m_Solver; + + public ObiSolver abstraction + { + get { return m_Solver; } + } + + public int particleCount + { + get { return m_Solver.positions.count; } + } + + public int activeParticleCount + { + get { return abstraction.activeParticles.count; } + } + + public BurstInertialFrame inertialFrame + { + get { return m_InertialFrame; } + } + + public BurstAffineTransform solverToWorld + { + get { return m_InertialFrame.frame; } + } + + public BurstAffineTransform worldToSolver + { + get { return m_InertialFrame.frame.Inverse(); } + } + + private const int maxBatches = 17; + + private ConstraintBatcher collisionConstraintBatcher; + private ConstraintBatcher fluidConstraintBatcher; + + // Per-type constraints array: + private IBurstConstraintsImpl[] constraints; + + // Per-type iteration padding array: + private int[] padding = new int[Oni.ConstraintTypeCount]; + + // Pool job handles to avoid runtime alloc: + private JobHandlePool jobHandlePool; + + // particle contact generation: + public ParticleGrid particleGrid; + public NativeArray particleContacts; + public NativeArray particleBatchData; + + // fluid interaction generation: + public NativeArray fluidInteractions; + public NativeArray fluidBatchData; + + // collider contact generation: + private BurstColliderWorld colliderGrid; + public NativeArray colliderContacts; + + // misc data: + public NativeArray activeParticles; + private NativeList deformableTriangles; + + public NativeArray simplices; + public SimplexCounts simplexCounts; + + private BurstInertialFrame m_InertialFrame; // local to world inertial frame. + private int scheduledJobCounter = 0; + + // cached particle data arrays (just wrappers over raw unmanaged data held by the abstract solver) + public NativeArray positions; + public NativeArray restPositions; + public NativeArray prevPositions; + public NativeArray renderablePositions; + + public NativeArray orientations; + public NativeArray restOrientations; + public NativeArray prevOrientations; + public NativeArray renderableOrientations; + + public NativeArray velocities; + public NativeArray angularVelocities; + + public NativeArray invMasses; + public NativeArray invRotationalMasses; + public NativeArray invInertiaTensors; + + public NativeArray externalForces; + public NativeArray externalTorques; + public NativeArray wind; + + public NativeArray positionDeltas; + public NativeArray orientationDeltas; + public NativeArray positionConstraintCounts; + public NativeArray orientationConstraintCounts; + + public NativeArray collisionMaterials; + public NativeArray phases; + public NativeArray filters; + public NativeArray anisotropies; + public NativeArray principalRadii; + public NativeArray normals; + + public NativeArray vorticities; + public NativeArray fluidData; + public NativeArray userData; + public NativeArray smoothingRadii; + public NativeArray buoyancies; + public NativeArray restDensities; + public NativeArray viscosities; + public NativeArray surfaceTension; + public NativeArray vortConfinement; + public NativeArray athmosphericDrag; + public NativeArray athmosphericPressure; + public NativeArray diffusion; + + public NativeArray cellCoords; + public NativeArray simplexBounds; + + private ConstraintSorter contactSorter; + + public BurstSolverImpl(ObiSolver solver) + { + this.m_Solver = solver; + + jobHandlePool = new JobHandlePool(4); + contactSorter = new ConstraintSorter(); + + // Initialize collision world: + GetOrCreateColliderWorld(); + colliderGrid.IncreaseReferenceCount(); + + deformableTriangles = new NativeList(64, Allocator.Persistent); + + // Initialize contact generation acceleration structure: + particleGrid = new ParticleGrid(); + + // Initialize constraint batcher: + collisionConstraintBatcher = new ConstraintBatcher(maxBatches); + fluidConstraintBatcher = new ConstraintBatcher(maxBatches); + + // Initialize constraint arrays: + constraints = new IBurstConstraintsImpl[Oni.ConstraintTypeCount]; + constraints[(int)Oni.ConstraintType.Tether] = new BurstTetherConstraints(this); + constraints[(int)Oni.ConstraintType.Volume] = new BurstVolumeConstraints(this); + constraints[(int)Oni.ConstraintType.Chain] = new BurstChainConstraints(this); + constraints[(int)Oni.ConstraintType.Bending] = new BurstBendConstraints(this); + constraints[(int)Oni.ConstraintType.Distance] = new BurstDistanceConstraints(this); + constraints[(int)Oni.ConstraintType.ShapeMatching] = new BurstShapeMatchingConstraints(this); + constraints[(int)Oni.ConstraintType.BendTwist] = new BurstBendTwistConstraints(this); + constraints[(int)Oni.ConstraintType.StretchShear] = new BurstStretchShearConstraints(this); + constraints[(int)Oni.ConstraintType.Pin] = new BurstPinConstraints(this); + constraints[(int)Oni.ConstraintType.ParticleCollision] = new BurstParticleCollisionConstraints(this); + constraints[(int)Oni.ConstraintType.Density] = new BurstDensityConstraints(this); + constraints[(int)Oni.ConstraintType.Collision] = new BurstColliderCollisionConstraints(this); + constraints[(int)Oni.ConstraintType.Skin] = new BurstSkinConstraints(this); + constraints[(int)Oni.ConstraintType.Aerodynamics] = new BurstAerodynamicConstraints(this); + constraints[(int)Oni.ConstraintType.Stitch] = new BurstStitchConstraints(this); + constraints[(int)Oni.ConstraintType.ParticleFriction] = new BurstParticleFrictionConstraints(this); + constraints[(int)Oni.ConstraintType.Friction] = new BurstColliderFrictionConstraints(this); + + var c = constraints[(int)Oni.ConstraintType.Collision] as BurstColliderCollisionConstraints; + c.CreateConstraintsBatch(); + + var f = constraints[(int)Oni.ConstraintType.Friction] as BurstColliderFrictionConstraints; + f.CreateConstraintsBatch(); + } + + public void Destroy() + { + for (int i = 0; i < constraints.Length; ++i) + if (constraints[i] != null) + constraints[i].Dispose(); + + // Get rid of particle and collider grids: + particleGrid.Dispose(); + + if (colliderGrid != null) + colliderGrid.DecreaseReferenceCount(); + + collisionConstraintBatcher.Dispose(); + fluidConstraintBatcher.Dispose(); + + if (deformableTriangles.IsCreated) + deformableTriangles.Dispose(); + if (simplexBounds.IsCreated) + simplexBounds.Dispose(); + + if (particleContacts.IsCreated) + particleContacts.Dispose(); + if (particleBatchData.IsCreated) + particleBatchData.Dispose(); + if (fluidInteractions.IsCreated) + fluidInteractions.Dispose(); + if (fluidBatchData.IsCreated) + fluidBatchData.Dispose(); + if (colliderContacts.IsCreated) + colliderContacts.Dispose(); + + } + + public void ReleaseJobHandles() + { + jobHandlePool.ReleaseAll(); + } + + // Utility function to count scheduled jobs. Call it once per job. + // Will JobHandle.ScheduleBatchedJobs once there's a good bunch of scheduled jobs. + public void ScheduleBatchedJobsIfNeeded() + { + if (scheduledJobCounter++ > 16) + { + scheduledJobCounter = 0; + JobHandle.ScheduleBatchedJobs(); + } + } + + private void GetOrCreateColliderWorld() + { + colliderGrid = GameObject.FindObjectOfType(); + if (colliderGrid == null) + { + var world = new GameObject("BurstCollisionWorld", typeof(BurstColliderWorld)); + colliderGrid = world.GetComponent(); + } + } + + public void InitializeFrame(Vector4 translation, Vector4 scale, Quaternion rotation) + { + m_InertialFrame = new BurstInertialFrame(translation, scale, rotation); + } + + public void UpdateFrame(Vector4 translation, Vector4 scale, Quaternion rotation, float deltaTime) + { + m_InertialFrame.Update(translation, scale, rotation, deltaTime); + } + + public void ApplyFrame(float worldLinearInertiaScale, float worldAngularInertiaScale, float deltaTime) + { + // inverse linear part: + float4x4 linear = float4x4.TRS(float3.zero, inertialFrame.frame.rotation, math.rcp(inertialFrame.frame.scale.xyz)); + float4x4 linearInv = math.transpose(linear); + + // non-inertial frame accelerations: + float4 angularVel = math.mul(linearInv, math.mul(float4x4.Scale(inertialFrame.angularVelocity.xyz), linear)).diagonal(); + float4 eulerAccel = math.mul(linearInv, math.mul(float4x4.Scale(inertialFrame.angularAcceleration.xyz), linear)).diagonal(); + float4 inertialAccel = math.mul(linearInv, inertialFrame.acceleration); + + var applyInertialForces = new ApplyInertialForcesJob() + { + activeParticles = activeParticles, + positions = positions, + velocities = velocities, + invMasses = invMasses, + angularVel = angularVel, + inertialAccel = inertialAccel, + eulerAccel = eulerAccel, + worldLinearInertiaScale = worldLinearInertiaScale, + worldAngularInertiaScale = worldAngularInertiaScale, + deltaTime = deltaTime, + }; + + applyInertialForces.Schedule(activeParticleCount, 64).Complete(); + } + + public int GetDeformableTriangleCount() + { + return deformableTriangles.Length / 3; + } + + public void SetDeformableTriangles(int[] indices, int num, int destOffset) + { + if (destOffset + num >= deformableTriangles.Length / 3) + deformableTriangles.ResizeUninitialized((destOffset + num) * 3); + for (int i = 0; i < num * 3; ++i) + deformableTriangles[i + destOffset * 3] = indices[i]; + } + + public int RemoveDeformableTriangles(int num, int sourceOffset) + { + if (deformableTriangles.IsCreated) + { + int amount = deformableTriangles.Length / 3; + + if (num < 0) + { + deformableTriangles.Clear(); + return amount; + } + + int set = ClampArrayAccess(amount, num, sourceOffset); + int end = sourceOffset + set; + + // TODO: replace by built in method in 0.9.0 + deformableTriangles.RemoveRangeBurst(sourceOffset * 3, (end - sourceOffset) * 3 ); + + return set; + } + return 0; + } + + public void SetSimplices(ObiNativeIntList simplices, SimplexCounts counts) + { + this.simplices = simplices.AsNativeArray(); + this.simplexCounts = counts; + + if (simplexBounds.IsCreated) + simplexBounds.Dispose(); + + simplexBounds = new NativeArray(counts.simplexCount, Allocator.Persistent); + cellCoords = abstraction.cellCoords.AsNativeArray(); + } + + public void SetActiveParticles(ObiNativeIntList indices) + { + activeParticles = indices.AsNativeArray(); + } + + int ClampArrayAccess(int size, int num, int offset) + { + return math.min(num, math.max(0, size - offset)); + } + + public JobHandle RecalculateInertiaTensors(JobHandle inputDeps) + { + var updateInertiaTensors = new UpdateInertiaTensorsJob() + { + activeParticles = activeParticles, + inverseMasses = abstraction.invMasses.AsNativeArray(), + inverseRotationalMasses = abstraction.invRotationalMasses.AsNativeArray(), + principalRadii = abstraction.principalRadii.AsNativeArray(), + inverseInertiaTensors = abstraction.invInertiaTensors.AsNativeArray(), + }; + + return updateInertiaTensors.Schedule(activeParticleCount, 128, inputDeps); + } + + public void GetBounds(ref Vector3 min, ref Vector3 max) + { + int chunkSize = 4; + NativeArray bounds = new NativeArray(activeParticleCount, Allocator.Persistent, NativeArrayOptions.UninitializedMemory); + + var particleBoundsJob = new ParticleToBoundsJob() + { + activeParticles = activeParticles, + positions = positions, + radii = principalRadii, + bounds = bounds + }; + + JobHandle reduction = particleBoundsJob.Schedule(activeParticles.Length, 64); + + // parallel reduction: + int chunks = bounds.Length; + int stride = 1; + + while (chunks > 1) + { + var reductionJob = new BoundsReductionJob() + { + bounds = bounds, + stride = stride, + size = chunkSize, + }; + reduction = reductionJob.Schedule(chunks, 1, reduction); + + chunks = (int)math.ceil(chunks / (float)chunkSize); + stride *= chunkSize; + } + + reduction.Complete(); + + // the parallel reduction leaves the final bounds in the first entry: + if (bounds.Length > 0) + { + min = bounds[0].min.xyz; + max = bounds[0].max.xyz; + } + + bounds.Dispose(); + } + + public void ResetForces() + { + abstraction.externalForces.WipeToZero(); + abstraction.externalTorques.WipeToZero(); + abstraction.wind.WipeToZero(); + + // We're at the end of a whole step (not a substep), so dispose of contact buffers: + if (particleContacts.IsCreated) + particleContacts.Dispose(); + if (particleBatchData.IsCreated) + particleBatchData.Dispose(); + if (colliderContacts.IsCreated) + colliderContacts.Dispose(); + } + + public int GetConstraintCount(Oni.ConstraintType type) + { + if ((int)type > 0 && (int)type < constraints.Length) + return constraints[(int)type].GetConstraintCount(); + return 0; + } + + public void GetCollisionContacts(Oni.Contact[] contacts, int count) + { + NativeArray.Copy(colliderContacts.Reinterpret(),0, contacts,0,count); + } + + public void GetParticleCollisionContacts(Oni.Contact[] contacts, int count) + { + NativeArray.Copy(particleContacts.Reinterpret(),0, contacts,0,count); + } + + public void SetParameters(Oni.SolverParameters parameters) + { + // No need to implement. This backend grabs parameters from the abstraction when it needs them. + } + + public void SetConstraintGroupParameters(Oni.ConstraintType type, ref Oni.ConstraintParameters parameters) + { + // No need to implement. This backend grabs parameters from the abstraction when it needs them. + } + + public void ParticleCountChanged(ObiSolver solver) + { + positions = abstraction.positions.AsNativeArray(); + restPositions = abstraction.restPositions.AsNativeArray(); + prevPositions = abstraction.prevPositions.AsNativeArray(); + renderablePositions = abstraction.renderablePositions.AsNativeArray(); + + orientations = abstraction.orientations.AsNativeArray(); + restOrientations = abstraction.restOrientations.AsNativeArray(); + prevOrientations = abstraction.prevOrientations.AsNativeArray(); + renderableOrientations = abstraction.renderableOrientations.AsNativeArray(); + + velocities = abstraction.velocities.AsNativeArray(); + angularVelocities = abstraction.angularVelocities.AsNativeArray(); + + invMasses = abstraction.invMasses.AsNativeArray(); + invRotationalMasses = abstraction.invRotationalMasses.AsNativeArray(); + invInertiaTensors = abstraction.invInertiaTensors.AsNativeArray(); + + externalForces = abstraction.externalForces.AsNativeArray(); + externalTorques = abstraction.externalTorques.AsNativeArray(); + wind = abstraction.wind.AsNativeArray(); + + positionDeltas = abstraction.positionDeltas.AsNativeArray(); + orientationDeltas = abstraction.orientationDeltas.AsNativeArray(); + positionConstraintCounts = abstraction.positionConstraintCounts.AsNativeArray(); + orientationConstraintCounts = abstraction.orientationConstraintCounts.AsNativeArray(); + + collisionMaterials = abstraction.collisionMaterials.AsNativeArray(); + phases = abstraction.phases.AsNativeArray(); + filters = abstraction.filters.AsNativeArray(); + anisotropies = abstraction.anisotropies.AsNativeArray(); + principalRadii = abstraction.principalRadii.AsNativeArray(); + normals = abstraction.normals.AsNativeArray(); + + vorticities = abstraction.vorticities.AsNativeArray(); + fluidData = abstraction.fluidData.AsNativeArray(); + userData = abstraction.userData.AsNativeArray(); + smoothingRadii = abstraction.smoothingRadii.AsNativeArray(); + buoyancies = abstraction.buoyancies.AsNativeArray(); + restDensities = abstraction.restDensities.AsNativeArray(); + viscosities = abstraction.viscosities.AsNativeArray(); + surfaceTension = abstraction.surfaceTension.AsNativeArray(); + vortConfinement = abstraction.vortConfinement.AsNativeArray(); + athmosphericDrag = abstraction.atmosphericDrag.AsNativeArray(); + athmosphericPressure = abstraction.atmosphericPressure.AsNativeArray(); + diffusion = abstraction.diffusion.AsNativeArray(); + } + + public void SetRigidbodyArrays(ObiSolver solver) + { + // No need to implement. This backend grabs arrays from the abstraction when it needs them. + } + + public IConstraintsBatchImpl CreateConstraintsBatch(Oni.ConstraintType type) + { + return constraints[(int)type].CreateConstraintsBatch(); + } + + public void DestroyConstraintsBatch(IConstraintsBatchImpl batch) + { + if (batch != null) + constraints[(int)batch.constraintType].RemoveBatch(batch); + } + + public IObiJobHandle CollisionDetection(float stepTime) + { + var fluidHandle = FindFluidParticles(); + + var inertiaUpdate = RecalculateInertiaTensors(fluidHandle); + + return jobHandlePool.Borrow().SetHandle(GenerateContacts(inertiaUpdate, stepTime)); + } + + protected JobHandle FindFluidParticles() + { + var d = constraints[(int)Oni.ConstraintType.Density] as BurstDensityConstraints; + + // Update positions: + var findFluidJob = new FindFluidParticlesJob() + { + activeParticles = activeParticles, + phases = m_Solver.phases.AsNativeArray(), + fluidParticles = d.fluidParticles, + }; + + return findFluidJob.Schedule(); + } + + protected JobHandle UpdateSimplexBounds(JobHandle inputDeps, float deltaTime) + { + var buildAabbs = new BuildSimplexAabbs + { + radii = principalRadii, + fluidRadii = smoothingRadii, + positions = positions, + velocities = velocities, + + simplices = simplices, + simplexCounts = simplexCounts, + simplexBounds = simplexBounds, + + particleMaterialIndices = abstraction.collisionMaterials.AsNativeArray(), + collisionMaterials = ObiColliderWorld.GetInstance().collisionMaterials.AsNativeArray(), + collisionMargin = abstraction.parameters.collisionMargin, + continuousCollisionDetection = abstraction.parameters.continuousCollisionDetection, + dt = deltaTime, + }; + return buildAabbs.Schedule(simplexCounts.simplexCount, 32, inputDeps); + } + + protected JobHandle GenerateContacts(JobHandle inputDeps, float deltaTime) + { + // Dispose of previous fluid interactions. + // We need fluid data during interpolation, for anisotropic fluid particles. For this reason, + // we can't dispose of these arrays in ResetForces() at the end of each full step. They must use persistent allocation. + + if (fluidInteractions.IsCreated) + fluidInteractions.Dispose(); + if (fluidBatchData.IsCreated) + fluidBatchData.Dispose(); + + // get constraint parameters for constraint types that depend on broadphases: + var collisionParameters = m_Solver.GetConstraintParameters(Oni.ConstraintType.Collision); + var particleCollisionParameters = m_Solver.GetConstraintParameters(Oni.ConstraintType.ParticleCollision); + var densityParameters = m_Solver.GetConstraintParameters(Oni.ConstraintType.Density); + + // if no enabled constraints that require broadphase info, skip it entirely. + if (collisionParameters.enabled || + particleCollisionParameters.enabled || + densityParameters.enabled) + { + // update the bounding box of each simplex: + inputDeps = UpdateSimplexBounds(inputDeps, deltaTime); + + + // generate particle-particle and particle-collider interactions in parallel: + JobHandle generateParticleInteractionsHandle = inputDeps, generateContactsHandle = inputDeps; + + // particle-particle interactions (contacts, fluids) + if (particleCollisionParameters.enabled || densityParameters.enabled) + { + particleGrid.Update(this, deltaTime, inputDeps); + generateParticleInteractionsHandle = particleGrid.GenerateContacts(this, deltaTime); + } + + // particle-collider interactions (contacts) + if (collisionParameters.enabled) + { + generateContactsHandle = colliderGrid.GenerateContacts(this, deltaTime, inputDeps); + } + + JobHandle.CombineDependencies(generateParticleInteractionsHandle, generateContactsHandle).Complete(); + + // allocate arrays for interactions and batch data: + particleContacts = new NativeArray(particleGrid.particleContactQueue.Count, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); + particleBatchData = new NativeArray(maxBatches, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); + + fluidInteractions = new NativeArray(particleGrid.fluidInteractionQueue.Count, Allocator.Persistent, NativeArrayOptions.UninitializedMemory); + fluidBatchData = new NativeArray(maxBatches, Allocator.Persistent, NativeArrayOptions.UninitializedMemory); + + colliderContacts = new NativeArray(colliderGrid.colliderContactQueue.Count, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); + + // dequeue contacts/interactions into temporary arrays: + var rawParticleContacts = new NativeArray(particleGrid.particleContactQueue.Count, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); + var sortedParticleContacts = new NativeArray(particleGrid.particleContactQueue.Count, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); + var rawFluidInteractions = new NativeArray(particleGrid.fluidInteractionQueue.Count, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); + + DequeueIntoArrayJob dequeueParticleContacts = new DequeueIntoArrayJob() + { + InputQueue = particleGrid.particleContactQueue, + OutputArray = rawParticleContacts + }; + + DequeueIntoArrayJob dequeueFluidInteractions = new DequeueIntoArrayJob() + { + InputQueue = particleGrid.fluidInteractionQueue, + OutputArray = rawFluidInteractions + }; + + DequeueIntoArrayJob dequeueColliderContacts = new DequeueIntoArrayJob() + { + InputQueue = colliderGrid.colliderContactQueue, + OutputArray = colliderContacts + }; + + var dequeueHandle = JobHandle.CombineDependencies(dequeueParticleContacts.Schedule(), dequeueFluidInteractions.Schedule(), dequeueColliderContacts.Schedule()); + + // Sort contacts for jitter-free gauss-seidel (sequential) solving: + dequeueHandle = contactSorter.SortConstraints(simplexCounts.simplexCount, rawParticleContacts, ref sortedParticleContacts, dequeueHandle); + + ContactProvider contactProvider = new ContactProvider() + { + contacts = sortedParticleContacts, + sortedContacts = particleContacts, + simplices = simplices, + simplexCounts = simplexCounts + }; + + FluidInteractionProvider fluidProvider = new FluidInteractionProvider() + { + interactions = rawFluidInteractions, + sortedInteractions = fluidInteractions, + }; + + // batch particle contacts: + var activeParticleBatchCount = new NativeArray(1, Allocator.TempJob); + var particleBatchHandle = collisionConstraintBatcher.BatchConstraints(ref contactProvider, particleCount, ref particleBatchData, ref activeParticleBatchCount, dequeueHandle); + + // batch fluid interactions: + var activeFluidBatchCount = new NativeArray(1, Allocator.TempJob); + var fluidBatchHandle = fluidConstraintBatcher.BatchConstraints(ref fluidProvider, particleCount, ref fluidBatchData, ref activeFluidBatchCount, dequeueHandle); + + JobHandle.CombineDependencies(particleBatchHandle, fluidBatchHandle).Complete(); + + // Generate particle contact/friction batches: + var pc = constraints[(int)Oni.ConstraintType.ParticleCollision] as BurstParticleCollisionConstraints; + var pf = constraints[(int)Oni.ConstraintType.ParticleFriction] as BurstParticleFrictionConstraints; + + for (int i = 0; i < pc.batches.Count; ++i) + pc.batches[i].enabled = false; + + for (int i = 0; i < pf.batches.Count; ++i) + pf.batches[i].enabled = false; + + for (int i = 0; i < activeParticleBatchCount[0]; ++i) + { + // create extra batches if not enough: + if (i == pc.batches.Count) + { + pc.CreateConstraintsBatch(); + pf.CreateConstraintsBatch(); + } + + pc.batches[i].enabled = true; + pf.batches[i].enabled = true; + + (pc.batches[i] as BurstParticleCollisionConstraintsBatch).batchData = particleBatchData[i]; + (pf.batches[i] as BurstParticleFrictionConstraintsBatch ).batchData = particleBatchData[i]; + } + + // Generate fluid interaction batches: + var dc = constraints[(int)Oni.ConstraintType.Density] as BurstDensityConstraints; + + for (int i = 0; i < dc.batches.Count; ++i) + dc.batches[i].enabled = false; + + for (int i = 0; i < activeFluidBatchCount[0]; ++i) + { + // create extra batches if not enough: + if (i == dc.batches.Count) + dc.CreateConstraintsBatch(); + + dc.batches[i].enabled = true; + + (dc.batches[i] as BurstDensityConstraintsBatch).batchData = fluidBatchData[i]; + } + + // dispose of temporary buffers: + rawParticleContacts.Dispose(); + rawFluidInteractions.Dispose(); + sortedParticleContacts.Dispose(); + activeParticleBatchCount.Dispose(); + activeFluidBatchCount.Dispose(); + + } + + return inputDeps; + } + + public IObiJobHandle Substep(float stepTime, float substepTime, int substeps) + { + // Apply aerodynamics + JobHandle aerodynamicsHandle = constraints[(int)Oni.ConstraintType.Aerodynamics].Project(new JobHandle(), stepTime, substepTime, substeps); + + // Predict positions: + var predictPositions = new PredictPositionsJob() + { + activeParticles = activeParticles, + phases = phases, + buoyancies = buoyancies, + + externalForces = externalForces, + inverseMasses = invMasses, + positions = positions, + previousPositions = prevPositions, + velocities = velocities, + + externalTorques = externalTorques, + inverseRotationalMasses = invRotationalMasses, + orientations = orientations, + previousOrientations = prevOrientations, + angularVelocities = angularVelocities, + + gravity = new float4(m_Solver.parameters.gravity, 0), + deltaTime = substepTime, + is2D = abstraction.parameters.mode == Oni.SolverParameters.Mode.Mode2D + }; + + JobHandle predictPositionsHandle = predictPositions.Schedule(activeParticles.Length, 128, aerodynamicsHandle); + + // Project position constraints: + JobHandle projectionHandle = ApplyConstraints(predictPositionsHandle, stepTime, substepTime, substeps); + + // Update velocities: + var updateVelocitiesJob = new UpdateVelocitiesJob() + { + activeParticles = activeParticles, + + inverseMasses = invMasses, + previousPositions = prevPositions, + positions = positions, + velocities = velocities, + + inverseRotationalMasses = invRotationalMasses, + previousOrientations = prevOrientations, + orientations = orientations, + angularVelocities = angularVelocities, + + deltaTime = substepTime, + is2D = abstraction.parameters.mode == Oni.SolverParameters.Mode.Mode2D + }; + + JobHandle updateVelocitiesHandle = updateVelocitiesJob.Schedule(activeParticles.Length, 128, projectionHandle); + + // velocity constraints: + JobHandle velocityCorrectionsHandle = ApplyVelocityCorrections(updateVelocitiesHandle, substepTime); + + // Update positions: + var updatePositionsJob = new UpdatePositionsJob() + { + activeParticles = activeParticles, + positions = positions, + previousPositions = prevPositions, + velocities = velocities, + orientations = orientations, + previousOrientations = prevOrientations, + angularVelocities = angularVelocities, + velocityScale = math.pow(1 - math.clamp(m_Solver.parameters.damping, 0, 1), substepTime), + sleepThreshold = m_Solver.parameters.sleepThreshold + }; + + JobHandle updatePositionsHandle = updatePositionsJob.Schedule(activeParticles.Length, 128, velocityCorrectionsHandle); + + return jobHandlePool.Borrow().SetHandle(updatePositionsHandle); + } + + private JobHandle ApplyVelocityCorrections(JobHandle inputDeps, float deltaTime) + { + var densityParameters = m_Solver.GetConstraintParameters(Oni.ConstraintType.Density); + + if (densityParameters.enabled) + { + var d = constraints[(int)Oni.ConstraintType.Density] as BurstDensityConstraints; + if (d != null) + { + return d.ApplyVelocityCorrections(inputDeps, deltaTime); + } + } + return inputDeps; + } + + private JobHandle ApplyConstraints(JobHandle inputDeps, float stepTime, float substepTime, int substeps) + { + + // calculate max amount of iterations required, and initialize constraints.. + int maxIterations = 0; + for (int i = 0; i < Oni.ConstraintTypeCount; ++i) + { + var parameters = m_Solver.GetConstraintParameters((Oni.ConstraintType)i); + if (parameters.enabled) + { + maxIterations = math.max(maxIterations, parameters.iterations); + inputDeps = constraints[i].Initialize(inputDeps, substepTime); + } + } + + // calculate iteration paddings: + for (int i = 0; i < Oni.ConstraintTypeCount; ++i) + { + var parameters = m_Solver.GetConstraintParameters((Oni.ConstraintType)i); + if (parameters.enabled && parameters.iterations > 0) + padding[i] = (int)math.ceil(maxIterations / (float)parameters.iterations); + else + padding[i] = maxIterations; + } + + // perform projection iterations: + for (int i = 1; i < maxIterations; ++i) + { + for (int j = 0; j < Oni.ConstraintTypeCount; ++j) + { + if (j != (int)Oni.ConstraintType.Aerodynamics) + { + var parameters = m_Solver.GetConstraintParameters((Oni.ConstraintType)j); + if (parameters.enabled && i % padding[j] == 0) + inputDeps = constraints[j].Project(inputDeps, stepTime, substepTime, substeps); + } + } + } + + // final iteration, all groups together: + for (int i = 0; i < Oni.ConstraintTypeCount; ++i) + { + if (i != (int)Oni.ConstraintType.Aerodynamics) + { + var parameters = m_Solver.GetConstraintParameters((Oni.ConstraintType)i); + if (parameters.enabled && parameters.iterations > 0) + inputDeps = constraints[i].Project(inputDeps, stepTime, substepTime, substeps); + } + } + + // Despite friction constraints being applied after collision (since coulomb friction depends on normal impulse) + // we perform a collision iteration right at the end to ensure the final state meets the Signorini-Fichera conditions. + var param = m_Solver.GetConstraintParameters(Oni.ConstraintType.ParticleCollision); + if (param.enabled && param.iterations > 0) + inputDeps = constraints[(int)Oni.ConstraintType.ParticleCollision].Project(inputDeps, stepTime, substepTime, substeps); + param = m_Solver.GetConstraintParameters(Oni.ConstraintType.Collision); + if (param.enabled && param.iterations > 0) + inputDeps = constraints[(int)Oni.ConstraintType.Collision].Project(inputDeps, stepTime, substepTime, substeps); + + return inputDeps; + } + + public void ApplyInterpolation(ObiNativeVector4List startPositions, ObiNativeQuaternionList startOrientations, float stepTime, float unsimulatedTime) + { + + // Interpolate particle positions and orientations. + var interpolate = new InterpolationJob() + { + positions = positions, + startPositions = startPositions.AsNativeArray(), + renderablePositions = renderablePositions, + + orientations = orientations, + startOrientations = startOrientations.AsNativeArray(), + renderableOrientations = renderableOrientations, + + deltaTime = stepTime, + unsimulatedTime = unsimulatedTime, + interpolationMode = m_Solver.parameters.interpolation + }; + + JobHandle jobHandle = interpolate.Schedule(m_Solver.positions.count, 128); + + // Update deformable triangle normals + var updateNormals = new UpdateNormalsJob() + { + renderPositions = renderablePositions, + deformableTriangles = deformableTriangles, + normals = normals + }; + + jobHandle = updateNormals.Schedule(jobHandle); + + // fluid laplacian/anisotropy: + var d = constraints[(int)Oni.ConstraintType.Density] as BurstDensityConstraints; + if (d != null) + jobHandle = d.CalculateAnisotropyLaplacianSmoothing(jobHandle); + + // update axis: + var updatePrincipalAxis = new UpdatePrincipalAxisJob() + { + activeParticles = activeParticles, + renderableOrientations = renderableOrientations, + phases = phases, + principalRadii = principalRadii, + principalAxis = anisotropies, + }; + + jobHandle = updatePrincipalAxis.Schedule(activeParticles.Length, 128, jobHandle); + + jobHandle.Complete(); + + } + + public void InterpolateDiffuseProperties(ObiNativeVector4List properties, + ObiNativeVector4List diffusePositions, + ObiNativeVector4List diffuseProperties, + ObiNativeIntList neighbourCount, + int diffuseCount) + { + particleGrid.InterpolateDiffuseProperties(this, + properties.AsNativeArray(), + diffusePositions.AsNativeArray(), + diffuseProperties.AsNativeArray(), + neighbourCount.AsNativeArray(), + diffuseCount).Complete(); + } + + public void SpatialQuery(ObiNativeQueryShapeList shapes, ObiNativeAffineTransformList transforms, ObiNativeQueryResultList results) + { + var resultsQueue = new NativeQueue(Allocator.Persistent); + + particleGrid.SpatialQuery(this, + shapes.AsNativeArray(), + transforms.AsNativeArray(), + resultsQueue).Complete(); + + int count = resultsQueue.Count; + results.ResizeUninitialized(count); + + var dequeueQueryResults = new DequeueIntoArrayJob() + { + InputQueue = resultsQueue, + OutputArray = results.AsNativeArray() + }; + + var dequeueHandle = dequeueQueryResults.Schedule(); + + var distanceJob = new CalculateQueryDistances() + { + prevPositions = prevPositions, + prevOrientations = prevOrientations, + radii = principalRadii, + simplices = simplices, + simplexCounts = simplexCounts, + queryResults = results.AsNativeArray() + }; + + distanceJob.Schedule(count, 16, dequeueHandle).Complete(); + + resultsQueue.Dispose(); + } + + public int GetParticleGridSize() + { + return particleGrid.grid.usedCells.Length; + } + public void GetParticleGrid(ObiNativeAabbList cells) + { + particleGrid.GetCells(cells); + } + } +} +#endif diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BurstSolverImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BurstSolverImpl.cs.meta new file mode 100644 index 000000000..597b2b50b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/BurstSolverImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d37e8b7fe851346debbbd28e17c1e593 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/DequeueIntoArrayJob.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/DequeueIntoArrayJob.cs new file mode 100644 index 000000000..43a5066eb --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/DequeueIntoArrayJob.cs @@ -0,0 +1,26 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Burst; +using Unity.Jobs; +using Unity.Collections; + +namespace Obi +{ + [BurstCompile] + public struct DequeueIntoArrayJob : IJob where T : unmanaged + { + public int StartIndex; + public NativeQueue InputQueue; + [WriteOnly] public NativeArray OutputArray; + + public void Execute() + { + int queueCount = InputQueue.Count; + + for (int i = StartIndex; i < StartIndex + queueCount; i++) + { + OutputArray[i] = InputQueue.Dequeue(); + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/DequeueIntoArrayJob.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/DequeueIntoArrayJob.cs.meta new file mode 100644 index 000000000..a62baf189 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/DequeueIntoArrayJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8e9889084567047d389e79cf39fc3391 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/FindFluidParticlesJob.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/FindFluidParticlesJob.cs new file mode 100644 index 000000000..f7bb2dac4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/FindFluidParticlesJob.cs @@ -0,0 +1,33 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Burst; +using System; +using System.Collections; + +namespace Obi +{ + [BurstCompile] + struct FindFluidParticlesJob : IJob + { + [ReadOnly] public NativeArray activeParticles; + [ReadOnly] public NativeArray phases; + + public NativeList fluidParticles; + + public void Execute() + { + fluidParticles.Clear(); + + for (int i = 0; i < activeParticles.Length; ++i) + { + int p = activeParticles[i]; + if ((phases[p] & (int)ObiUtils.ParticleFlags.Fluid) != 0) + fluidParticles.Add(p); + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/FindFluidParticlesJob.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/FindFluidParticlesJob.cs.meta new file mode 100644 index 000000000..b146b7347 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/FindFluidParticlesJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 58485b95b70f24a809a8f9509faabdad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/InterpolationJob.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/InterpolationJob.cs new file mode 100644 index 000000000..02625fce0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/InterpolationJob.cs @@ -0,0 +1,42 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using Unity.Jobs; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Burst; + +namespace Obi +{ + [BurstCompile] + struct InterpolationJob : IJobParallelFor + { + [ReadOnly] public NativeArray startPositions; + [ReadOnly] public NativeArray positions; + [WriteOnly] public NativeArray renderablePositions; + + [ReadOnly] public NativeArray startOrientations; + [ReadOnly] public NativeArray orientations; + [WriteOnly] public NativeArray renderableOrientations; + + [ReadOnly] public float deltaTime; + [ReadOnly] public float unsimulatedTime; + [ReadOnly] public Oni.SolverParameters.Interpolation interpolationMode; + + // The code actually running on the job + public void Execute(int i) + { + if (interpolationMode == Oni.SolverParameters.Interpolation.Interpolate && deltaTime > 0) + { + float alpha = unsimulatedTime / deltaTime; + + renderablePositions[i] = math.lerp(startPositions[i], positions[i], alpha); + renderableOrientations[i] = math.normalize(math.slerp(startOrientations[i], orientations[i], alpha)); + } + else + { + renderablePositions[i] = positions[i]; + renderableOrientations[i] = math.normalize(orientations[i]); + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/InterpolationJob.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/InterpolationJob.cs.meta new file mode 100644 index 000000000..6516fdb71 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/InterpolationJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8928e13e186424d31a319347de871c16 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/PredictPositionsJob.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/PredictPositionsJob.cs new file mode 100644 index 000000000..4c204d7b0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/PredictPositionsJob.cs @@ -0,0 +1,82 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Burst; +using System; +using System.Collections; + +namespace Obi +{ + [BurstCompile] + struct PredictPositionsJob : IJobParallelFor + { + [ReadOnly] public NativeArray activeParticles; + [ReadOnly] public NativeArray phases; + [ReadOnly] public NativeArray buoyancies; + + // linear/position properties: + [ReadOnly] public NativeArray externalForces; + [ReadOnly] public NativeArray inverseMasses; + [NativeDisableParallelForRestriction] public NativeArray previousPositions; + [NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableParallelForRestriction] public NativeArray velocities; + + // angular/orientation properties: + [ReadOnly] public NativeArray externalTorques; + [ReadOnly] public NativeArray inverseRotationalMasses; + [NativeDisableParallelForRestriction] public NativeArray previousOrientations; + [NativeDisableParallelForRestriction] public NativeArray orientations; + [NativeDisableParallelForRestriction] public NativeArray angularVelocities; + + [ReadOnly] public float4 gravity; + [ReadOnly] public float deltaTime; + [ReadOnly] public bool is2D; + + public void Execute(int index) + { + int i = activeParticles[index]; + + // the previous position/orientation is the current position/orientation at the start of the step. + previousPositions[i] = positions[i]; + previousOrientations[i] = orientations[i]; + + if (inverseMasses[i] > 0) + { + float4 effectiveGravity = gravity; + + // Adjust gravity for buoyant fluid particles: + if ((phases[i] & (int)ObiUtils.ParticleFlags.Fluid) != 0) + effectiveGravity *= -buoyancies[i]; + + // apply external forces and gravity: + float4 vel = velocities[i] + (inverseMasses[i] * externalForces[i] + effectiveGravity) * deltaTime; + + // project velocity to 2D plane if needed: + if (is2D) + vel[3] = 0; + + velocities[i] = vel; + } + + if (inverseRotationalMasses[i] > 0) + { + // apply external torques (simplification: we don't use full inertia tensor here) + float4 angularVel = angularVelocities[i] + inverseRotationalMasses[i] * externalTorques[i] * deltaTime; + + // project angular velocity to 2D plane normal if needed: + if (is2D) + angularVel = angularVel.project(new float4(0, 0, 1, 0)); + + angularVelocities[i] = angularVel; + } + + // integrate velocities: + positions[i] = BurstIntegration.IntegrateLinear(positions[i], velocities[i], deltaTime); + orientations[i] = BurstIntegration.IntegrateAngular(orientations[i], angularVelocities[i], deltaTime); + + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/PredictPositionsJob.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/PredictPositionsJob.cs.meta new file mode 100644 index 000000000..ea542bbe6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/PredictPositionsJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fcd4a6f15c3844229a95fa41f283d408 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateInertiaTensorsJob.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateInertiaTensorsJob.cs new file mode 100644 index 000000000..90cfe23db --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateInertiaTensorsJob.cs @@ -0,0 +1,38 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Burst; +using System; +using System.Collections; + +namespace Obi +{ + [BurstCompile] + struct UpdateInertiaTensorsJob : IJobParallelFor + { + [ReadOnly] public NativeArray activeParticles; + + [ReadOnly] public NativeArray inverseMasses; + [ReadOnly] public NativeArray inverseRotationalMasses; + [ReadOnly] public NativeArray principalRadii; + + [NativeDisableParallelForRestriction] + public NativeArray inverseInertiaTensors; + + public void Execute(int index) + { + int i = activeParticles[index]; + + float4 sqrRadii = principalRadii[i] * principalRadii[i]; + + inverseInertiaTensors[i] = 5 * inverseRotationalMasses[i] * new float4( + 1 / math.max(sqrRadii[1] + sqrRadii[2], BurstMath.epsilon), + 1 / math.max(sqrRadii[0] + sqrRadii[2], BurstMath.epsilon), + 1 / math.max(sqrRadii[0] + sqrRadii[1], BurstMath.epsilon), + 0); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateInertiaTensorsJob.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateInertiaTensorsJob.cs.meta new file mode 100644 index 000000000..87288db8c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateInertiaTensorsJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fac27eeae85e84131bebdf89ad1d6802 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateNormalsJob.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateNormalsJob.cs new file mode 100644 index 000000000..a9594ef29 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateNormalsJob.cs @@ -0,0 +1,43 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Burst; +using System; +using System.Collections; + +namespace Obi +{ + [BurstCompile] + struct UpdateNormalsJob : IJob + { + [ReadOnly] public NativeList deformableTriangles; + [ReadOnly] public NativeArray renderPositions; + public NativeArray normals; + + public void Execute() + { + for (int i = 0; i < normals.Length; ++i) + normals[i] = float4.zero; + + // Accumulate normals: + for (int i = 0; i < deformableTriangles.Length; i += 3) + { + float4 v1 = renderPositions[deformableTriangles[i]]; + float4 v2 = renderPositions[deformableTriangles[i + 1]]; + float4 v3 = renderPositions[deformableTriangles[i + 2]]; + + float4 n = new float4(math.cross((v2 - v1).xyz, (v3 - v1).xyz), 0); + + normals[deformableTriangles[i]] += n; + normals[deformableTriangles[i + 1]] += n; + normals[deformableTriangles[i + 2]] += n; + } + + for (int i = 0; i < normals.Length; ++i) + normals[i] = math.normalizesafe(normals[i]); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateNormalsJob.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateNormalsJob.cs.meta new file mode 100644 index 000000000..89f9e14c3 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateNormalsJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c46e86e164afb414fbc171972a53eb91 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdatePositionsJob.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdatePositionsJob.cs new file mode 100644 index 000000000..ff7d6590a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdatePositionsJob.cs @@ -0,0 +1,51 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Burst; +using System; +using System.Collections; + +namespace Obi +{ + [BurstCompile] + struct UpdatePositionsJob : IJobParallelFor + { + [ReadOnly] public NativeArray activeParticles; + + // linear/position properties: + [NativeDisableParallelForRestriction] public NativeArray positions; + [ReadOnly] public NativeArray previousPositions; + [NativeDisableParallelForRestriction] public NativeArray velocities; + + // angular/orientation properties: + [NativeDisableParallelForRestriction] public NativeArray orientations; + [ReadOnly] public NativeArray previousOrientations; + [NativeDisableParallelForRestriction] public NativeArray angularVelocities; + + [ReadOnly] public float velocityScale; + [ReadOnly] public float sleepThreshold; + + // The code actually running on the job + public void Execute(int index) + { + int i = activeParticles[index]; + + // damp velocities: + velocities[i] *= velocityScale; + angularVelocities[i] *= velocityScale; + + // if the kinetic energy is below the sleep threshold, keep the particle at its previous position. + if (math.lengthsq(velocities[i]) * 0.5f + math.lengthsq(angularVelocities[i]) * 0.5f <= sleepThreshold) + { + positions[i] = previousPositions[i]; + orientations[i] = previousOrientations[i]; + velocities[i] = float4.zero; + angularVelocities[i] = float4.zero; + } + + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdatePositionsJob.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdatePositionsJob.cs.meta new file mode 100644 index 000000000..1bb7363ed --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdatePositionsJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a41d3897adb37457da8385a46e6f0bb6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdatePrincipalAxisJob.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdatePrincipalAxisJob.cs new file mode 100644 index 000000000..09a537194 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdatePrincipalAxisJob.cs @@ -0,0 +1,50 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Burst; +using System; +using System.Collections; + +namespace Obi +{ + [BurstCompile] + struct UpdatePrincipalAxisJob : IJobParallelFor + { + [ReadOnly] public NativeArray activeParticles; + [ReadOnly] public NativeArray renderableOrientations; + [ReadOnly] public NativeArray phases; + [ReadOnly] public NativeArray principalRadii; + + [NativeDisableParallelForRestriction] + public NativeArray principalAxis; + + public void Execute(int index) + { + int i = activeParticles[index]; + + // fluid particles get their principal axes from the neighborhood matrix, so skip them. + if ((phases[i] & (int)ObiUtils.ParticleFlags.Fluid) == 0) + { + int i3 = i * 3; + float4x4 rot = renderableOrientations[i].toMatrix(); + + // set axis direction: + float4 pAxis1 = rot.c0; + float4 pAxis2 = rot.c1; + float4 pAxis3 = rot.c2; + + // set axis length: + pAxis1[3] = principalRadii[i][0]; + pAxis2[3] = principalRadii[i][1]; + pAxis3[3] = principalRadii[i][2]; + + principalAxis[i3] = pAxis1; + principalAxis[i3+1] = pAxis2; + principalAxis[i3+2] = pAxis3; + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdatePrincipalAxisJob.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdatePrincipalAxisJob.cs.meta new file mode 100644 index 000000000..711a4fc8c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdatePrincipalAxisJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 22028834877974573b3b29b8a2b8f6cc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateVelocitiesJob.cs b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateVelocitiesJob.cs new file mode 100644 index 000000000..1d6159fca --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateVelocitiesJob.cs @@ -0,0 +1,58 @@ +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) +using UnityEngine; +using Unity.Jobs; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Burst; +using System; +using System.Collections; + +namespace Obi +{ + [BurstCompile] + struct UpdateVelocitiesJob : IJobParallelFor + { + [ReadOnly] public NativeArray activeParticles; + + // linear/position properties: + [ReadOnly] public NativeArray inverseMasses; + [ReadOnly] public NativeArray previousPositions; + [NativeDisableParallelForRestriction] public NativeArray positions; + [NativeDisableParallelForRestriction] [WriteOnly] public NativeArray velocities; + + // angular/orientation properties: + [ReadOnly] public NativeArray inverseRotationalMasses; + [ReadOnly] public NativeArray previousOrientations; + [NativeDisableParallelForRestriction] public NativeArray orientations; + [NativeDisableParallelForRestriction] [WriteOnly] public NativeArray angularVelocities; + + [ReadOnly] public float deltaTime; + [ReadOnly] public bool is2D; + + // The code actually running on the job + public void Execute(int index) + { + int i = activeParticles[index]; + + // Project particles on the XY plane if we are in 2D mode: + if (is2D) + { + // restrict position to the 2D plane + float4 pos = positions[i]; + pos[2] = previousPositions[i][2]; + positions[i] = pos; + } + + if (inverseMasses[i] > 0) + velocities[i] = BurstIntegration.DifferentiateLinear(positions[i], previousPositions[i], deltaTime); + else + velocities[i] = float4.zero; + + if (inverseRotationalMasses[i] > 0) + angularVelocities[i] = BurstIntegration.DifferentiateAngular(orientations[i], previousOrientations[i], deltaTime); + else + angularVelocities[i] = float4.zero; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateVelocitiesJob.cs.meta b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateVelocitiesJob.cs.meta new file mode 100644 index 000000000..f437dcecc --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Burst/Solver/UpdateVelocitiesJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d10fd506f9f2645ecbf2d61a4634a5ba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface.meta b/Assets/Obi/Scripts/Common/Backends/Interface.meta new file mode 100644 index 000000000..21a345be7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d4b76e41a8d95486abaf6cefe4451e85 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Collisions.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Collisions.meta new file mode 100644 index 000000000..3d5633851 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Collisions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 26d4fb7ae70404953b2fe6daed5564d7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Collisions/IColliderWorldImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Collisions/IColliderWorldImpl.cs new file mode 100644 index 000000000..cce5b3afd --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Collisions/IColliderWorldImpl.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using System.Collections; +using Unity.Jobs; + +namespace Obi +{ + public interface IColliderWorldImpl + { + int referenceCount { get; } + + void UpdateWorld(float deltaTime); + + void SetColliders(ObiNativeColliderShapeList shapes, ObiNativeAabbList bounds, ObiNativeAffineTransformList transforms, int count); + void SetRigidbodies(ObiNativeRigidbodyList rigidbody); + + void SetCollisionMaterials(ObiNativeCollisionMaterialList materials); + + void SetTriangleMeshData(ObiNativeTriangleMeshHeaderList headers, ObiNativeBIHNodeList nodes, ObiNativeTriangleList triangles, ObiNativeVector3List vertices); + void SetEdgeMeshData(ObiNativeEdgeMeshHeaderList headers, ObiNativeBIHNodeList nodes, ObiNativeEdgeList triangles, ObiNativeVector2List vertices); + void SetDistanceFieldData(ObiNativeDistanceFieldHeaderList headers, ObiNativeDFNodeList nodes); + void SetHeightFieldData(ObiNativeHeightFieldHeaderList headers, ObiNativeFloatList samples); + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Collisions/IColliderWorldImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Collisions/IColliderWorldImpl.cs.meta new file mode 100644 index 000000000..074d487dd --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Collisions/IColliderWorldImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 89f411e99368641bda6ba6dd0864c8c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Collisions/IColliderWorldImpl.cs.orig b/Assets/Obi/Scripts/Common/Backends/Interface/Collisions/IColliderWorldImpl.cs.orig new file mode 100644 index 000000000..640762fba --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Collisions/IColliderWorldImpl.cs.orig @@ -0,0 +1,27 @@ +using UnityEngine; +using System.Collections; +using Unity.Jobs; + +namespace Obi +{ + public interface IColliderWorldImpl + { +<<<<<<< HEAD + void UpdateWorld(float deltaTime); +======= + int referenceCount { get; } + + void UpdateWorld(); +>>>>>>> 56Hotfix + + void SetColliders(ObiNativeColliderShapeList shapes, ObiNativeAabbList bounds, ObiNativeAffineTransformList transforms, int count); + void SetRigidbodies(ObiNativeRigidbodyList rigidbody); + + void SetCollisionMaterials(ObiNativeCollisionMaterialList materials); + + void SetTriangleMeshData(ObiNativeTriangleMeshHeaderList headers, ObiNativeBIHNodeList nodes, ObiNativeTriangleList triangles, ObiNativeVector3List vertices); + void SetEdgeMeshData(ObiNativeEdgeMeshHeaderList headers, ObiNativeBIHNodeList nodes, ObiNativeEdgeList triangles, ObiNativeVector2List vertices); + void SetDistanceFieldData(ObiNativeDistanceFieldHeaderList headers, ObiNativeDFNodeList nodes); + void SetHeightFieldData(ObiNativeHeightFieldHeaderList headers, ObiNativeFloatList samples); + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Collisions/IColliderWorldImpl.cs.orig.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Collisions/IColliderWorldImpl.cs.orig.meta new file mode 100644 index 000000000..3eac5a6a4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Collisions/IColliderWorldImpl.cs.orig.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1a37affa245de4938b08eb9ff13f2c13 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints.meta new file mode 100644 index 000000000..f569b9ec1 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 92371fdf7eced49a58fe7a78f21d85e0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IAerodynamicConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IAerodynamicConstraintsBatchImpl.cs new file mode 100644 index 000000000..d895a7351 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IAerodynamicConstraintsBatchImpl.cs @@ -0,0 +1,10 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface IAerodynamicConstraintsBatchImpl : IConstraintsBatchImpl + { + void SetAerodynamicConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList aerodynamicCoeffs, int count); + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IAerodynamicConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IAerodynamicConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..ec621fcb7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IAerodynamicConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a0f082ce0011f44c68afb3e08a94174f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IBendConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IBendConstraintsBatchImpl.cs new file mode 100644 index 000000000..b193e7f5a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IBendConstraintsBatchImpl.cs @@ -0,0 +1,10 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface IBendConstraintsBatchImpl : IConstraintsBatchImpl + { + void SetBendConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList restBends, ObiNativeVector2List bendingStiffnesses, ObiNativeVector2List plasticity, ObiNativeFloatList lambdas, int count); + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IBendConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IBendConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..7cf161a99 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IBendConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 04ed7586a63754fedac80c4d72ccc001 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IBendTwistConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IBendTwistConstraintsBatchImpl.cs new file mode 100644 index 000000000..497717078 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IBendTwistConstraintsBatchImpl.cs @@ -0,0 +1,10 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface IBendTwistConstraintsBatchImpl : IConstraintsBatchImpl + { + void SetBendTwistConstraints(ObiNativeIntList orientationIndices, ObiNativeQuaternionList restDarboux, ObiNativeVector3List stiffnesses, ObiNativeVector2List plasticity, ObiNativeFloatList lambdas, int count); + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IBendTwistConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IBendTwistConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..dbf23c82e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IBendTwistConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 80c2392ca65914fdbac721d82d5266d5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IChainConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IChainConstraintsBatchImpl.cs new file mode 100644 index 000000000..5cb62079f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IChainConstraintsBatchImpl.cs @@ -0,0 +1,10 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface IChainConstraintsBatchImpl : IConstraintsBatchImpl + { + void SetChainConstraints(ObiNativeIntList particleIndices, ObiNativeVector2List restLengths, ObiNativeIntList firstIndex, ObiNativeIntList numIndex, int count); + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IChainConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IChainConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..c606a1e25 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IChainConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 51e802e7c035e4ce799a5afb80a5da5c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IColliderCollisionConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IColliderCollisionConstraintsBatchImpl.cs new file mode 100644 index 000000000..89eeba090 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IColliderCollisionConstraintsBatchImpl.cs @@ -0,0 +1,10 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface IColliderCollisionConstraintsBatchImpl : IConstraintsBatchImpl + { + + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IColliderCollisionConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IColliderCollisionConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..c1bf39c6c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IColliderCollisionConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bad55e75f72144e6b992f17ad436af57 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IColliderFrictionConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IColliderFrictionConstraintsBatchImpl.cs new file mode 100644 index 000000000..8e5d68be1 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IColliderFrictionConstraintsBatchImpl.cs @@ -0,0 +1,10 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface IColliderFrictionConstraintsBatchImpl : IConstraintsBatchImpl + { + + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IColliderFrictionConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IColliderFrictionConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..b5cb7ccdc --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IColliderFrictionConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ce5da28cc60854096a6af5377bc0b9ba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IConstraintsBatchImpl.cs new file mode 100644 index 000000000..88141ec34 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IConstraintsBatchImpl.cs @@ -0,0 +1,29 @@ + +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface IConstraintsBatchImpl + { + Oni.ConstraintType constraintType + { + get; + } + + IConstraints constraints + { + get; + } + + bool enabled + { + set; + get; + } + + void Destroy(); + void SetConstraintCount(int constraintCount); + int GetConstraintCount(); + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..c35570b34 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6631e8d65517d4eb7adfaec19126e754 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IConstraintsImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IConstraintsImpl.cs new file mode 100644 index 000000000..27f4159b9 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IConstraintsImpl.cs @@ -0,0 +1,22 @@ + +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface IConstraints + { + Oni.ConstraintType constraintType + { + get; + } + + ISolverImpl solver + { + get; + } + + int GetConstraintCount(); + } + +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IConstraintsImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IConstraintsImpl.cs.meta new file mode 100644 index 000000000..f594dc1a0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IConstraintsImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8198ad7e2d14140879a794fc8f90e61d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IDensityConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IDensityConstraintsBatchImpl.cs new file mode 100644 index 000000000..d07840372 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IDensityConstraintsBatchImpl.cs @@ -0,0 +1,10 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface IDensityConstraintsBatchImpl : IConstraintsBatchImpl + { + + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IDensityConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IDensityConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..5cb2c6e0a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IDensityConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b2df20fbf9eee489c9999427bedc7f00 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IDistanceConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IDistanceConstraintsBatchImpl.cs new file mode 100644 index 000000000..0219bfdcd --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IDistanceConstraintsBatchImpl.cs @@ -0,0 +1,10 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface IDistanceConstraintsBatchImpl : IConstraintsBatchImpl + { + void SetDistanceConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList restLengths, ObiNativeVector2List stiffnesses, ObiNativeFloatList lambdas, int count); + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IDistanceConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IDistanceConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..547a2780d --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IDistanceConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 462485304564147b08d192696258a593 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IParticleCollisionConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IParticleCollisionConstraintsBatchImpl.cs new file mode 100644 index 000000000..1228835fc --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IParticleCollisionConstraintsBatchImpl.cs @@ -0,0 +1,10 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface IParticleCollisionConstraintsBatchImpl : IConstraintsBatchImpl + { + + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IParticleCollisionConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IParticleCollisionConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..206847c60 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IParticleCollisionConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e1fef58a2a6c74dd08e04b9df48f028e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IParticleFrictionConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IParticleFrictionConstraintsBatchImpl.cs new file mode 100644 index 000000000..5bf2fb87e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IParticleFrictionConstraintsBatchImpl.cs @@ -0,0 +1,10 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface IParticleFrictionConstraintsBatchImpl : IConstraintsBatchImpl + { + + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IParticleFrictionConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IParticleFrictionConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..93764bbf0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IParticleFrictionConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4d283cf8766664a728b1a3372c4a423a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IPinConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IPinConstraintsBatchImpl.cs new file mode 100644 index 000000000..3f934c7a3 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IPinConstraintsBatchImpl.cs @@ -0,0 +1,10 @@ + +using System.Collections.Generic; + +namespace Obi +{ + public interface IPinConstraintsBatchImpl : IConstraintsBatchImpl + { + void SetPinConstraints(ObiNativeIntList particleIndices, ObiNativeIntList colliderIndices, ObiNativeVector4List offsets, ObiNativeQuaternionList restDarbouxVectors, ObiNativeFloatList stiffnesses, ObiNativeFloatList lambdas, int count); + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IPinConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IPinConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..49bf0532b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IPinConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 339a70e0be9984072a153f58552747e7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IShapeMatchingConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IShapeMatchingConstraintsBatchImpl.cs new file mode 100644 index 000000000..10ed30448 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IShapeMatchingConstraintsBatchImpl.cs @@ -0,0 +1,20 @@ +namespace Obi +{ + public interface IShapeMatchingConstraintsBatchImpl : IConstraintsBatchImpl + { + void SetShapeMatchingConstraints(ObiNativeIntList particleIndices, + ObiNativeIntList firstIndex, + ObiNativeIntList numIndices, + ObiNativeIntList explicitGroup, + ObiNativeFloatList shapeMaterialParameters, + ObiNativeVector4List restComs, + ObiNativeVector4List coms, + ObiNativeQuaternionList orientations, + ObiNativeMatrix4x4List linearTransforms, + ObiNativeMatrix4x4List plasticDeformations, + ObiNativeFloatList lambdas, + int count); + + void CalculateRestShapeMatching(); + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IShapeMatchingConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IShapeMatchingConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..85a812c33 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IShapeMatchingConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 793544a177038489599056d49197b4b7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/ISkinConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/ISkinConstraintsBatchImpl.cs new file mode 100644 index 000000000..8d9601377 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/ISkinConstraintsBatchImpl.cs @@ -0,0 +1,10 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface ISkinConstraintsBatchImpl : IConstraintsBatchImpl + { + void SetSkinConstraints(ObiNativeIntList particleIndices, ObiNativeVector4List skinPoints, ObiNativeVector4List skinNormals, ObiNativeFloatList skinRadiiBackstop, ObiNativeFloatList skinCompliance, ObiNativeFloatList lambdas, int count); + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/ISkinConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/ISkinConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..ada65b308 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/ISkinConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7c42e394fbac64742a7d3aae172e7750 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IStitchConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IStitchConstraintsBatchImpl.cs new file mode 100644 index 000000000..72b9bf6c4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IStitchConstraintsBatchImpl.cs @@ -0,0 +1,10 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface IStitchConstraintsBatchImpl : IConstraintsBatchImpl + { + void SetStitchConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList stiffnesses, ObiNativeFloatList lambdas, int count); + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IStitchConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IStitchConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..94e463971 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IStitchConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f42ef0ded9a564c599a8797894ea1d1e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IStretchShearConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IStretchShearConstraintsBatchImpl.cs new file mode 100644 index 000000000..92ad6e7a3 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IStretchShearConstraintsBatchImpl.cs @@ -0,0 +1,10 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface IStretchShearConstraintsBatchImpl : IConstraintsBatchImpl + { + void SetStretchShearConstraints(ObiNativeIntList particleIndices, ObiNativeIntList orientationIndices, ObiNativeFloatList restLengths, ObiNativeQuaternionList restOrientations, ObiNativeVector3List stiffnesses, ObiNativeFloatList lambdas, int count); + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IStretchShearConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IStretchShearConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..6287a9b84 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IStretchShearConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4afb32b230ee849909c3b9b246b6a51e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/ITetherConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/ITetherConstraintsBatchImpl.cs new file mode 100644 index 000000000..f4fb07ee0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/ITetherConstraintsBatchImpl.cs @@ -0,0 +1,10 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface ITetherConstraintsBatchImpl : IConstraintsBatchImpl + { + void SetTetherConstraints(ObiNativeIntList particleIndices, ObiNativeVector2List maxLengthScale, ObiNativeFloatList stiffnesses, ObiNativeFloatList lambdas, int count); + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/ITetherConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/ITetherConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..77342bd8c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/ITetherConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b7ea8208967a0450a85e41d98a4f0f57 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IVolumeConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IVolumeConstraintsBatchImpl.cs new file mode 100644 index 000000000..ee1468b98 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IVolumeConstraintsBatchImpl.cs @@ -0,0 +1,16 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public interface IVolumeConstraintsBatchImpl : IConstraintsBatchImpl + { + void SetVolumeConstraints(ObiNativeIntList triangles, + ObiNativeIntList firstTriangle, + ObiNativeIntList numTriangles, + ObiNativeFloatList restVolumes, + ObiNativeVector2List pressureStiffness, + ObiNativeFloatList lambdas, + int count); + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IVolumeConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IVolumeConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..3ec9a34ef --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Constraints/IVolumeConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f5f8748ef424c445d949c21d3528e6ee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/IObiBackend.cs b/Assets/Obi/Scripts/Common/Backends/Interface/IObiBackend.cs new file mode 100644 index 000000000..47e101f85 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/IObiBackend.cs @@ -0,0 +1,18 @@ +using UnityEngine; +using System; +using System.Collections; + +namespace Obi +{ + /** + * Base class for backend implementations. + */ + public interface IObiBackend + { + #region Solver + ISolverImpl CreateSolver(ObiSolver solver, int capacity); + void DestroySolver(ISolverImpl solver); + #endregion + } + +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/IObiBackend.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/IObiBackend.cs.meta new file mode 100644 index 000000000..7101122fc --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/IObiBackend.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3212c809e81a349d298b283ff8b1f367 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/IObiJobHandle.cs b/Assets/Obi/Scripts/Common/Backends/Interface/IObiJobHandle.cs new file mode 100644 index 000000000..137e033ab --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/IObiJobHandle.cs @@ -0,0 +1,8 @@ +namespace Obi +{ + public interface IObiJobHandle + { + void Complete(); + void Release(); + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/IObiJobHandle.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/IObiJobHandle.cs.meta new file mode 100644 index 000000000..364b7d5f0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/IObiJobHandle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2f2948e6b45fe44c09866380b7ebb2ff +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/JobHandlePool.cs b/Assets/Obi/Scripts/Common/Backends/Interface/JobHandlePool.cs new file mode 100644 index 000000000..c27e279b8 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/JobHandlePool.cs @@ -0,0 +1,40 @@ +using System.Collections.Generic; + +namespace Obi +{ + + /** + * Simple pool to avoid allocating job handles at runtime. Only a small number of handles + * are expected, so once a handle is borrowed from the pool it cannot be individually returned: all + * borrowed handles are returned to the pool at the end of each step. + */ + public class JobHandlePool where T : IObiJobHandle , new() + { + private List pool; + private int borrowedHandles; + + public JobHandlePool(int initialSize) + { + borrowedHandles = 0; + pool = new List(initialSize); + for (int i = 0; i < initialSize; ++i) + pool.Add(new T()); + } + + public T Borrow() + { + // expand pool if needed (no pool doubling, simply add one extra handle). + if (borrowedHandles == pool.Count) + pool.Add(new T()); + + return pool[borrowedHandles++]; + } + + public void ReleaseAll() + { + borrowedHandles = 0; + for (int i = 0; i < pool.Count; ++i) + pool[i].Release(); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/JobHandlePool.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/JobHandlePool.cs.meta new file mode 100644 index 000000000..f9be91f08 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/JobHandlePool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 41815ed20fd8a498ca433a2d90ee1136 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Solver.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Solver.meta new file mode 100644 index 000000000..f46f37198 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Solver.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 05a823cecfaf946f7ab1f11139245d20 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Solver/ISolverImpl.cs b/Assets/Obi/Scripts/Common/Backends/Interface/Solver/ISolverImpl.cs new file mode 100644 index 000000000..d99359509 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Solver/ISolverImpl.cs @@ -0,0 +1,60 @@ +using UnityEngine; + +namespace Obi +{ + public interface ISolverImpl + { + #region Lifecycle + void Destroy(); + #endregion + + #region Inertial Frame + void InitializeFrame(Vector4 translation, Vector4 scale, Quaternion rotation); + void UpdateFrame(Vector4 translation, Vector4 scale, Quaternion rotation, float deltaTime); + void ApplyFrame(float worldLinearInertiaScale, float worldAngularInertiaScale, float deltaTime); + #endregion + + #region Particles + void ParticleCountChanged(ObiSolver solver); + void SetActiveParticles(ObiNativeIntList indices); + void InterpolateDiffuseProperties(ObiNativeVector4List properties, ObiNativeVector4List diffusePositions, ObiNativeVector4List diffuseProperties, ObiNativeIntList neighbourCount, int diffuseCount); + #endregion + + #region Rigidbodies + void SetRigidbodyArrays(ObiSolver solver); + #endregion + + #region Constraints + IConstraintsBatchImpl CreateConstraintsBatch(Oni.ConstraintType type); + void DestroyConstraintsBatch(IConstraintsBatchImpl batch); + int GetConstraintCount(Oni.ConstraintType type); + void GetCollisionContacts(Oni.Contact[] contacts, int count); + void GetParticleCollisionContacts(Oni.Contact[] contacts, int count); + void SetConstraintGroupParameters(Oni.ConstraintType type, ref Oni.ConstraintParameters parameters); + #endregion + + #region Update + IObiJobHandle CollisionDetection(float stepTime); + IObiJobHandle Substep(float stepTime, float substepTime, int substeps); + void ApplyInterpolation(ObiNativeVector4List startPositions, ObiNativeQuaternionList startOrientations, float stepTime, float unsimulatedTime); + #endregion + + #region Simplices + int GetDeformableTriangleCount(); + void SetDeformableTriangles(int[] indices, int num, int destOffset); + int RemoveDeformableTriangles(int num, int sourceOffset); + + void SetSimplices(ObiNativeIntList simplices, SimplexCounts counts); + #endregion + + #region Utils + void SetParameters(Oni.SolverParameters parameters); + void GetBounds(ref Vector3 min, ref Vector3 max); + void ResetForces(); + int GetParticleGridSize(); + void GetParticleGrid(ObiNativeAabbList cells); + void SpatialQuery(ObiNativeQueryShapeList shapes, ObiNativeAffineTransformList transforms, ObiNativeQueryResultList results); + void ReleaseJobHandles(); + #endregion + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Interface/Solver/ISolverImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Interface/Solver/ISolverImpl.cs.meta new file mode 100644 index 000000000..7f921dc22 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Interface/Solver/ISolverImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e99a50686df1a44519aa29d8424d670e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Null.meta b/Assets/Obi/Scripts/Common/Backends/Null.meta new file mode 100644 index 000000000..423fa904e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Null.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3c5d200156f104097b803ba65cd0fe72 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Null/NullBackend.cs b/Assets/Obi/Scripts/Common/Backends/Null/NullBackend.cs new file mode 100644 index 000000000..0badd2fee --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Null/NullBackend.cs @@ -0,0 +1,16 @@ +namespace Obi +{ + public class NullBackend : IObiBackend + { + #region Solver + public ISolverImpl CreateSolver(ObiSolver solver, int capacity) + { + return new NullSolverImpl(); + } + public void DestroySolver(ISolverImpl solver) + { + } + #endregion + + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Null/NullBackend.cs.meta b/Assets/Obi/Scripts/Common/Backends/Null/NullBackend.cs.meta new file mode 100644 index 000000000..c1937b73a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Null/NullBackend.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 821d5c08bf0f9459698d65c3aaabaf54 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Null/NullSolverImpl.cs b/Assets/Obi/Scripts/Common/Backends/Null/NullSolverImpl.cs new file mode 100644 index 000000000..37dfe52e1 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Null/NullSolverImpl.cs @@ -0,0 +1,128 @@ +using UnityEngine; +using System; + +namespace Obi +{ + public class NullSolverImpl : ISolverImpl + { + + public void Destroy() + { + } + + public void InitializeFrame(Vector4 translation, Vector4 scale, Quaternion rotation) + { + } + + public void UpdateFrame(Vector4 translation, Vector4 scale, Quaternion rotation, float deltaTime) + { + } + + public void ApplyFrame(float worldLinearInertiaScale, float worldAngularInertiaScale, float deltaTime) + { + } + + public int GetDeformableTriangleCount() + { + return 0; + } + public void SetDeformableTriangles(int[] indices, int num, int destOffset) + { + + } + public int RemoveDeformableTriangles(int num, int sourceOffset) + { + return 0; + } + + public void SetSimplices(ObiNativeIntList simplices, SimplexCounts counts) + { + } + + public void ParticleCountChanged(ObiSolver solver) + { + } + + public void SetRigidbodyArrays(ObiSolver solver) + { + } + + public void SetActiveParticles(ObiNativeIntList indices) + { + } + + public void ResetForces() + { + } + + public void GetBounds(ref Vector3 min, ref Vector3 max) + { + } + + public void SetParameters(Oni.SolverParameters parameters) + { + } + + public int GetConstraintCount(Oni.ConstraintType type) + { + return 0; + } + + public void GetCollisionContacts(Oni.Contact[] contacts, int count) + { + } + + public void GetParticleCollisionContacts(Oni.Contact[] contacts, int count) + { + } + + public void SetConstraintGroupParameters(Oni.ConstraintType type, ref Oni.ConstraintParameters parameters) + { + } + + public IConstraintsBatchImpl CreateConstraintsBatch(Oni.ConstraintType constraintType) + { + return null; + } + + public void DestroyConstraintsBatch(IConstraintsBatchImpl group) + { + } + + public IObiJobHandle CollisionDetection(float stepTime) + { + return null; + } + + public IObiJobHandle Substep(float stepTime, float substepTime, int index) + { + return null; + } + + public void ApplyInterpolation(ObiNativeVector4List startPositions, ObiNativeQuaternionList startOrientations, float stepTime, float unsimulatedTime) + { + } + + public void InterpolateDiffuseProperties(ObiNativeVector4List properties, ObiNativeVector4List diffusePositions, ObiNativeVector4List diffuseProperties, ObiNativeIntList neighbourCount, int diffuseCount) + { + } + + public int GetParticleGridSize() + { + return 0; + } + + public void GetParticleGrid(ObiNativeAabbList cells) + { + } + + public void SpatialQuery(ObiNativeQueryShapeList shapes, ObiNativeAffineTransformList transforms, ObiNativeQueryResultList results) + { + } + + public void ReleaseJobHandles() + { + + } + } +} diff --git a/Assets/Obi/Scripts/Common/Backends/Null/NullSolverImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Null/NullSolverImpl.cs.meta new file mode 100644 index 000000000..4352d9f84 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Null/NullSolverImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f25a17b2fd1424dde851a7751e41d7b3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni.meta b/Assets/Obi/Scripts/Common/Backends/Oni.meta new file mode 100644 index 000000000..bcd65f30c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 681a7c364e05c483f85cad1eb07018fd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints.meta new file mode 100644 index 000000000..6443434bf --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 97b02df45f4844e32a90f2f5d93de422 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Aerodynamics.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Aerodynamics.meta new file mode 100644 index 000000000..f3e2fd42e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Aerodynamics.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac58d86bbc15740a98fd45e796e43034 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Aerodynamics/OniAerodynamicConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Aerodynamics/OniAerodynamicConstraintsBatchImpl.cs new file mode 100644 index 000000000..068dafad6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Aerodynamics/OniAerodynamicConstraintsBatchImpl.cs @@ -0,0 +1,20 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniAerodynamicConstraintsBatchImpl : OniConstraintsBatchImpl, IAerodynamicConstraintsBatchImpl + { + public OniAerodynamicConstraintsBatchImpl(OniAerodynamicConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Aerodynamics) + { + } + + public void SetAerodynamicConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList aerodynamicCoeffs, int count) + { + Oni.SetAerodynamicConstraints(oniBatch, particleIndices.GetIntPtr(), aerodynamicCoeffs.GetIntPtr(), count); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Aerodynamics/OniAerodynamicConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Aerodynamics/OniAerodynamicConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..093d4d364 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Aerodynamics/OniAerodynamicConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2eaf9121855a4484d8f5765d4ad9d974 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Aerodynamics/OniAerodynamicConstraintsImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Aerodynamics/OniAerodynamicConstraintsImpl.cs new file mode 100644 index 000000000..f50bf5650 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Aerodynamics/OniAerodynamicConstraintsImpl.cs @@ -0,0 +1,28 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniAerodynamicConstraintsImpl : OniConstraintsImpl + { + + public OniAerodynamicConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Aerodynamics) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var batch = new OniAerodynamicConstraintsBatchImpl(this); + Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + return batch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Aerodynamics/OniAerodynamicConstraintsImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Aerodynamics/OniAerodynamicConstraintsImpl.cs.meta new file mode 100644 index 000000000..a5a5b519f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Aerodynamics/OniAerodynamicConstraintsImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 990162413cc804203a6ca5d7d90e1ae3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Bend.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Bend.meta new file mode 100644 index 000000000..be125343c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Bend.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64ac30003117243aba84fc4298f84eb7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Bend/OniBendConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Bend/OniBendConstraintsBatchImpl.cs new file mode 100644 index 000000000..05fd5d83c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Bend/OniBendConstraintsBatchImpl.cs @@ -0,0 +1,20 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniBendConstraintsBatchImpl : OniConstraintsBatchImpl, IBendConstraintsBatchImpl + { + public OniBendConstraintsBatchImpl(OniBendConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Bending) + { + } + + public void SetBendConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList restBends, ObiNativeVector2List bendingStiffnesses, ObiNativeVector2List plasticity, ObiNativeFloatList lambdas, int count) + { + Oni.SetBendingConstraints(oniBatch, particleIndices.GetIntPtr(), restBends.GetIntPtr(), bendingStiffnesses.GetIntPtr(), plasticity.GetIntPtr(), lambdas.GetIntPtr(), count); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Bend/OniBendConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Bend/OniBendConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..a3260da5b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Bend/OniBendConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e465799aa3593428ebabdef6d97f2b4a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Bend/OniBendConstraintsImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Bend/OniBendConstraintsImpl.cs new file mode 100644 index 000000000..6c33c9fe3 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Bend/OniBendConstraintsImpl.cs @@ -0,0 +1,28 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniBendConstraintsImpl : OniConstraintsImpl + { + + public OniBendConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Bending) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var batch = new OniBendConstraintsBatchImpl(this); + Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + return batch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Bend/OniBendConstraintsImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Bend/OniBendConstraintsImpl.cs.meta new file mode 100644 index 000000000..7175df868 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Bend/OniBendConstraintsImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: abf82a5f5548d41feaaa9fa141461c4c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/BendTwist.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/BendTwist.meta new file mode 100644 index 000000000..761171833 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/BendTwist.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cdbe2ed97af924bb9ba78bac0fc122c7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/BendTwist/OniBendTwistConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/BendTwist/OniBendTwistConstraintsBatchImpl.cs new file mode 100644 index 000000000..11ff42861 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/BendTwist/OniBendTwistConstraintsBatchImpl.cs @@ -0,0 +1,20 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniBendTwistConstraintsBatchImpl : OniConstraintsBatchImpl, IBendTwistConstraintsBatchImpl + { + public OniBendTwistConstraintsBatchImpl(OniBendTwistConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.BendTwist) + { + } + + public void SetBendTwistConstraints(ObiNativeIntList orientationIndices, ObiNativeQuaternionList restOrientations, ObiNativeVector3List stiffnesses, ObiNativeVector2List plasticity, ObiNativeFloatList lambdas, int count) + { + Oni.SetBendTwistConstraints(oniBatch, orientationIndices.GetIntPtr(), restOrientations.GetIntPtr(), stiffnesses.GetIntPtr(), plasticity.GetIntPtr(), lambdas.GetIntPtr(), count); + } + } +} +#endif diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/BendTwist/OniBendTwistConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/BendTwist/OniBendTwistConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..5e06b79bd --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/BendTwist/OniBendTwistConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ba36c80996a534178a1db381ccbc8949 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/BendTwist/OniBendTwistConstraintsImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/BendTwist/OniBendTwistConstraintsImpl.cs new file mode 100644 index 000000000..d84eb3989 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/BendTwist/OniBendTwistConstraintsImpl.cs @@ -0,0 +1,28 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniBendTwistConstraintsImpl : OniConstraintsImpl + { + + public OniBendTwistConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.BendTwist) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var batch = new OniBendTwistConstraintsBatchImpl(this); + Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + return batch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/BendTwist/OniBendTwistConstraintsImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/BendTwist/OniBendTwistConstraintsImpl.cs.meta new file mode 100644 index 000000000..0bd43da19 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/BendTwist/OniBendTwistConstraintsImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c6be6b2551afe45508d996dd67d1b710 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Chain.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Chain.meta new file mode 100644 index 000000000..976f69717 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Chain.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1a6c548d46acc4e88a31b3bf6b0a9ea8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Chain/OniChainConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Chain/OniChainConstraintsBatchImpl.cs new file mode 100644 index 000000000..df76bc01d --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Chain/OniChainConstraintsBatchImpl.cs @@ -0,0 +1,20 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniChainConstraintsBatchImpl : OniConstraintsBatchImpl, IChainConstraintsBatchImpl + { + public OniChainConstraintsBatchImpl(OniChainConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Chain) + { + } + + public void SetChainConstraints(ObiNativeIntList particleIndices, ObiNativeVector2List restLengths, ObiNativeIntList firstIndex, ObiNativeIntList numIndices, int count) + { + Oni.SetChainConstraints(oniBatch, particleIndices.GetIntPtr(), restLengths.GetIntPtr(), firstIndex.GetIntPtr(), numIndices.GetIntPtr(), count); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Chain/OniChainConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Chain/OniChainConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..26a1a272a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Chain/OniChainConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 315f0420a391e43b3a3e255fce157f2a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Chain/OniChainConstraintsImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Chain/OniChainConstraintsImpl.cs new file mode 100644 index 000000000..0ce503c32 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Chain/OniChainConstraintsImpl.cs @@ -0,0 +1,28 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniChainConstraintsImpl : OniConstraintsImpl + { + + public OniChainConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Chain) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var batch = new OniChainConstraintsBatchImpl(this); + Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + return batch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Chain/OniChainConstraintsImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Chain/OniChainConstraintsImpl.cs.meta new file mode 100644 index 000000000..78596a21d --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Chain/OniChainConstraintsImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5730de157a60b46e9b258ac099ff1980 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Distance.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Distance.meta new file mode 100644 index 000000000..9cf2006c0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Distance.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ffe3dc0008b2b461d80dab10f72f50ee +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Distance/OniDistanceConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Distance/OniDistanceConstraintsBatchImpl.cs new file mode 100644 index 000000000..3c12fdc83 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Distance/OniDistanceConstraintsBatchImpl.cs @@ -0,0 +1,20 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniDistanceConstraintsBatchImpl : OniConstraintsBatchImpl, IDistanceConstraintsBatchImpl + { + public OniDistanceConstraintsBatchImpl(OniDistanceConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Distance) + { + } + + public void SetDistanceConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList restLengths, ObiNativeVector2List stiffnesses, ObiNativeFloatList lambdas, int count) + { + Oni.SetDistanceConstraints(oniBatch, particleIndices.GetIntPtr(), restLengths.GetIntPtr(), stiffnesses.GetIntPtr(), lambdas.GetIntPtr(), count); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Distance/OniDistanceConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Distance/OniDistanceConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..01b5bdd79 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Distance/OniDistanceConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e2e6ffc02968643a7a530f931b92f948 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Distance/OniDistanceConstraintsImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Distance/OniDistanceConstraintsImpl.cs new file mode 100644 index 000000000..1ceae3345 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Distance/OniDistanceConstraintsImpl.cs @@ -0,0 +1,28 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniDistanceConstraintsImpl : OniConstraintsImpl + { + + public OniDistanceConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Distance) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var batch = new OniDistanceConstraintsBatchImpl(this); + Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + return batch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Distance/OniDistanceConstraintsImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Distance/OniDistanceConstraintsImpl.cs.meta new file mode 100644 index 000000000..e622b8d43 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Distance/OniDistanceConstraintsImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1317284f320be48c7be4a294d253fc95 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/OniConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/OniConstraintsBatchImpl.cs new file mode 100644 index 000000000..39e0a53b6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/OniConstraintsBatchImpl.cs @@ -0,0 +1,73 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniConstraintsBatchImpl : IConstraintsBatchImpl + { + protected IConstraints m_Constraints; + protected Oni.ConstraintType m_ConstraintType; + protected IntPtr m_OniBatch; + protected bool m_Enabled; + + public IntPtr oniBatch + { + get { return m_OniBatch; } + } + + public Oni.ConstraintType constraintType + { + get { return m_ConstraintType; } + } + + public IConstraints constraints + { + get { return m_Constraints; } + } + + public bool enabled + { + set + { + if (m_Enabled != value) + { + m_Enabled = value; + Oni.EnableBatch(m_OniBatch, m_Enabled); + } + } + get { return m_Enabled; } + } + + public OniConstraintsBatchImpl(IConstraints constraints, Oni.ConstraintType type) + { + this.m_Constraints = constraints; + this.m_ConstraintType = type; + + m_OniBatch = Oni.CreateBatch((int)type); + } + + public void Destroy() + { + //Oni.DestroyBatch(m_OniBatch); + + // remove the constraint batch from the solver + // (no need to destroy it as its destruction is managed by the solver) + // just reset the reference. + m_OniBatch = IntPtr.Zero; + } + + public void SetConstraintCount(int constraintCount) + { + Oni.SetBatchConstraintCount(m_OniBatch, constraintCount); + } + + public int GetConstraintCount() + { + return Oni.GetBatchConstraintCount(m_OniBatch); + } + + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/OniConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/OniConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..bc3d8d946 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/OniConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1f2c339d89f1144ea82e9763963f897d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/OniConstraintsImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/OniConstraintsImpl.cs new file mode 100644 index 000000000..61a86b1e5 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/OniConstraintsImpl.cs @@ -0,0 +1,45 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public interface IOniConstraintsImpl : IConstraints + { + IConstraintsBatchImpl CreateConstraintsBatch(); + void RemoveBatch(IConstraintsBatchImpl batch); + } + + public abstract class OniConstraintsImpl : IOniConstraintsImpl + { + protected OniSolverImpl m_Solver; + protected Oni.ConstraintType m_ConstraintType; + + public ISolverImpl solver + { + get { return m_Solver; } + } + + public Oni.ConstraintType constraintType + { + get { return m_ConstraintType; } + } + + public OniConstraintsImpl(OniSolverImpl solver, Oni.ConstraintType constraintType) + { + m_ConstraintType = constraintType; + m_Solver = solver; + } + + public abstract IConstraintsBatchImpl CreateConstraintsBatch(); + + public abstract void RemoveBatch(IConstraintsBatchImpl batch); + + public int GetConstraintCount() + { + return Oni.GetConstraintCount(m_Solver.oniSolver, (int)m_ConstraintType); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/OniConstraintsImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/OniConstraintsImpl.cs.meta new file mode 100644 index 000000000..7d45f51b0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/OniConstraintsImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7855ae746662942f2b61f01cda77cd71 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Pin.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Pin.meta new file mode 100644 index 000000000..0f363d04e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Pin.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 303dd45caa88c4cd2bb03c65bbb0309c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Pin/OniPinConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Pin/OniPinConstraintsBatchImpl.cs new file mode 100644 index 000000000..c6db3b8d7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Pin/OniPinConstraintsBatchImpl.cs @@ -0,0 +1,21 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniPinConstraintsBatchImpl : OniConstraintsBatchImpl, IPinConstraintsBatchImpl + { + public OniPinConstraintsBatchImpl(OniPinConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Pin) + { + } + + public void SetPinConstraints(ObiNativeIntList particleIndices, ObiNativeIntList colliderIndices, ObiNativeVector4List offsets, ObiNativeQuaternionList restDarbouxVectors, ObiNativeFloatList stiffnesses, ObiNativeFloatList lambdas, int count) + { + Oni.SetPinConstraints(oniBatch, particleIndices.GetIntPtr() ,offsets.GetIntPtr(), restDarbouxVectors.GetIntPtr(), colliderIndices.GetIntPtr(), stiffnesses.GetIntPtr(), lambdas.GetIntPtr(), count); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Pin/OniPinConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Pin/OniPinConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..01264c16e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Pin/OniPinConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7027ecb8259ee445bb7280c585d5b401 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Pin/OniPinConstraintsImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Pin/OniPinConstraintsImpl.cs new file mode 100644 index 000000000..95ee95bf5 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Pin/OniPinConstraintsImpl.cs @@ -0,0 +1,28 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniPinConstraintsImpl : OniConstraintsImpl + { + + public OniPinConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Pin) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var batch = new OniPinConstraintsBatchImpl(this); + Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + return batch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Pin/OniPinConstraintsImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Pin/OniPinConstraintsImpl.cs.meta new file mode 100644 index 000000000..a71ebc301 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Pin/OniPinConstraintsImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 80f6683022e124b7ab5f002abb8df42a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/ShapeMatching.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/ShapeMatching.meta new file mode 100644 index 000000000..0e27557d0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/ShapeMatching.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 76aa6338faa6b4855a36b8ad4c1985bf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/ShapeMatching/OniShapeMatchingConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/ShapeMatching/OniShapeMatchingConstraintsBatchImpl.cs new file mode 100644 index 000000000..b20dd1ff3 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/ShapeMatching/OniShapeMatchingConstraintsBatchImpl.cs @@ -0,0 +1,39 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniShapeMatchingConstraintsBatchImpl : OniConstraintsBatchImpl, IShapeMatchingConstraintsBatchImpl + { + public OniShapeMatchingConstraintsBatchImpl(OniShapeMatchingConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.ShapeMatching) + { + } + + public void SetShapeMatchingConstraints(ObiNativeIntList particleIndices, + ObiNativeIntList firstIndex, + ObiNativeIntList numIndices, + ObiNativeIntList explicitGroup, + ObiNativeFloatList shapeMaterialParameters, + ObiNativeVector4List restComs, + ObiNativeVector4List coms, + ObiNativeQuaternionList orientations, + ObiNativeMatrix4x4List linearTransforms, + ObiNativeMatrix4x4List plasticDeformations, + ObiNativeFloatList lambdas, + int count) + { + Oni.SetShapeMatchingConstraints(oniBatch, particleIndices.GetIntPtr(), firstIndex.GetIntPtr(), numIndices.GetIntPtr(), explicitGroup.GetIntPtr(), + shapeMaterialParameters.GetIntPtr(),restComs.GetIntPtr(), coms.GetIntPtr(), orientations.GetIntPtr(), linearTransforms.GetIntPtr(), + plasticDeformations.GetIntPtr(), count); + } + + public void CalculateRestShapeMatching() + { + Oni.RecalculateInertiaTensors(((OniSolverImpl)this.constraints.solver).oniSolver); + Oni.CalculateRestShapeMatching(((OniSolverImpl)this.constraints.solver).oniSolver, oniBatch); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/ShapeMatching/OniShapeMatchingConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/ShapeMatching/OniShapeMatchingConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..3fb2c1bf0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/ShapeMatching/OniShapeMatchingConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2d8b27a2b5372453881109f4d30710aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/ShapeMatching/OniShapeMatchingConstraintsImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/ShapeMatching/OniShapeMatchingConstraintsImpl.cs new file mode 100644 index 000000000..846ab6899 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/ShapeMatching/OniShapeMatchingConstraintsImpl.cs @@ -0,0 +1,28 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniShapeMatchingConstraintsImpl : OniConstraintsImpl + { + + public OniShapeMatchingConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.ShapeMatching) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var batch = new OniShapeMatchingConstraintsBatchImpl(this); + Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + return batch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/ShapeMatching/OniShapeMatchingConstraintsImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/ShapeMatching/OniShapeMatchingConstraintsImpl.cs.meta new file mode 100644 index 000000000..46b7bd743 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/ShapeMatching/OniShapeMatchingConstraintsImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3179c27ebcc34455aa7967691f6987f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Skin.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Skin.meta new file mode 100644 index 000000000..a65025811 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Skin.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e9fde13a2a0dc426892c122badd434c7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Skin/OniSkinConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Skin/OniSkinConstraintsBatchImpl.cs new file mode 100644 index 000000000..622e6cdb7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Skin/OniSkinConstraintsBatchImpl.cs @@ -0,0 +1,20 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniSkinConstraintsBatchImpl : OniConstraintsBatchImpl, ISkinConstraintsBatchImpl + { + public OniSkinConstraintsBatchImpl(OniSkinConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Skin) + { + } + + public void SetSkinConstraints(ObiNativeIntList particleIndices, ObiNativeVector4List skinPoints, ObiNativeVector4List skinNormals, ObiNativeFloatList skinRadiiBackstop, ObiNativeFloatList skinCompliance, ObiNativeFloatList lambdas, int count) + { + Oni.SetSkinConstraints(oniBatch, particleIndices.GetIntPtr(), skinPoints.GetIntPtr(), skinNormals.GetIntPtr(), skinRadiiBackstop.GetIntPtr(), skinCompliance.GetIntPtr(), lambdas.GetIntPtr(), count); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Skin/OniSkinConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Skin/OniSkinConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..93af2c035 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Skin/OniSkinConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 52429ca8e52974c47811bb3da9a6d0d6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Skin/OniSkinConstraintsImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Skin/OniSkinConstraintsImpl.cs new file mode 100644 index 000000000..fbf0e5b93 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Skin/OniSkinConstraintsImpl.cs @@ -0,0 +1,28 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniSkinConstraintsImpl : OniConstraintsImpl + { + + public OniSkinConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Skin) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var batch = new OniSkinConstraintsBatchImpl(this); + Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + return batch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Skin/OniSkinConstraintsImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Skin/OniSkinConstraintsImpl.cs.meta new file mode 100644 index 000000000..6db8a1710 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Skin/OniSkinConstraintsImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4125254438ad247e39a54527a1efb809 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Stitch.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Stitch.meta new file mode 100644 index 000000000..3d17e2188 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Stitch.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 091666a5c10624749b5604db5c75a83d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Stitch/OniStitchConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Stitch/OniStitchConstraintsBatchImpl.cs new file mode 100644 index 000000000..ae0f953bd --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Stitch/OniStitchConstraintsBatchImpl.cs @@ -0,0 +1,20 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniStitchConstraintsBatchImpl : OniConstraintsBatchImpl, IStitchConstraintsBatchImpl + { + public OniStitchConstraintsBatchImpl(OniStitchConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Stitch) + { + } + + public void SetStitchConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList stiffnesses, ObiNativeFloatList lambdas, int count) + { + Oni.SetStitchConstraints(oniBatch, particleIndices.GetIntPtr(), stiffnesses.GetIntPtr(), lambdas.GetIntPtr(), count); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Stitch/OniStitchConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Stitch/OniStitchConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..799abfaef --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Stitch/OniStitchConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4b6e4637dbd2c4bffbcc8924a90ab7f1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Stitch/OniStitchConstraintsImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Stitch/OniStitchConstraintsImpl.cs new file mode 100644 index 000000000..0209eda55 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Stitch/OniStitchConstraintsImpl.cs @@ -0,0 +1,28 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniStitchConstraintsImpl : OniConstraintsImpl + { + + public OniStitchConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Stitch) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var batch = new OniStitchConstraintsBatchImpl(this); + Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + return batch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Stitch/OniStitchConstraintsImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Stitch/OniStitchConstraintsImpl.cs.meta new file mode 100644 index 000000000..dc799f6c6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Stitch/OniStitchConstraintsImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8666f111d21594650832fc663f618da9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/StretchShear.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/StretchShear.meta new file mode 100644 index 000000000..00ef8484f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/StretchShear.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 10bea9144cdb54c7ca268e71727ba816 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/StretchShear/OniStretchShearConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/StretchShear/OniStretchShearConstraintsBatchImpl.cs new file mode 100644 index 000000000..995732e6e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/StretchShear/OniStretchShearConstraintsBatchImpl.cs @@ -0,0 +1,20 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniStretchShearConstraintsBatchImpl : OniConstraintsBatchImpl, IStretchShearConstraintsBatchImpl + { + public OniStretchShearConstraintsBatchImpl(OniStretchShearConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.StretchShear) + { + } + + public void SetStretchShearConstraints(ObiNativeIntList particleIndices, ObiNativeIntList orientationIndices, ObiNativeFloatList restLengths, ObiNativeQuaternionList restOrientations, ObiNativeVector3List stiffnesses, ObiNativeFloatList lambdas, int count) + { + Oni.SetStretchShearConstraints(oniBatch, particleIndices.GetIntPtr(), orientationIndices.GetIntPtr(), restLengths.GetIntPtr(), restOrientations.GetIntPtr(), stiffnesses.GetIntPtr(), lambdas.GetIntPtr(), count); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/StretchShear/OniStretchShearConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/StretchShear/OniStretchShearConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..e5f998b85 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/StretchShear/OniStretchShearConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8239fa7b75a3a4f9087095a893f26ecc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/StretchShear/OniStretchShearConstraintsImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/StretchShear/OniStretchShearConstraintsImpl.cs new file mode 100644 index 000000000..23f870904 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/StretchShear/OniStretchShearConstraintsImpl.cs @@ -0,0 +1,28 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniStretchShearConstraintsImpl : OniConstraintsImpl + { + + public OniStretchShearConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.StretchShear) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var batch = new OniStretchShearConstraintsBatchImpl(this); + Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + return batch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/StretchShear/OniStretchShearConstraintsImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/StretchShear/OniStretchShearConstraintsImpl.cs.meta new file mode 100644 index 000000000..ed0457b87 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/StretchShear/OniStretchShearConstraintsImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2e074bd8c876f4a26b870b1bb6338857 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Tether.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Tether.meta new file mode 100644 index 000000000..57c58c094 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Tether.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f170479298b9f47a39047b37d4d124f0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Tether/OniTetherConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Tether/OniTetherConstraintsBatchImpl.cs new file mode 100644 index 000000000..47e6500a4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Tether/OniTetherConstraintsBatchImpl.cs @@ -0,0 +1,20 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniTetherConstraintsBatchImpl : OniConstraintsBatchImpl, ITetherConstraintsBatchImpl + { + public OniTetherConstraintsBatchImpl(OniTetherConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Tether) + { + } + + public void SetTetherConstraints(ObiNativeIntList particleIndices, ObiNativeVector2List maxLengthScale, ObiNativeFloatList stiffnesses, ObiNativeFloatList lambdas, int count) + { + Oni.SetTetherConstraints(oniBatch, particleIndices.GetIntPtr(), maxLengthScale.GetIntPtr(), stiffnesses.GetIntPtr(), lambdas.GetIntPtr(), count); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Tether/OniTetherConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Tether/OniTetherConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..f723e8829 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Tether/OniTetherConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8d972dca9090340739b46bfce8769234 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Tether/OniTetherConstraintsImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Tether/OniTetherConstraintsImpl.cs new file mode 100644 index 000000000..5299af2e6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Tether/OniTetherConstraintsImpl.cs @@ -0,0 +1,28 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniTetherConstraintsImpl : OniConstraintsImpl + { + + public OniTetherConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Tether) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var batch = new OniTetherConstraintsBatchImpl(this); + Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + return batch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Tether/OniTetherConstraintsImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Tether/OniTetherConstraintsImpl.cs.meta new file mode 100644 index 000000000..3fb2ce97a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Tether/OniTetherConstraintsImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6922281fd02e54bc2907d3327e602daf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Volume.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Volume.meta new file mode 100644 index 000000000..2775f8143 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Volume.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 15ac90acb12cf47928ff5732c87d2f08 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Volume/OniVolumeConstraintsBatchImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Volume/OniVolumeConstraintsBatchImpl.cs new file mode 100644 index 000000000..8b808fbc7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Volume/OniVolumeConstraintsBatchImpl.cs @@ -0,0 +1,26 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniVolumeConstraintsBatchImpl : OniConstraintsBatchImpl, IVolumeConstraintsBatchImpl + { + public OniVolumeConstraintsBatchImpl(OniVolumeConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Volume) + { + } + + public void SetVolumeConstraints(ObiNativeIntList triangles, + ObiNativeIntList firstTriangle, + ObiNativeIntList numTriangles, + ObiNativeFloatList restVolumes, + ObiNativeVector2List pressureStiffness, + ObiNativeFloatList lambdas, + int count) + { + Oni.SetVolumeConstraints(oniBatch, triangles.GetIntPtr(), firstTriangle.GetIntPtr(), numTriangles.GetIntPtr(), restVolumes.GetIntPtr(), pressureStiffness.GetIntPtr(), lambdas.GetIntPtr(), count); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Volume/OniVolumeConstraintsBatchImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Volume/OniVolumeConstraintsBatchImpl.cs.meta new file mode 100644 index 000000000..002cbeb9f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Volume/OniVolumeConstraintsBatchImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1af520b0f02a347c4b1d36842ee90910 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Volume/OniVolumeConstraintsImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Volume/OniVolumeConstraintsImpl.cs new file mode 100644 index 000000000..7693a3df9 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Volume/OniVolumeConstraintsImpl.cs @@ -0,0 +1,28 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniVolumeConstraintsImpl : OniConstraintsImpl + { + + public OniVolumeConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Volume) + { + } + + public override IConstraintsBatchImpl CreateConstraintsBatch() + { + var batch = new OniVolumeConstraintsBatchImpl(this); + Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + return batch; + } + + public override void RemoveBatch(IConstraintsBatchImpl batch) + { + Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Volume/OniVolumeConstraintsImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Volume/OniVolumeConstraintsImpl.cs.meta new file mode 100644 index 000000000..739d47b6a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Constraints/Volume/OniVolumeConstraintsImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: db1478edc2f6b48928e2ba97aafd9bad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/OniBackend.cs b/Assets/Obi/Scripts/Common/Backends/Oni/OniBackend.cs new file mode 100644 index 000000000..1c9a0ec27 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/OniBackend.cs @@ -0,0 +1,43 @@ +#if (OBI_ONI_SUPPORTED) +using UnityEngine; +using System; +using System.Collections; + +namespace Obi +{ + public class OniBackend : IObiBackend + { + private OniColliderWorld colliderGrid; + + #region Solver + public ISolverImpl CreateSolver(ObiSolver solver, int capacity) + { + GetOrCreateColliderWorld(); + colliderGrid.IncreaseReferenceCount(); + return new OniSolverImpl(Oni.CreateSolver(capacity)); + } + public void DestroySolver(ISolverImpl solver) + { + if (solver != null) + { + if (colliderGrid != null) + colliderGrid.DecreaseReferenceCount(); + solver.Destroy(); + } + } + + // Single type of collision world. Each solver implementation should manage the data as it can. + private void GetOrCreateColliderWorld() + { + colliderGrid = GameObject.FindObjectOfType(); + if (colliderGrid == null) + { + var world = new GameObject("OniCollisionWorld", typeof(OniColliderWorld)); + colliderGrid = world.GetComponent(); + } + } + #endregion + + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/OniBackend.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/OniBackend.cs.meta new file mode 100644 index 000000000..11d4d33b8 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/OniBackend.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b205c5ca9755442b186b1d93df7d7dc6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/OniColliderWorld.cs b/Assets/Obi/Scripts/Common/Backends/Oni/OniColliderWorld.cs new file mode 100644 index 000000000..e1af2010b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/OniColliderWorld.cs @@ -0,0 +1,75 @@ +#if (OBI_ONI_SUPPORTED) +using System; +using UnityEngine; + +namespace Obi +{ + public class OniColliderWorld : MonoBehaviour, IColliderWorldImpl + { + private int refCount = 0; + + public int referenceCount { get { return refCount; } } + + public void Awake() + { + ObiColliderWorld.GetInstance().RegisterImplementation(this); + } + + public void OnDestroy() + { + ObiColliderWorld.GetInstance().UnregisterImplementation(this); + } + + public void IncreaseReferenceCount() + { + refCount++; + } + public void DecreaseReferenceCount() + { + if (--refCount <= 0 && gameObject != null) + DestroyImmediate(gameObject); + } + + public void UpdateWorld(float deltaTime) + { + Oni.UpdateColliderGrid(deltaTime); + } + + public void SetColliders(ObiNativeColliderShapeList shapes, ObiNativeAabbList bounds, ObiNativeAffineTransformList transforms, int count) + { + Oni.SetColliders(shapes.GetIntPtr(), bounds.GetIntPtr(), transforms.GetIntPtr(), count); + } + + public void SetRigidbodies(ObiNativeRigidbodyList rigidbody) + { + Oni.SetRigidbodies(rigidbody.GetIntPtr()); + } + + public void SetCollisionMaterials(ObiNativeCollisionMaterialList materials) + { + Oni.SetCollisionMaterials(materials.GetIntPtr()); + } + + public void SetTriangleMeshData(ObiNativeTriangleMeshHeaderList headers, ObiNativeBIHNodeList nodes, ObiNativeTriangleList triangles, ObiNativeVector3List vertices) + { + Oni.SetTriangleMeshData(headers.GetIntPtr(), nodes.GetIntPtr(), triangles.GetIntPtr(), vertices.GetIntPtr()); + } + + public void SetEdgeMeshData(ObiNativeEdgeMeshHeaderList headers, ObiNativeBIHNodeList nodes, ObiNativeEdgeList edges, ObiNativeVector2List vertices) + { + Oni.SetEdgeMeshData(headers.GetIntPtr(), nodes.GetIntPtr(), edges.GetIntPtr(), vertices.GetIntPtr()); + } + + public void SetDistanceFieldData(ObiNativeDistanceFieldHeaderList headers, ObiNativeDFNodeList nodes) + { + Oni.SetDistanceFieldData(headers.GetIntPtr(), nodes.GetIntPtr()); + } + + public void SetHeightFieldData(ObiNativeHeightFieldHeaderList headers, ObiNativeFloatList samples) + { + Oni.SetHeightFieldData(headers.GetIntPtr(), samples.GetIntPtr()); + } + } + +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/OniColliderWorld.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/OniColliderWorld.cs.meta new file mode 100644 index 000000000..2961feff3 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/OniColliderWorld.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d02d25c24c8574316883c920912e4fdb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/OniJobHandle.cs b/Assets/Obi/Scripts/Common/Backends/Oni/OniJobHandle.cs new file mode 100644 index 000000000..5acf0bb62 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/OniJobHandle.cs @@ -0,0 +1,27 @@ +#if (OBI_ONI_SUPPORTED) +using System; + +namespace Obi +{ + public class OniJobHandle : IObiJobHandle + { + private IntPtr pointer = IntPtr.Zero; + + public OniJobHandle SetPointer(IntPtr newPtr) + { + pointer = newPtr; + return this; + } + + public void Complete() + { + Oni.Complete(pointer); + } + + public void Release() + { + pointer = IntPtr.Zero; + } + } +} +#endif diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/OniJobHandle.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/OniJobHandle.cs.meta new file mode 100644 index 000000000..3030ce29b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/OniJobHandle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 502f41bdafa70468985a879d9ffc67d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Solver.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Solver.meta new file mode 100644 index 000000000..aa7f2cd0d --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Solver.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e2f8381840ff54c2f9122f2329cf9366 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Solver/OniSolverImpl.cs b/Assets/Obi/Scripts/Common/Backends/Oni/Solver/OniSolverImpl.cs new file mode 100644 index 000000000..e6b7f8948 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Solver/OniSolverImpl.cs @@ -0,0 +1,226 @@ +#if (OBI_ONI_SUPPORTED) +using UnityEngine; +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class OniSolverImpl : ISolverImpl + { + private IntPtr m_OniSolver; + + // Per-type constraints array: + private IOniConstraintsImpl[] constraints; + + // Pool job handles to avoid runtime alloc: + private JobHandlePool jobHandlePool; + + public IntPtr oniSolver + { + get { return m_OniSolver; } + } + + public OniSolverImpl(IntPtr solver) + { + m_OniSolver = solver; + + jobHandlePool = new JobHandlePool(4); + + constraints = new IOniConstraintsImpl[Oni.ConstraintTypeCount]; + constraints[(int)Oni.ConstraintType.Tether] = new OniTetherConstraintsImpl(this); + constraints[(int)Oni.ConstraintType.Volume] = new OniVolumeConstraintsImpl(this); + constraints[(int)Oni.ConstraintType.Chain] = new OniChainConstraintsImpl(this); + constraints[(int)Oni.ConstraintType.Bending] = new OniBendConstraintsImpl(this); + constraints[(int)Oni.ConstraintType.Distance] = new OniDistanceConstraintsImpl(this); + constraints[(int)Oni.ConstraintType.ShapeMatching] = new OniShapeMatchingConstraintsImpl(this); + constraints[(int)Oni.ConstraintType.BendTwist] = new OniBendTwistConstraintsImpl(this); + constraints[(int)Oni.ConstraintType.StretchShear] = new OniStretchShearConstraintsImpl(this); + constraints[(int)Oni.ConstraintType.Pin] = new OniPinConstraintsImpl(this); + constraints[(int)Oni.ConstraintType.Skin] = new OniSkinConstraintsImpl(this); + constraints[(int)Oni.ConstraintType.Aerodynamics] = new OniAerodynamicConstraintsImpl(this); + constraints[(int)Oni.ConstraintType.Stitch] = new OniStitchConstraintsImpl(this); + } + + public void Destroy() + { + Oni.DestroySolver(m_OniSolver); + m_OniSolver = IntPtr.Zero; + } + + public void InitializeFrame(Vector4 translation, Vector4 scale, Quaternion rotation) + { + Oni.InitializeFrame(oniSolver, ref translation, ref scale, ref rotation); + } + + public void UpdateFrame(Vector4 translation, Vector4 scale, Quaternion rotation, float deltaTime) + { + Oni.UpdateFrame(oniSolver, ref translation, ref scale, ref rotation, deltaTime); + } + + public void ApplyFrame(float worldLinearInertiaScale, float worldAngularInertiaScale, float deltaTime) + { + Oni.ApplyFrame(oniSolver, 0, 0, worldLinearInertiaScale, worldAngularInertiaScale, deltaTime); + } + + public int GetDeformableTriangleCount() + { + return Oni.GetDeformableTriangleCount(m_OniSolver); + } + public void SetDeformableTriangles(int[] indices, int num, int destOffset) + { + Oni.SetDeformableTriangles(m_OniSolver, indices, num, destOffset); + } + public int RemoveDeformableTriangles(int num, int sourceOffset) + { + return Oni.RemoveDeformableTriangles(m_OniSolver, num, sourceOffset); + } + + public void SetSimplices(ObiNativeIntList simplices, SimplexCounts counts) + { + Oni.SetSimplices(m_OniSolver, simplices.AsNativeArray().ToArray(), counts.pointCount, counts.edgeCount, counts.triangleCount); + } + + public void ParticleCountChanged(ObiSolver solver) + { + Oni.SetParticlePositions(m_OniSolver, solver.positions.GetIntPtr()); + Oni.SetParticlePreviousPositions(m_OniSolver, solver.prevPositions.GetIntPtr()); + Oni.SetRestPositions(m_OniSolver, solver.restPositions.GetIntPtr()); + Oni.SetParticleOrientations(m_OniSolver, solver.orientations.GetIntPtr()); + Oni.SetParticlePreviousOrientations(m_OniSolver, solver.prevOrientations.GetIntPtr()); + Oni.SetRestOrientations(m_OniSolver, solver.restOrientations.GetIntPtr()); + Oni.SetParticleVelocities(m_OniSolver, solver.velocities.GetIntPtr()); + Oni.SetParticleAngularVelocities(m_OniSolver, solver.angularVelocities.GetIntPtr()); + Oni.SetParticleInverseMasses(m_OniSolver, solver.invMasses.GetIntPtr()); + Oni.SetParticleInverseRotationalMasses(m_OniSolver, solver.invRotationalMasses.GetIntPtr()); + Oni.SetParticlePrincipalRadii(m_OniSolver, solver.principalRadii.GetIntPtr()); + Oni.SetParticleCollisionMaterials(m_OniSolver, solver.collisionMaterials.GetIntPtr()); + Oni.SetParticlePhases(m_OniSolver, solver.phases.GetIntPtr()); + Oni.SetParticleFilters(m_OniSolver, solver.filters.GetIntPtr()); + Oni.SetRenderableParticlePositions(m_OniSolver, solver.renderablePositions.GetIntPtr()); + Oni.SetRenderableParticleOrientations(m_OniSolver, solver.renderableOrientations.GetIntPtr()); + Oni.SetParticleAnisotropies(m_OniSolver, solver.anisotropies.GetIntPtr()); + Oni.SetParticleSmoothingRadii(m_OniSolver, solver.smoothingRadii.GetIntPtr()); + Oni.SetParticleBuoyancy(m_OniSolver, solver.buoyancies.GetIntPtr()); + Oni.SetParticleRestDensities(m_OniSolver, solver.restDensities.GetIntPtr()); + Oni.SetParticleViscosities(m_OniSolver, solver.viscosities.GetIntPtr()); + Oni.SetParticleSurfaceTension(m_OniSolver, solver.surfaceTension.GetIntPtr()); + Oni.SetParticleVorticityConfinement(m_OniSolver, solver.vortConfinement.GetIntPtr()); + Oni.SetParticleAtmosphericDragPressure(m_OniSolver, solver.atmosphericDrag.GetIntPtr(), solver.atmosphericPressure.GetIntPtr()); + Oni.SetParticleDiffusion(m_OniSolver, solver.diffusion.GetIntPtr()); + Oni.SetParticleVorticities(m_OniSolver, solver.vorticities.GetIntPtr()); + Oni.SetParticleFluidData(m_OniSolver, solver.fluidData.GetIntPtr()); + Oni.SetParticleUserData(m_OniSolver, solver.userData.GetIntPtr()); + Oni.SetParticleExternalForces(m_OniSolver, solver.externalForces.GetIntPtr()); + Oni.SetParticleExternalTorques(m_OniSolver, solver.externalTorques.GetIntPtr()); + Oni.SetParticleWinds(m_OniSolver, solver.wind.GetIntPtr()); + Oni.SetParticlePositionDeltas(m_OniSolver, solver.positionDeltas.GetIntPtr()); + Oni.SetParticleOrientationDeltas(m_OniSolver, solver.orientationDeltas.GetIntPtr()); + Oni.SetParticlePositionConstraintCounts(m_OniSolver, solver.positionConstraintCounts.GetIntPtr()); + Oni.SetParticleOrientationConstraintCounts(m_OniSolver, solver.orientationConstraintCounts.GetIntPtr()); + Oni.SetParticleNormals(m_OniSolver, solver.normals.GetIntPtr()); + Oni.SetParticleInverseInertiaTensors(m_OniSolver, solver.invInertiaTensors.GetIntPtr()); + + Oni.SetCapacity(m_OniSolver, solver.positions.capacity); + } + + public void SetRigidbodyArrays(ObiSolver solver) + { + Oni.SetRigidbodyLinearDeltas(m_OniSolver, solver.rigidbodyLinearDeltas.GetIntPtr()); + Oni.SetRigidbodyAngularDeltas(m_OniSolver, solver.rigidbodyAngularDeltas.GetIntPtr()); + } + + public void SetActiveParticles(ObiNativeIntList indices) + { + Oni.SetActiveParticles(oniSolver, indices.AsNativeArray().ToArray(), indices.count); + } + + public void ResetForces() + { + Oni.ResetForces(oniSolver); + } + + public void GetBounds(ref Vector3 min, ref Vector3 max) + { + Oni.GetBounds(oniSolver, ref min, ref max); + } + + public void SetParameters(Oni.SolverParameters parameters) + { + Oni.SetSolverParameters(m_OniSolver, ref parameters); + } + + public int GetConstraintCount(Oni.ConstraintType type) + { + return Oni.GetConstraintCount(m_OniSolver, (int)type); + } + + public void GetCollisionContacts(Oni.Contact[] contacts, int count) + { + Oni.GetCollisionContacts(m_OniSolver, contacts, count); + } + + public void GetParticleCollisionContacts(Oni.Contact[] contacts, int count) + { + Oni.GetParticleCollisionContacts(m_OniSolver, contacts, count); + } + + public void SetConstraintGroupParameters(Oni.ConstraintType type, ref Oni.ConstraintParameters parameters) + { + Oni.SetConstraintGroupParameters(m_OniSolver, (int)type, ref parameters); + } + + public IConstraintsBatchImpl CreateConstraintsBatch(Oni.ConstraintType constraintType) + { + return constraints[(int)constraintType].CreateConstraintsBatch(); + } + + public void DestroyConstraintsBatch(IConstraintsBatchImpl batch) + { + if (batch != null) + constraints[(int)batch.constraintType].RemoveBatch(batch); + } + + public IObiJobHandle CollisionDetection(float stepTime) + { + Oni.RecalculateInertiaTensors(oniSolver); + return jobHandlePool.Borrow().SetPointer(Oni.CollisionDetection(oniSolver, stepTime)); + } + + public IObiJobHandle Substep(float stepTime, float substepTime, int substeps) + { + return jobHandlePool.Borrow().SetPointer(Oni.Step(oniSolver, stepTime, substepTime, substeps)); + } + + public void ApplyInterpolation(ObiNativeVector4List startPositions, ObiNativeQuaternionList startOrientations, float stepTime, float unsimulatedTime) + { + Oni.ApplyPositionInterpolation(oniSolver, startPositions.GetIntPtr(), startOrientations.GetIntPtr(), stepTime, unsimulatedTime); + } + + public void InterpolateDiffuseProperties(ObiNativeVector4List properties, ObiNativeVector4List diffusePositions, ObiNativeVector4List diffuseProperties, ObiNativeIntList neighbourCount, int diffuseCount) + { + Oni.InterpolateDiffuseParticles(oniSolver, properties.GetIntPtr(), diffusePositions.GetIntPtr(), diffuseProperties.GetIntPtr(), neighbourCount.GetIntPtr(), diffuseCount); + } + + public int GetParticleGridSize() + { + return Oni.GetParticleGridSize(oniSolver); + } + public void GetParticleGrid(ObiNativeAabbList cells) + { + //Oni.GetParticleGrid(oniSolver, cells.GetIntPtr()); + } + public void SpatialQuery(ObiNativeQueryShapeList shapes, ObiNativeAffineTransformList transforms, ObiNativeQueryResultList results) + { + int count = Oni.SpatialQuery(oniSolver, shapes.GetIntPtr(), transforms.GetIntPtr(), shapes.count); + + results.ResizeUninitialized(count); + Oni.GetQueryResults(oniSolver, results.GetIntPtr(), count); + } + public void ReleaseJobHandles() + { + jobHandlePool.ReleaseAll(); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Backends/Oni/Solver/OniSolverImpl.cs.meta b/Assets/Obi/Scripts/Common/Backends/Oni/Solver/OniSolverImpl.cs.meta new file mode 100644 index 000000000..c71ef9fd9 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Backends/Oni/Solver/OniSolverImpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3240362f8b8e047d7b9250344aaa0d6d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints.meta b/Assets/Obi/Scripts/Common/Blueprints.meta new file mode 100644 index 000000000..415cf4b20 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ce5ca5ebbe1f0418bb05de240bf6692c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints.meta new file mode 100644 index 000000000..60b71b4d5 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e272b09fdfb9d401aa0514e09d3eb842 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches.meta new file mode 100644 index 000000000..984456295 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 12f3679c3b69b41b68f65afab6db4c56 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/IStructuralConstraintBatch.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/IStructuralConstraintBatch.cs new file mode 100644 index 000000000..66deaf902 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/IStructuralConstraintBatch.cs @@ -0,0 +1,13 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + + public interface IStructuralConstraintBatch + { + float GetRestLength(int index); + void SetRestLength(int index, float restLength); + ParticlePair GetParticleIndices(int index); + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/IStructuralConstraintBatch.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/IStructuralConstraintBatch.cs.meta new file mode 100644 index 000000000..ab69460e0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/IStructuralConstraintBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f23dea5b75e2c432282b0f62513267ed +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiAerodynamicConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiAerodynamicConstraintsBatch.cs new file mode 100644 index 000000000..e2a4df6c4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiAerodynamicConstraintsBatch.cs @@ -0,0 +1,103 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; + +namespace Obi +{ + [Serializable] + public class ObiAerodynamicConstraintsBatch : ObiConstraintsBatch + { + protected IAerodynamicConstraintsBatchImpl m_BatchImpl; + + /// + /// 3 floats per constraint: surface area, drag and lift. + /// + [HideInInspector] public ObiNativeFloatList aerodynamicCoeffs = new ObiNativeFloatList(); + + public override Oni.ConstraintType constraintType + { + get { return Oni.ConstraintType.Aerodynamics; } + } + + public override IConstraintsBatchImpl implementation + { + get { return m_BatchImpl; } + } + + public ObiAerodynamicConstraintsBatch(ObiAerodynamicConstraintsData constraints = null) : base() + { + } + + public void AddConstraint(int index, float area, float drag, float lift) + { + RegisterConstraint(); + + particleIndices.Add(index); + aerodynamicCoeffs.Add(area); + aerodynamicCoeffs.Add(drag); + aerodynamicCoeffs.Add(lift); + } + + public override void GetParticlesInvolved(int index, List particles) + { + particles.Add(particleIndices[index]); + } + + public override void Clear() + { + base.Clear(); + particleIndices.Clear(); + aerodynamicCoeffs.Clear(); + } + + protected override void SwapConstraints(int sourceIndex, int destIndex) + { + particleIndices.Swap(sourceIndex, destIndex); + aerodynamicCoeffs.Swap(sourceIndex * 3, destIndex * 3); + aerodynamicCoeffs.Swap(sourceIndex * 3 + 1, destIndex * 3 + 1); + aerodynamicCoeffs.Swap(sourceIndex * 3 + 2, destIndex * 3 + 2); + } + + public override void Merge(ObiActor actor, IObiConstraintsBatch other) + { + var batch = other as ObiAerodynamicConstraintsBatch; + var user = actor as IAerodynamicConstraintsUser; + + if (batch != null && user != null) + { + if (!user.aerodynamicsEnabled) + return; + + particleIndices.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + aerodynamicCoeffs.ResizeUninitialized((m_ActiveConstraintCount + batch.activeConstraintCount) * 3); + + for (int i = 0; i < batch.activeConstraintCount; ++i) + { + particleIndices[m_ActiveConstraintCount + i] = actor.solverIndices[batch.particleIndices[i]]; + aerodynamicCoeffs[(m_ActiveConstraintCount + i) * 3] = batch.aerodynamicCoeffs[i*3]; + aerodynamicCoeffs[(m_ActiveConstraintCount + i) * 3 + 1] = user.drag; + aerodynamicCoeffs[(m_ActiveConstraintCount + i) * 3 + 2] = user.lift; + } + + base.Merge(actor, other); + } + } + + public override void AddToSolver(ObiSolver solver) + { + // Create distance constraints batch directly. + m_BatchImpl = solver.implementation.CreateConstraintsBatch(constraintType) as IAerodynamicConstraintsBatchImpl; + + if (m_BatchImpl != null) + m_BatchImpl.SetAerodynamicConstraints(particleIndices, aerodynamicCoeffs, m_ActiveConstraintCount); + + } + + public override void RemoveFromSolver(ObiSolver solver) + { + //Remove batch: + solver.implementation.DestroyConstraintsBatch(m_BatchImpl as IConstraintsBatchImpl); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiAerodynamicConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiAerodynamicConstraintsBatch.cs.meta new file mode 100644 index 000000000..3fabfe160 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiAerodynamicConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 679cceabc60a345df8d9c3e0ac00eca3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 8626b43f419d1466a9dc1c1509308b13, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiBendConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiBendConstraintsBatch.cs new file mode 100644 index 000000000..8e46dadd8 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiBendConstraintsBatch.cs @@ -0,0 +1,122 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; + +namespace Obi +{ + [Serializable] + public class ObiBendConstraintsBatch : ObiConstraintsBatch + { + protected IBendConstraintsBatchImpl m_BatchImpl; + + /// + /// one float per constraint: the rest bend distance. + /// + [HideInInspector] public ObiNativeFloatList restBends = new ObiNativeFloatList(); + + /// + /// two floats per constraint: max bending and compliance. + /// + [HideInInspector] public ObiNativeVector2List bendingStiffnesses = new ObiNativeVector2List(); + + /// + /// two floats per constraint: plastic yield and creep. + /// + [HideInInspector] public ObiNativeVector2List plasticity = new ObiNativeVector2List(); + + public override Oni.ConstraintType constraintType + { + get { return Oni.ConstraintType.Bending; } + } + + public override IConstraintsBatchImpl implementation + { + get { return m_BatchImpl; } + } + + public ObiBendConstraintsBatch(ObiBendConstraintsData constraints = null) : base() + { + } + + public override void Merge(ObiActor actor, IObiConstraintsBatch other) + { + var batch = other as ObiBendConstraintsBatch; + var user = actor as IBendConstraintsUser; + + if (batch != null && user != null) + { + if (!user.bendConstraintsEnabled) + return; + + particleIndices.ResizeUninitialized((m_ActiveConstraintCount + batch.activeConstraintCount) * 3); + restBends.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + bendingStiffnesses.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + plasticity.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + lambdas.ResizeInitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + + restBends.CopyFrom(batch.restBends, 0, m_ActiveConstraintCount, batch.activeConstraintCount); + bendingStiffnesses.CopyReplicate(new Vector2(user.maxBending, user.bendCompliance), m_ActiveConstraintCount, batch.activeConstraintCount); + plasticity.CopyReplicate(new Vector2(user.plasticYield, user.plasticCreep), m_ActiveConstraintCount, batch.activeConstraintCount); + + for (int i = 0; i < batch.activeConstraintCount * 3; ++i) + particleIndices[m_ActiveConstraintCount * 3 + i] = actor.solverIndices[batch.particleIndices[i]]; + + base.Merge(actor, other); + } + } + + public void AddConstraint(Vector3Int indices, float restBend) + { + RegisterConstraint(); + + particleIndices.Add(indices[0]); + particleIndices.Add(indices[1]); + particleIndices.Add(indices[2]); + restBends.Add(restBend); + bendingStiffnesses.Add(Vector2.zero); + plasticity.Add(Vector2.zero); + } + + public override void Clear() + { + base.Clear(); + restBends.Clear(); + bendingStiffnesses.Clear(); + plasticity.Clear(); + } + + public override void GetParticlesInvolved(int index, List particles) + { + particles.Add(particleIndices[index * 3]); + particles.Add(particleIndices[index * 3 + 1]); + particles.Add(particleIndices[index * 3 + 2]); + } + + protected override void SwapConstraints(int sourceIndex, int destIndex) + { + particleIndices.Swap(sourceIndex * 3, destIndex * 3); + particleIndices.Swap(sourceIndex * 3 + 1 , destIndex * 3 + 1); + particleIndices.Swap(sourceIndex * 3 + 2, destIndex * 3 + 2); + restBends.Swap(sourceIndex, destIndex); + bendingStiffnesses.Swap(sourceIndex, destIndex); + plasticity.Swap(sourceIndex, destIndex); + } + + public override void AddToSolver(ObiSolver solver) + { + // Create distance constraints batch directly. + m_BatchImpl = solver.implementation.CreateConstraintsBatch(constraintType) as IBendConstraintsBatchImpl; + + if (m_BatchImpl != null) + m_BatchImpl.SetBendConstraints(particleIndices, restBends, bendingStiffnesses, plasticity, lambdas, m_ActiveConstraintCount); + + } + + public override void RemoveFromSolver(ObiSolver solver) + { + //Remove batch: + solver.implementation.DestroyConstraintsBatch(m_BatchImpl as IConstraintsBatchImpl); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiBendConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiBendConstraintsBatch.cs.meta new file mode 100644 index 000000000..19f55f8d4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiBendConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2d25c1516f81f44b190e2ef893151ea0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: f9aac3aba3ca7456d807e7fab120eb8a, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiBendTwistConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiBendTwistConstraintsBatch.cs new file mode 100644 index 000000000..e8c6b2fb3 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiBendTwistConstraintsBatch.cs @@ -0,0 +1,123 @@ +using UnityEngine; +using System.Collections.Generic; +using System; + +namespace Obi +{ + [Serializable] + public class ObiBendTwistConstraintsBatch : ObiConstraintsBatch + { + protected IBendTwistConstraintsBatchImpl m_BatchImpl; + + /// + /// Rest darboux vector for each constraint. + /// + [HideInInspector] public ObiNativeQuaternionList restDarbouxVectors = new ObiNativeQuaternionList(); + + /// + /// 3 compliance values for each constraint, one for each local axis (x,y,z) + /// + [HideInInspector] public ObiNativeVector3List stiffnesses = new ObiNativeVector3List(); + + /// + /// two floats per constraint: plastic yield and creep. + /// + [HideInInspector] public ObiNativeVector2List plasticity = new ObiNativeVector2List(); + + public override Oni.ConstraintType constraintType + { + get { return Oni.ConstraintType.BendTwist; } + } + + public override IConstraintsBatchImpl implementation + { + get { return m_BatchImpl; } + } + + public ObiBendTwistConstraintsBatch(ObiBendTwistConstraintsData constraints = null) : base() + { + } + + public void AddConstraint(Vector2Int indices, Quaternion restDarboux) + { + RegisterConstraint(); + + this.particleIndices.Add(indices[0]); + this.particleIndices.Add(indices[1]); + this.restDarbouxVectors.Add(restDarboux); + this.stiffnesses.Add(Vector3.zero); + this.plasticity.Add(Vector2.zero); + } + + public override void Clear() + { + base.Clear(); + particleIndices.Clear(); + restDarbouxVectors.Clear(); + stiffnesses.Clear(); + plasticity.Clear(); + } + + public override void GetParticlesInvolved(int index, List particles) + { + particles.Add(particleIndices[index * 2]); + particles.Add(particleIndices[index * 2 + 1]); + } + + protected override void SwapConstraints(int sourceIndex, int destIndex) + { + particleIndices.Swap(sourceIndex * 2, destIndex * 2); + particleIndices.Swap(sourceIndex * 2 + 1, destIndex * 2 + 1); + restDarbouxVectors.Swap(sourceIndex, destIndex); + stiffnesses.Swap(sourceIndex, destIndex); + plasticity.Swap(sourceIndex, destIndex); + } + + public override void Merge(ObiActor actor, IObiConstraintsBatch other) + { + var batch = other as ObiBendTwistConstraintsBatch; + var user = actor as IBendTwistConstraintsUser; + + if (batch != null && user != null) + { + if (!user.bendTwistConstraintsEnabled) + return; + + particleIndices.ResizeUninitialized((m_ActiveConstraintCount + batch.activeConstraintCount) * 2); + restDarbouxVectors.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + stiffnesses.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + plasticity.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + lambdas.ResizeInitialized((m_ActiveConstraintCount + batch.activeConstraintCount) * 3); + + restDarbouxVectors.CopyFrom(batch.restDarbouxVectors, 0, m_ActiveConstraintCount, batch.activeConstraintCount); + + for (int i = 0; i < batch.activeConstraintCount; ++i) + { + stiffnesses[m_ActiveConstraintCount + i] = user.GetBendTwistCompliance(batch, i); + plasticity[m_ActiveConstraintCount + i] = user.GetBendTwistPlasticity(batch, i); + } + + for (int i = 0; i < batch.activeConstraintCount * 2; ++i) + particleIndices[m_ActiveConstraintCount * 2 + i] = actor.solverIndices[batch.particleIndices[i]]; + + base.Merge(actor, other); + } + } + + public override void AddToSolver(ObiSolver solver) + { + // Create distance constraints batch directly. + m_BatchImpl = solver.implementation.CreateConstraintsBatch(constraintType) as IBendTwistConstraintsBatchImpl; + + if (m_BatchImpl != null) + m_BatchImpl.SetBendTwistConstraints(particleIndices, restDarbouxVectors, stiffnesses, plasticity, lambdas, m_ActiveConstraintCount); + + } + + public override void RemoveFromSolver(ObiSolver solver) + { + //Remove batch: + solver.implementation.DestroyConstraintsBatch(m_BatchImpl as IConstraintsBatchImpl); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiBendTwistConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiBendTwistConstraintsBatch.cs.meta new file mode 100644 index 000000000..c4ab7a404 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiBendTwistConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fd870f7d936fb46178a58eed5f6d4f7e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 91de8d14a7b7a42d88d336323c428b20, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiChainConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiChainConstraintsBatch.cs new file mode 100644 index 000000000..859c86517 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiChainConstraintsBatch.cs @@ -0,0 +1,127 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; + +namespace Obi +{ + [Serializable] + public class ObiChainConstraintsBatch : ObiConstraintsBatch + { + protected IChainConstraintsBatchImpl m_BatchImpl; + + /// + /// index of the first particle for each constraint. + /// + [HideInInspector] public ObiNativeIntList firstParticle = new ObiNativeIntList(); + + /// + /// number of particles for each constraint. + /// + [HideInInspector] public ObiNativeIntList numParticles = new ObiNativeIntList(); + + /// + /// min/max lenghts for each constraint. + /// + [HideInInspector] public ObiNativeVector2List lengths = new ObiNativeVector2List(); + + public override Oni.ConstraintType constraintType + { + get { return Oni.ConstraintType.Chain; } + } + + public override IConstraintsBatchImpl implementation + { + get { return m_BatchImpl; } + } + + public ObiChainConstraintsBatch(ObiChainConstraintsData constraints = null) : base() + { + } + + public void AddConstraint(int[] indices, float restLength, float stretchStiffness, float compressionStiffness) + { + RegisterConstraint(); + + firstParticle.Add((int)particleIndices.count); + numParticles.Add((int)indices.Length); + particleIndices.AddRange(indices); + lengths.Add(new Vector2(restLength, restLength)); + } + + public override void Clear() + { + base.Clear(); + particleIndices.Clear(); + firstParticle.Clear(); + numParticles.Clear(); + lengths.Clear(); + } + + public override void GetParticlesInvolved(int index, List particles) + { + //TODO. + } + + protected override void SwapConstraints(int sourceIndex, int destIndex) + { + firstParticle.Swap(sourceIndex, destIndex); + numParticles.Swap(sourceIndex, destIndex); + lengths.Swap(sourceIndex, destIndex); + } + + public override void Merge(ObiActor actor, IObiConstraintsBatch other) + { + var batch = other as ObiChainConstraintsBatch; + var user = actor as IChainConstraintsUser; + + if (batch != null && user != null) + { + if (!user.chainConstraintsEnabled) + return; + + int initialIndexCount = particleIndices.count; + + int numActiveIndices = 0; + for (int i = 0; i < batch.activeConstraintCount; ++i) + numActiveIndices += batch.numParticles[i]; + + particleIndices.ResizeUninitialized(initialIndexCount + numActiveIndices); + firstParticle.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + numParticles.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + lengths.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + lambdas.ResizeInitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + + numParticles.CopyFrom(batch.numParticles, 0, m_ActiveConstraintCount, batch.activeConstraintCount); + + for (int i = 0; i < numActiveIndices; ++i) + particleIndices[initialIndexCount + i] = actor.solverIndices[batch.particleIndices[i]]; + + for (int i = 0; i < batch.activeConstraintCount; ++i) + { + firstParticle[m_ActiveConstraintCount + i] = batch.firstParticle[i] + initialIndexCount; + lengths[m_ActiveConstraintCount + i] = new Vector2(batch.lengths[i].y * user.tightness, batch.lengths[i].y); + } + + + base.Merge(actor, other); + } + } + + public override void AddToSolver(ObiSolver solver) + { + // Create distance constraints batch directly. + m_BatchImpl = solver.implementation.CreateConstraintsBatch(constraintType) as IChainConstraintsBatchImpl; + + if (m_BatchImpl != null) + m_BatchImpl.SetChainConstraints(particleIndices, lengths, firstParticle, numParticles, m_ActiveConstraintCount); + + } + + public override void RemoveFromSolver(ObiSolver solver) + { + //Remove batch: + solver.implementation.DestroyConstraintsBatch(m_BatchImpl as IConstraintsBatchImpl); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiChainConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiChainConstraintsBatch.cs.meta new file mode 100644 index 000000000..ae544fbb1 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiChainConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a957d8a661ad464085e9f64cfc57406 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 1a42905220c3544c99b3ec98f88b080b, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiConstraintsBatch.cs new file mode 100644 index 000000000..11917cef4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiConstraintsBatch.cs @@ -0,0 +1,202 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + public interface IObiConstraintsBatch + { + int constraintCount + { + get; + } + + int activeConstraintCount + { + get; + set; + } + + int initialActiveConstraintCount + { + get; + set; + } + + Oni.ConstraintType constraintType + { + get; + } + + IConstraintsBatchImpl implementation + { + get; + } + + void AddToSolver(ObiSolver solver); + void RemoveFromSolver(ObiSolver solver); + + void Merge(ObiActor actor, IObiConstraintsBatch other); + + bool DeactivateConstraint(int constraintIndex); + bool ActivateConstraint(int constraintIndex); + void DeactivateAllConstraints(); + + void Clear(); + + void GetParticlesInvolved(int index, List particles); + void ParticlesSwapped(int index, int newIndex); + } + + public abstract class ObiConstraintsBatch : IObiConstraintsBatch + { + [HideInInspector] [SerializeField] protected List m_IDs = new List(); + [HideInInspector] [SerializeField] protected List m_IDToIndex = new List(); /**< maps from constraint ID to constraint index. When activating/deactivating constraints, their order changes. That makes this + map necessary. All active constraints are at the beginning of the constraint arrays, in the 0, activeConstraintCount index range.*/ + + [HideInInspector] [SerializeField] protected int m_ConstraintCount = 0; + [HideInInspector] [SerializeField] protected int m_ActiveConstraintCount = 0; + [HideInInspector] [SerializeField] protected int m_InitialActiveConstraintCount = 0; + + [HideInInspector] public ObiNativeIntList particleIndices = new ObiNativeIntList(); /**< particle indices, amount of them per constraint can be variable. */ + [HideInInspector] public ObiNativeFloatList lambdas = new ObiNativeFloatList(); /**< constraint lambdas */ + + public int constraintCount + { + get { return m_ConstraintCount; } + } + + public int activeConstraintCount + { + get { return m_ActiveConstraintCount; } + set { m_ActiveConstraintCount = value; } + } + + public virtual int initialActiveConstraintCount + { + get { return m_InitialActiveConstraintCount; } + set { m_InitialActiveConstraintCount = value; } + } + + public abstract Oni.ConstraintType constraintType + { + get; + } + + public abstract IConstraintsBatchImpl implementation + { + get; + } + + // Merges a batch from a given actor with this one. + public virtual void Merge(ObiActor actor, IObiConstraintsBatch other) + { + m_ConstraintCount += other.constraintCount; + m_ActiveConstraintCount += other.activeConstraintCount; + m_InitialActiveConstraintCount += other.initialActiveConstraintCount; + } + + + protected abstract void SwapConstraints(int sourceIndex, int destIndex); + public abstract void GetParticlesInvolved(int index, List particles); + public abstract void AddToSolver(ObiSolver solver); + public abstract void RemoveFromSolver(ObiSolver solver); + + protected virtual void CopyConstraint(ObiConstraintsBatch batch, int constraintIndex) { } + + private void InnerSwapConstraints(int sourceIndex, int destIndex) + { + m_IDToIndex[m_IDs[sourceIndex]] = destIndex; + m_IDToIndex[m_IDs[destIndex]] = sourceIndex; + m_IDs.Swap(sourceIndex, destIndex); + SwapConstraints(sourceIndex, destIndex); + } + + /** + * Registers a new constraint. Call this before adding a new contraint to the batch, so that the constraint is given an ID + * and the amount of constraints increased. + */ + protected void RegisterConstraint() + { + m_IDs.Add(m_ConstraintCount); + m_IDToIndex.Add(m_ConstraintCount); + m_ConstraintCount++; + } + + public virtual void Clear() + { + m_ConstraintCount = 0; + m_ActiveConstraintCount = 0; + m_IDs.Clear(); + m_IDToIndex.Clear(); + particleIndices.Clear(); + lambdas.Clear(); + } + + /** + * Given the id of a constraint, return its index in the constraint data arrays. Will return -1 if the constraint does not exist. + */ + public int GetConstraintIndex(int constraintId) + { + if (constraintId < 0 || constraintId >= constraintCount) + return -1; + return m_IDToIndex[constraintId]; + } + + public bool IsConstraintActive(int index) + { + return index < m_ActiveConstraintCount; + } + + public bool ActivateConstraint(int constraintIndex) + { + if (constraintIndex < m_ActiveConstraintCount) + return false; + + InnerSwapConstraints(constraintIndex, m_ActiveConstraintCount); + m_ActiveConstraintCount++; + + return true; + } + + public bool DeactivateConstraint(int constraintIndex) + { + if (constraintIndex >= m_ActiveConstraintCount) + return false; + + m_ActiveConstraintCount--; + InnerSwapConstraints(constraintIndex, m_ActiveConstraintCount); + + return true; + } + + public void DeactivateAllConstraints() + { + m_ActiveConstraintCount = 0; + } + + // Swaps the constraint with the last one and reduces the amount of constraints by one. + public void RemoveConstraint(int constraintIndex) + { + SwapConstraints(constraintIndex, constraintCount - 1); + m_IDs.RemoveAt(constraintCount - 1); + m_IDToIndex.RemoveAt(constraintCount - 1); + + m_ConstraintCount--; + m_ActiveConstraintCount = Mathf.Min(m_ActiveConstraintCount, m_ConstraintCount); + } + + public void ParticlesSwapped(int index, int newIndex) + { + for (int i = 0; i < particleIndices.count; ++i) + { + if (particleIndices[i] == newIndex) + particleIndices[i] = index; + else if (particleIndices[i] == index) + particleIndices[i] = newIndex; + } + } + + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiConstraintsBatch.cs.meta new file mode 100644 index 000000000..46083e7c6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7aacef50ee7794d0c9d6c77ef761d142 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiDistanceConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiDistanceConstraintsBatch.cs new file mode 100644 index 000000000..d412a6e81 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiDistanceConstraintsBatch.cs @@ -0,0 +1,143 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; + +namespace Obi +{ + [Serializable] + public class ObiDistanceConstraintsBatch : ObiConstraintsBatch, IStructuralConstraintBatch + { + [NonSerialized] protected IDistanceConstraintsBatchImpl m_BatchImpl; + + /// + /// Rest distance for each individual constraint. + /// + [HideInInspector] public ObiNativeFloatList restLengths = new ObiNativeFloatList(); + + /// + /// 2 values for each constraint: compliance and slack. + /// + [HideInInspector] public ObiNativeVector2List stiffnesses = new ObiNativeVector2List(); + + public override Oni.ConstraintType constraintType + { + get { return Oni.ConstraintType.Distance; } + } + + public override IConstraintsBatchImpl implementation + { + get { return m_BatchImpl; } + } + + public ObiDistanceConstraintsBatch(int a = 0) + { + } + + public void AddConstraint(Vector2Int indices, float restLength) + { + RegisterConstraint(); + + particleIndices.Add(indices[0]); + particleIndices.Add(indices[1]); + restLengths.Add(restLength); + stiffnesses.Add(Vector2.zero); + } + + public override void Clear() + { + base.Clear(); + restLengths.Clear(); + stiffnesses.Clear(); + } + + public float GetRestLength(int index) + { + return restLengths[index]; + } + + public void SetRestLength(int index, float restLength) + { + restLengths[index] = restLength; + } + + public ParticlePair GetParticleIndices(int index) + { + return new ParticlePair(particleIndices[index * 2],particleIndices[index * 2 + 1]); + } + + public override void GetParticlesInvolved(int index, List particles) + { + particles.Add(particleIndices[index * 2]); + particles.Add(particleIndices[index * 2 + 1]); + } + + protected override void CopyConstraint(ObiConstraintsBatch batch, int constraintIndex) + { + if (batch is ObiDistanceConstraintsBatch) + { + var db = batch as ObiDistanceConstraintsBatch; + RegisterConstraint(); + particleIndices.Add(batch.particleIndices[constraintIndex * 2]); + particleIndices.Add(batch.particleIndices[constraintIndex * 2 + 1]); + restLengths.Add(db.restLengths[constraintIndex]); + stiffnesses.Add(db.stiffnesses[constraintIndex]); + ActivateConstraint(constraintCount - 1); + } + } + + protected override void SwapConstraints(int sourceIndex, int destIndex) + { + particleIndices.Swap(sourceIndex * 2, destIndex * 2); + particleIndices.Swap(sourceIndex * 2 + 1, destIndex * 2 + 1); + restLengths.Swap(sourceIndex, destIndex); + stiffnesses.Swap(sourceIndex, destIndex); + } + + public override void Merge(ObiActor actor, IObiConstraintsBatch other) + { + var batch = other as ObiDistanceConstraintsBatch; + var user = actor as IDistanceConstraintsUser; + + if (batch != null && user != null) + { + if (!user.distanceConstraintsEnabled) + return; + + particleIndices.ResizeUninitialized((m_ActiveConstraintCount + batch.activeConstraintCount) * 2); + restLengths.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + stiffnesses.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + lambdas.ResizeInitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + + for (int i = 0; i < batch.activeConstraintCount * 2; ++i) + particleIndices[m_ActiveConstraintCount * 2 + i] = actor.solverIndices[batch.particleIndices[i]]; + + for (int i = 0; i < batch.activeConstraintCount; ++i) + { + float restLength = batch.restLengths[i] * user.stretchingScale; + restLengths[m_ActiveConstraintCount + i] = restLength; // TODO: use nativelist methods? + stiffnesses[m_ActiveConstraintCount + i] = new Vector2(user.stretchCompliance, user.maxCompression * restLength); + } + + base.Merge(actor, other); + } + } + + public override void AddToSolver(ObiSolver solver) + { + // Create distance constraints batch directly. + m_BatchImpl = solver.implementation.CreateConstraintsBatch(constraintType) as IDistanceConstraintsBatchImpl; + + if (m_BatchImpl != null) + m_BatchImpl.SetDistanceConstraints(particleIndices, restLengths, stiffnesses, lambdas, m_ActiveConstraintCount); + + } + + public override void RemoveFromSolver(ObiSolver solver) + { + //Remove batch: + solver.implementation.DestroyConstraintsBatch(m_BatchImpl as IConstraintsBatchImpl); + } + + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiDistanceConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiDistanceConstraintsBatch.cs.meta new file mode 100644 index 000000000..69910becf --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiDistanceConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6b0df8a8dbd9143dca2d51705e597db4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 8be685232a6ad41508d8bbe9d003a892, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiPinConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiPinConstraintsBatch.cs new file mode 100644 index 000000000..b49dbe5d8 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiPinConstraintsBatch.cs @@ -0,0 +1,147 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + [Serializable] + public class ObiPinConstraintsBatch : ObiConstraintsBatch + { + protected IPinConstraintsBatchImpl m_BatchImpl; + + /// + /// for each constraint, handle of the pinned collider. + /// + [HideInInspector] public List pinBodies = new List(); + + /// + /// index of the pinned collider in the collider world. + /// + [HideInInspector] public ObiNativeIntList colliderIndices = new ObiNativeIntList(); + + /// + /// Pin position expressed in the attachment's local space. + /// + [HideInInspector] public ObiNativeVector4List offsets = new ObiNativeVector4List(); + + /// + /// Rest Darboux vector for each constraint. + /// + [HideInInspector] public ObiNativeQuaternionList restDarbouxVectors = new ObiNativeQuaternionList(); + + /// + /// Compliances of pin constraits. 2 float per constraint (positional and rotational compliance). + /// + [HideInInspector] public ObiNativeFloatList stiffnesses = new ObiNativeFloatList(); + + /// + /// One float per constraint: break threshold. + /// + [HideInInspector] public ObiNativeFloatList breakThresholds = new ObiNativeFloatList(); + + public override Oni.ConstraintType constraintType + { + get { return Oni.ConstraintType.Pin; } + } + + public override IConstraintsBatchImpl implementation + { + get { return m_BatchImpl; } + } + + public ObiPinConstraintsBatch(ObiPinConstraintsData constraints = null) : base() + { + } + + public void AddConstraint(int solverIndex, ObiColliderBase body, Vector3 offset, Quaternion restDarboux, float linearCompliance, float rotationalCompliance, float breakThreshold) + { + RegisterConstraint(); + + particleIndices.Add(solverIndex); + pinBodies.Add(body != null ? body.Handle : new ObiColliderHandle()); + colliderIndices.Add(body != null ? body.Handle.index : -1); + offsets.Add(offset); + restDarbouxVectors.Add(restDarboux); + stiffnesses.Add(linearCompliance); + stiffnesses.Add(rotationalCompliance); + breakThresholds.Add(breakThreshold); + } + + public override void Clear() + { + base.Clear(); + particleIndices.Clear(); + pinBodies.Clear(); + colliderIndices.Clear(); + offsets.Clear(); + restDarbouxVectors.Clear(); + stiffnesses.Clear(); + } + + public override void GetParticlesInvolved(int index, List particles) + { + particles.Add(particleIndices[index]); + } + + protected override void SwapConstraints(int sourceIndex, int destIndex) + { + particleIndices.Swap(sourceIndex, destIndex); + pinBodies.Swap(sourceIndex, destIndex); + colliderIndices.Swap(sourceIndex, destIndex); + offsets.Swap(sourceIndex, destIndex); + restDarbouxVectors.Swap(sourceIndex, destIndex); + stiffnesses.Swap(sourceIndex * 2, destIndex * 2); + stiffnesses.Swap(sourceIndex * 2 + 1, destIndex * 2 + 1); + } + + public override void Merge(ObiActor actor, IObiConstraintsBatch other) + { + var batch = other as ObiPinConstraintsBatch; + + if (batch != null) + { + + particleIndices.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + + colliderIndices.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + offsets.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + restDarbouxVectors.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + stiffnesses.ResizeUninitialized((m_ActiveConstraintCount + batch.activeConstraintCount) * 2); + breakThresholds.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + lambdas.ResizeInitialized((m_ActiveConstraintCount + batch.activeConstraintCount) * 4); + + offsets.CopyFrom(batch.offsets, 0, m_ActiveConstraintCount, batch.activeConstraintCount); + restDarbouxVectors.CopyFrom(batch.restDarbouxVectors, 0, m_ActiveConstraintCount, batch.activeConstraintCount); + stiffnesses.CopyFrom(batch.stiffnesses, 0, m_ActiveConstraintCount * 2, batch.activeConstraintCount * 2); + breakThresholds.CopyFrom(batch.breakThresholds, 0, m_ActiveConstraintCount, batch.activeConstraintCount); + + for (int i = 0; i < batch.activeConstraintCount; ++i) + { + particleIndices[m_ActiveConstraintCount + i] = batch.particleIndices[i]; + colliderIndices[m_ActiveConstraintCount + i] = batch.pinBodies[i] != null ? batch.pinBodies[i].index : -1; + } + + base.Merge(actor, other); + } + } + + public override void AddToSolver(ObiSolver solver) + { + if (solver != null && solver.implementation != null) + { + m_BatchImpl = solver.implementation.CreateConstraintsBatch(constraintType) as IPinConstraintsBatchImpl; + + if (m_BatchImpl != null) + m_BatchImpl.SetPinConstraints(particleIndices, colliderIndices, offsets, restDarbouxVectors, stiffnesses, lambdas, m_ActiveConstraintCount); + } + } + + public override void RemoveFromSolver(ObiSolver solver) + { + if (solver != null && solver.implementation != null) + solver.implementation.DestroyConstraintsBatch(m_BatchImpl as IConstraintsBatchImpl); + } + + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiPinConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiPinConstraintsBatch.cs.meta new file mode 100644 index 000000000..31c2122e6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiPinConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c2de2f97e7edf4bedb38202be59122ae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 85e4f507907784b9eb4637afe5c2e3a4, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiShapeMatchingConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiShapeMatchingConstraintsBatch.cs new file mode 100644 index 000000000..9558a10e4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiShapeMatchingConstraintsBatch.cs @@ -0,0 +1,222 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; + +namespace Obi +{ + [Serializable] + public class ObiShapeMatchingConstraintsBatch : ObiConstraintsBatch + { + protected IShapeMatchingConstraintsBatchImpl m_BatchImpl; + + /// + /// index of the first particle in each constraint. + /// + public ObiNativeIntList firstIndex = new ObiNativeIntList(); + + /// + /// amount of particles in each constraint. + /// + public ObiNativeIntList numIndices = new ObiNativeIntList(); + + /// + /// whether the constraint is implicit (0) or explicit (>0). + /// + public ObiNativeIntList explicitGroup = new ObiNativeIntList(); + + /// + /// 5 floats per constraint: stiffness, plastic yield, creep, recovery and max deformation. + /// + public ObiNativeFloatList materialParameters = new ObiNativeFloatList(); + + + /// + /// rest center of mass for each constraint. + /// + public ObiNativeVector4List restComs = new ObiNativeVector4List(); + + /// + /// current center of mass for each constraint. + /// + public ObiNativeVector4List coms = new ObiNativeVector4List(); + + /// + /// current best-match orientation for each constraint. + /// + public ObiNativeQuaternionList orientations = new ObiNativeQuaternionList(); + + /// + /// current best-match linear transform for each constraint. + /// + public ObiNativeMatrix4x4List linearTransforms = new ObiNativeMatrix4x4List(); + + /// + /// current plastic deformation for each constraint. + /// + public ObiNativeMatrix4x4List plasticDeformations = new ObiNativeMatrix4x4List(); + + + public override Oni.ConstraintType constraintType + { + get { return Oni.ConstraintType.ShapeMatching; } + } + + public override IConstraintsBatchImpl implementation + { + get { return m_BatchImpl; } + } + + public ObiShapeMatchingConstraintsBatch(ObiShapeMatchingConstraintsData constraints = null) : base() + { + } + + public void AddConstraint(int[] indices, bool isExplicit) + { + RegisterConstraint(); + + firstIndex.Add((int)particleIndices.count); + numIndices.Add((int)indices.Length); + explicitGroup.Add(isExplicit ? 1 : 0); + particleIndices.AddRange(indices); + materialParameters.AddRange(new float[] { 1, 1, 1, 1, 1 }); + } + + public override void Clear() + { + base.Clear(); + firstIndex.Clear(); + numIndices.Clear(); + explicitGroup.Clear(); + particleIndices.Clear(); + materialParameters.Clear(); + } + + public override void GetParticlesInvolved(int index, List particles) + { + int first = firstIndex[index]; + int num = numIndices[index]; + for (int i = first; i < first + num; ++i) + particles.Add(particleIndices[i]); + } + + public void RemoveParticleFromConstraint(int constraintIndex, int particleIndex) + { + int first = firstIndex[constraintIndex]; + int num = numIndices[constraintIndex]; + + int found = 0; + for (int i = first + num - 1; i >= first; --i) + { + if (particleIndices[i] == particleIndex) + { + found++; + particleIndices.RemoveAt(i); + } + } + + // update num indices of the current constraint: + numIndices[constraintIndex] -= found; + + // update firstIndex of following constraints: + for (int i = constraintIndex + 1; i < constraintCount; ++i) + firstIndex[i] -= found; + } + + protected override void SwapConstraints(int sourceIndex, int destIndex) + { + firstIndex.Swap(sourceIndex, destIndex); + numIndices.Swap(sourceIndex, destIndex); + explicitGroup.Swap(sourceIndex, destIndex); + + for (int i = 0; i < 5; ++i) + materialParameters.Swap(sourceIndex * 5 + i, destIndex * 5 + i); + + restComs.Swap(sourceIndex, destIndex); + coms.Swap(sourceIndex, destIndex); + orientations.Swap(sourceIndex, destIndex); + linearTransforms.Swap(sourceIndex, destIndex); + plasticDeformations.Swap(sourceIndex, destIndex); + } + + public override void Merge(ObiActor actor, IObiConstraintsBatch other) + { + var batch = other as ObiShapeMatchingConstraintsBatch; + var user = actor as IShapeMatchingConstraintsUser; + + if (batch != null && user != null) + { + if (!user.shapeMatchingConstraintsEnabled) + return; + + int initialIndexCount = particleIndices.count; + + // shape matching constraint particle indices are not reordered when deactivating constraints, + // so instead of using batch.activeConstraintCount, batch.constraintCount. We need all of them. + int numActiveIndices = 0; + for (int i = 0; i < batch.constraintCount; ++i) + numActiveIndices += batch.numIndices[i]; + + particleIndices.ResizeUninitialized(initialIndexCount + numActiveIndices); + firstIndex.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + numIndices.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + explicitGroup.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + materialParameters.ResizeUninitialized((m_ActiveConstraintCount + batch.activeConstraintCount) * 5); + + restComs.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + coms.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + orientations.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + linearTransforms.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + plasticDeformations.ResizeInitialized(m_ActiveConstraintCount + batch.activeConstraintCount, Matrix4x4.identity); + + lambdas.ResizeInitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + + numIndices.CopyFrom(batch.numIndices, 0, m_ActiveConstraintCount, batch.activeConstraintCount); + explicitGroup.CopyFrom(batch.explicitGroup, 0, m_ActiveConstraintCount, batch.activeConstraintCount); + orientations.CopyReplicate(actor.actorLocalToSolverMatrix.rotation, m_ActiveConstraintCount, batch.activeConstraintCount); + + for (int i = 0; i < numActiveIndices; ++i) + particleIndices[initialIndexCount + i] = actor.solverIndices[batch.particleIndices[i]]; + + for (int i = 0; i < batch.activeConstraintCount; ++i) + { + firstIndex[m_ActiveConstraintCount + i] = batch.firstIndex[i] + initialIndexCount; + materialParameters[(m_ActiveConstraintCount + i) * 5] = batch.materialParameters[i * 5] * user.deformationResistance; + materialParameters[(m_ActiveConstraintCount + i) * 5 + 1] = batch.materialParameters[i * 5 + 1] * user.plasticYield; + materialParameters[(m_ActiveConstraintCount + i) * 5 + 2] = batch.materialParameters[i * 5 + 2] * user.plasticCreep; + materialParameters[(m_ActiveConstraintCount + i) * 5 + 3] = batch.materialParameters[i * 5 + 3] * user.plasticRecovery; + materialParameters[(m_ActiveConstraintCount + i) * 5 + 4] = batch.materialParameters[i * 5 + 4] * user.maxDeformation; + } + + base.Merge(actor, other); + } + } + + public override void AddToSolver(ObiSolver solver) + { + // Create distance constraints batch directly. + m_BatchImpl = solver.implementation.CreateConstraintsBatch(constraintType) as IShapeMatchingConstraintsBatchImpl; + + if (m_BatchImpl != null) + { + m_BatchImpl.SetShapeMatchingConstraints(particleIndices, firstIndex, numIndices, explicitGroup, + materialParameters, restComs, coms, orientations, linearTransforms, plasticDeformations, + lambdas, m_ActiveConstraintCount); + + m_BatchImpl.CalculateRestShapeMatching(); + } + } + + public override void RemoveFromSolver(ObiSolver solver) + { + //Remove batch: + solver.implementation.DestroyConstraintsBatch(m_BatchImpl as IConstraintsBatchImpl); + } + + public void RecalculateRestShapeMatching() + { + if (m_BatchImpl != null) + m_BatchImpl.CalculateRestShapeMatching(); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiShapeMatchingConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiShapeMatchingConstraintsBatch.cs.meta new file mode 100644 index 000000000..4c7f8f602 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiShapeMatchingConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7b626d541fade4c159a4373343c8f0bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: a2686776a1c104bfd8868f056a5cd335, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiSkinConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiSkinConstraintsBatch.cs new file mode 100644 index 000000000..0edb2ac0f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiSkinConstraintsBatch.cs @@ -0,0 +1,139 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; + +namespace Obi +{ + [Serializable] + public class ObiSkinConstraintsBatch : ObiConstraintsBatch + { + protected ISkinConstraintsBatchImpl m_BatchImpl; + + + /// + /// skin constraint anchor points, in solver space. + /// + [HideInInspector] public ObiNativeVector4List skinPoints = new ObiNativeVector4List(); + + /// + /// normal vector for each skin constraint, in solver space. + /// + [HideInInspector] public ObiNativeVector4List skinNormals = new ObiNativeVector4List(); + + /// + /// 3 floats per constraint: skin radius, backstop sphere radius, and backstop sphere distance. + /// + [HideInInspector] public ObiNativeFloatList skinRadiiBackstop = new ObiNativeFloatList(); + + /// + /// one compliance value per skin constraint. + /// + [HideInInspector] public ObiNativeFloatList skinCompliance = new ObiNativeFloatList(); + + public override Oni.ConstraintType constraintType + { + get { return Oni.ConstraintType.Skin; } + } + + public override IConstraintsBatchImpl implementation + { + get { return m_BatchImpl; } + } + + public ObiSkinConstraintsBatch(ObiSkinConstraintsData constraints = null) : base() + { + } + + public void AddConstraint(int index, Vector4 point, Vector4 normal, float radius, float collisionRadius, float backstop, float stiffness) + { + RegisterConstraint(); + + particleIndices.Add(index); + skinPoints.Add(point); + skinNormals.Add(normal); + skinRadiiBackstop.Add(radius); + skinRadiiBackstop.Add(collisionRadius); + skinRadiiBackstop.Add(backstop); + skinCompliance.Add(stiffness); + } + + public override void Clear() + { + base.Clear(); + particleIndices.Clear(); + skinPoints.Clear(); + skinNormals.Clear(); + skinRadiiBackstop.Clear(); + skinCompliance.Clear(); + } + + public override void GetParticlesInvolved(int index, List particles) + { + particles.Add(particleIndices[index]); + } + + protected override void SwapConstraints(int sourceIndex, int destIndex) + { + particleIndices.Swap(sourceIndex, destIndex); + skinPoints.Swap(sourceIndex, destIndex); + skinNormals.Swap(sourceIndex, destIndex); + skinRadiiBackstop.Swap(sourceIndex * 3, destIndex * 3); + skinRadiiBackstop.Swap(sourceIndex * 3+1, destIndex * 3+1); + skinRadiiBackstop.Swap(sourceIndex * 3+2, destIndex * 3+2); + skinCompliance.Swap(sourceIndex, destIndex); + } + + public override void Merge(ObiActor actor, IObiConstraintsBatch other) + { + var batch = other as ObiSkinConstraintsBatch; + var user = actor as ISkinConstraintsUser; + + if (batch != null && user != null) + { + if (!user.skinConstraintsEnabled) + return; + + particleIndices.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + skinPoints.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + skinNormals.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + skinRadiiBackstop.ResizeUninitialized((m_ActiveConstraintCount + batch.activeConstraintCount) * 3); + skinCompliance.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + lambdas.ResizeInitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + + skinPoints.CopyFrom(batch.skinPoints, 0, m_ActiveConstraintCount, batch.activeConstraintCount); + skinNormals.CopyFrom(batch.skinNormals, 0, m_ActiveConstraintCount, batch.activeConstraintCount); + + for (int i = 0; i < batch.activeConstraintCount; ++i) + { + var radiiBackstop = user.GetSkinRadiiBackstop(batch, i); + skinRadiiBackstop[(m_ActiveConstraintCount + i) * 3] = radiiBackstop.x; + skinRadiiBackstop[(m_ActiveConstraintCount + i) * 3 + 1] = radiiBackstop.y; + skinRadiiBackstop[(m_ActiveConstraintCount + i) * 3 + 2] = radiiBackstop.z; + skinCompliance[m_ActiveConstraintCount + i] = user.GetSkinCompliance(batch, i); + } + + for (int i = 0; i < batch.activeConstraintCount; ++i) + particleIndices[m_ActiveConstraintCount + i] = actor.solverIndices[batch.particleIndices[i]]; + + base.Merge(actor, other); + } + } + + public override void AddToSolver(ObiSolver solver) + { + // Create distance constraints batch directly. + m_BatchImpl = solver.implementation.CreateConstraintsBatch(constraintType) as ISkinConstraintsBatchImpl; + + if (m_BatchImpl != null) + m_BatchImpl.SetSkinConstraints(particleIndices, skinPoints, skinNormals, skinRadiiBackstop, skinCompliance, lambdas, m_ActiveConstraintCount); + } + + public override void RemoveFromSolver(ObiSolver solver) + { + //Remove batch: + solver.implementation.DestroyConstraintsBatch(m_BatchImpl as IConstraintsBatchImpl); + } + + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiSkinConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiSkinConstraintsBatch.cs.meta new file mode 100644 index 000000000..bd0be6678 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiSkinConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a7643c39396894308b222447b842c2b5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: e58e2a3c37c7547a8a791a56e0a1ace6, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiStretchShearConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiStretchShearConstraintsBatch.cs new file mode 100644 index 000000000..225074fdc --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiStretchShearConstraintsBatch.cs @@ -0,0 +1,149 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; + +namespace Obi +{ + [Serializable] + public class ObiStretchShearConstraintsBatch : ObiConstraintsBatch, IStructuralConstraintBatch + { + protected IStretchShearConstraintsBatchImpl m_BatchImpl; + + /// + /// index of particle orientation for each constraint. + /// + [HideInInspector] public ObiNativeIntList orientationIndices = new ObiNativeIntList(); + + /// + /// rest distance for each constraint. + /// + [HideInInspector] public ObiNativeFloatList restLengths = new ObiNativeFloatList(); + + /// + /// rest orientation for each constraint. + /// + [HideInInspector] public ObiNativeQuaternionList restOrientations = new ObiNativeQuaternionList(); + + /// + /// 3 compliance values per constraint, one for each local axis (x,y,z). + /// + [HideInInspector] public ObiNativeVector3List stiffnesses = new ObiNativeVector3List(); + + public override Oni.ConstraintType constraintType + { + get { return Oni.ConstraintType.StretchShear; } + } + + public override IConstraintsBatchImpl implementation + { + get { return m_BatchImpl; } + } + + public ObiStretchShearConstraintsBatch(ObiStretchShearConstraintsData constraints = null) : base() + { + } + + public void AddConstraint(Vector2Int indices, int orientationIndex, float restLength, Quaternion restOrientation) + { + RegisterConstraint(); + + particleIndices.Add(indices[0]); + particleIndices.Add(indices[1]); + orientationIndices.Add(orientationIndex); + restLengths.Add(restLength); + restOrientations.Add(restOrientation); + stiffnesses.Add(Vector3.zero); + } + + public override void Clear() + { + base.Clear(); + particleIndices.Clear(); + orientationIndices.Clear(); + restLengths.Clear(); + restOrientations.Clear(); + stiffnesses.Clear(); + } + + public float GetRestLength(int index) + { + return restLengths[index]; + } + + public void SetRestLength(int index, float restLength) + { + restLengths[index] = restLength; + } + + public ParticlePair GetParticleIndices(int index) + { + return new ParticlePair(particleIndices[index * 2], particleIndices[index * 2 + 1]); + } + + public override void GetParticlesInvolved(int index, List particles) + { + particles.Add(particleIndices[index * 2]); + particles.Add(particleIndices[index * 2 + 1]); + } + + protected override void SwapConstraints(int sourceIndex, int destIndex) + { + particleIndices.Swap(sourceIndex * 2 , destIndex * 2); + particleIndices.Swap(sourceIndex * 2 + 1, destIndex * 2 + 1); + orientationIndices.Swap(sourceIndex, destIndex); + restLengths.Swap(sourceIndex, destIndex); + restOrientations.Swap(sourceIndex, destIndex); + stiffnesses.Swap(sourceIndex, destIndex); + } + + public override void Merge(ObiActor actor, IObiConstraintsBatch other) + { + var batch = other as ObiStretchShearConstraintsBatch; + var user = actor as IStretchShearConstraintsUser; + + if (batch != null && user != null) + { + if (!user.stretchShearConstraintsEnabled) + return; + + particleIndices.ResizeUninitialized((m_ActiveConstraintCount + batch.activeConstraintCount) * 2); + orientationIndices.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + restLengths.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + restOrientations.ResizeUninitialized(lambdas.count + batch.activeConstraintCount); + stiffnesses.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + lambdas.ResizeInitialized((m_ActiveConstraintCount + batch.activeConstraintCount) * 3); + + restLengths.CopyFrom(batch.restLengths, 0, m_ActiveConstraintCount, batch.activeConstraintCount); + restOrientations.CopyFrom(batch.restOrientations, 0, m_ActiveConstraintCount, batch.activeConstraintCount); + + for (int i = 0; i < batch.activeConstraintCount; ++i) + stiffnesses[m_ActiveConstraintCount + i] = user.GetStretchShearCompliance(batch, i); + + for (int i = 0; i < batch.activeConstraintCount * 2; ++i) + particleIndices[m_ActiveConstraintCount * 2 + i] = actor.solverIndices[batch.particleIndices[i]]; + + for (int i = 0; i < batch.activeConstraintCount; ++i) + orientationIndices[m_ActiveConstraintCount + i] = actor.solverIndices[batch.orientationIndices[i]]; + + base.Merge(actor, other); + } + } + + public override void AddToSolver(ObiSolver solver) + { + // Create distance constraints batch directly. + m_BatchImpl = solver.implementation.CreateConstraintsBatch(constraintType) as IStretchShearConstraintsBatchImpl; + + if (m_BatchImpl != null) + m_BatchImpl.SetStretchShearConstraints(particleIndices, orientationIndices, restLengths, restOrientations, stiffnesses, lambdas, m_ActiveConstraintCount); + } + + public override void RemoveFromSolver(ObiSolver solver) + { + //Remove batch: + solver.implementation.DestroyConstraintsBatch(m_BatchImpl as IConstraintsBatchImpl); + } + + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiStretchShearConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiStretchShearConstraintsBatch.cs.meta new file mode 100644 index 000000000..ea17106be --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiStretchShearConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 915edc2d24cba477e8a942210f7ea8a0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b3583331769a946aab1e4c59859547b2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiTetherConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiTetherConstraintsBatch.cs new file mode 100644 index 000000000..bfecd67a7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiTetherConstraintsBatch.cs @@ -0,0 +1,151 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; + +namespace Obi +{ + [Serializable] + public class ObiTetherConstraintsBatch : ObiConstraintsBatch + { + protected ITetherConstraintsBatchImpl m_BatchImpl; + + /// + /// 2 floats per constraint: maximum length and tether scale. + /// + [HideInInspector] public ObiNativeVector2List maxLengthsScales = new ObiNativeVector2List(); + + /// + /// compliance value for each constraint. + /// + [HideInInspector] public ObiNativeFloatList stiffnesses = new ObiNativeFloatList(); + + public override Oni.ConstraintType constraintType + { + get { return Oni.ConstraintType.Tether; } + } + + public override IConstraintsBatchImpl implementation + { + get { return m_BatchImpl; } + } + + public ObiTetherConstraintsBatch(ObiTetherConstraintsData constraints = null) : base() + { + } + + public void AddConstraint(Vector2Int indices, float maxLength, float scale) + { + RegisterConstraint(); + + particleIndices.Add(indices[0]); + particleIndices.Add(indices[1]); + maxLengthsScales.Add(new Vector2(maxLength, scale)); + stiffnesses.Add(0); + } + + public override void Clear() + { + base.Clear(); + particleIndices.Clear(); + maxLengthsScales.Clear(); + stiffnesses.Clear(); + } + + public override void GetParticlesInvolved(int index, List particles) + { + particles.Add(particleIndices[index * 2]); + particles.Add(particleIndices[index * 2 + 1]); + } + + protected override void SwapConstraints(int sourceIndex, int destIndex) + { + particleIndices.Swap(sourceIndex * 2, destIndex * 2); + particleIndices.Swap(sourceIndex * 2 + 1, destIndex * 2 + 1); + maxLengthsScales.Swap(sourceIndex, destIndex); + stiffnesses.Swap(sourceIndex, destIndex); + } + + public override void Merge(ObiActor actor, IObiConstraintsBatch other) + { + var batch = other as ObiTetherConstraintsBatch; + var user = actor as ITetherConstraintsUser; + + if (batch != null && user != null) + { + if (!user.tetherConstraintsEnabled) + return; + + particleIndices.ResizeUninitialized((m_ActiveConstraintCount + batch.activeConstraintCount) * 2); + maxLengthsScales.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + stiffnesses.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + lambdas.ResizeInitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + + stiffnesses.CopyReplicate(user.tetherCompliance, m_ActiveConstraintCount, batch.activeConstraintCount); + + for (int i = 0; i < batch.activeConstraintCount * 2; ++i) + particleIndices[m_ActiveConstraintCount * 2 + i] = actor.solverIndices[batch.particleIndices[i]]; + + for (int i = 0; i < batch.activeConstraintCount; ++i) + maxLengthsScales[m_ActiveConstraintCount + i] = new Vector2(batch.maxLengthsScales[i].x, user.tetherScale); + + base.Merge(actor, other); + } + } + + public override void AddToSolver(ObiSolver solver) + { + // Create distance constraints batch directly. + m_BatchImpl = solver.implementation.CreateConstraintsBatch(constraintType) as ITetherConstraintsBatchImpl; + + if (m_BatchImpl != null) + m_BatchImpl.SetTetherConstraints(particleIndices, maxLengthsScales, stiffnesses, lambdas, m_ActiveConstraintCount); + } + + public override void RemoveFromSolver(ObiSolver solver) + { + //Remove batch: + solver.implementation.DestroyConstraintsBatch(m_BatchImpl as IConstraintsBatchImpl); + } + + /*public override void AddToSolver(ObiSolver solver) + { + // create and add the implementation: + if (m_Constraints != null && m_Constraints.implementation != null) + { + m_BatchImpl = m_Constraints.implementation.CreateConstraintsBatch(); + } + + if (m_BatchImpl != null) + { + lambdas.Clear(); + for (int i = 0; i < stiffnesses.count; i++) + { + //particleIndices[i * 2] = constraints.GetActor().solverIndices[m_Source.particleIndices[i * 2]]; + //particleIndices[i * 2 + 1] = constraints.GetActor().solverIndices[m_Source.particleIndices[i * 2 + 1]]; + lambdas.Add(0); + } + + m_BatchImpl.SetTetherConstraints(particleIndices, maxLengthsScales, stiffnesses, lambdas, m_ConstraintCount); + m_BatchImpl.SetActiveConstraints(m_ActiveConstraintCount); + } + + } + + public override void RemoveFromSolver(ObiSolver solver) + { + if (m_Constraints != null && m_Constraints.implementation != null) + m_Constraints.implementation.RemoveBatch(m_BatchImpl); + }*/ + + public void SetParameters(float compliance, float scale) + { + for (int i = 0; i < stiffnesses.count; i++) + { + stiffnesses[i] = compliance; + maxLengthsScales[i] = new Vector2(maxLengthsScales[i].x, scale); + } + } + + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiTetherConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiTetherConstraintsBatch.cs.meta new file mode 100644 index 000000000..ebed69f8e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiTetherConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6cf16f1dcc0c34dbd816110ce4b29ed9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 45a4a839cd07d49f698be261ce71ee3c, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiVolumeConstraintsBatch.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiVolumeConstraintsBatch.cs new file mode 100644 index 000000000..a4859dc86 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiVolumeConstraintsBatch.cs @@ -0,0 +1,140 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; + +namespace Obi +{ + [Serializable] + public class ObiVolumeConstraintsBatch : ObiConstraintsBatch + { + protected IVolumeConstraintsBatchImpl m_BatchImpl; + + /// + /// index of the first triangle for each constraint (exclusive prefix sum). + /// + [HideInInspector] public ObiNativeIntList firstTriangle = new ObiNativeIntList(); + + /// + /// number of triangles for each constraint. + /// + [HideInInspector] public ObiNativeIntList numTriangles = new ObiNativeIntList(); + + /// + /// rest volume for each constraint. + /// + [HideInInspector] public ObiNativeFloatList restVolumes = new ObiNativeFloatList(); + + /// + /// 2 floats per constraint: pressure and stiffness. + /// + [HideInInspector] public ObiNativeVector2List pressureStiffness = new ObiNativeVector2List(); + + public override Oni.ConstraintType constraintType + { + get { return Oni.ConstraintType.Volume; } + } + + public override IConstraintsBatchImpl implementation + { + get { return m_BatchImpl; } + } + + public ObiVolumeConstraintsBatch(ObiVolumeConstraintsData constraints = null) : base() + { + } + + public void AddConstraint(int[] triangles, float restVolume) + { + RegisterConstraint(); + + firstTriangle.Add((int)particleIndices.count / 3); + numTriangles.Add((int)triangles.Length / 3); + restVolumes.Add(restVolume); + pressureStiffness.Add(new Vector2(1,0)); + particleIndices.AddRange(triangles); + } + + public override void Clear() + { + base.Clear(); + particleIndices.Clear(); + firstTriangle.Clear(); + numTriangles.Clear(); + restVolumes.Clear(); + pressureStiffness.Clear(); + } + + public override void GetParticlesInvolved(int index, List particles) + { + //TODO. + } + + protected override void SwapConstraints(int sourceIndex, int destIndex) + { + firstTriangle.Swap(sourceIndex, destIndex); + numTriangles.Swap(sourceIndex, destIndex); + restVolumes.Swap(sourceIndex, destIndex); + pressureStiffness.Swap(sourceIndex, destIndex); + } + + public override void Merge(ObiActor actor, IObiConstraintsBatch other) + { + var batch = other as ObiVolumeConstraintsBatch; + var user = actor as IVolumeConstraintsUser; + + if (batch != null && user != null) + { + if (!user.volumeConstraintsEnabled) + return; + + int initialIndexCount = particleIndices.count; + + int numActiveTriangles = 0; + for (int i = 0; i < batch.constraintCount; ++i) + numActiveTriangles += batch.numTriangles[i]; + + particleIndices.ResizeUninitialized(initialIndexCount + numActiveTriangles * 3); + firstTriangle.ResizeUninitialized(firstTriangle.count + batch.activeConstraintCount); + numTriangles.ResizeUninitialized(numTriangles.count + batch.activeConstraintCount); + restVolumes.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + pressureStiffness.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + lambdas.ResizeInitialized(m_ActiveConstraintCount + batch.activeConstraintCount); + + numTriangles.CopyFrom(batch.numTriangles, 0, m_ActiveConstraintCount, batch.activeConstraintCount); + restVolumes.CopyFrom(batch.restVolumes, 0, m_ActiveConstraintCount, batch.activeConstraintCount); + pressureStiffness.CopyReplicate(new Vector2(user.pressure, user.compressionCompliance), m_ActiveConstraintCount, batch.activeConstraintCount); + + for (int i = 0; i < numActiveTriangles * 3; ++i) + particleIndices[initialIndexCount + i] = actor.solverIndices[batch.particleIndices[i]]; + + for (int i = 0; i < batch.activeConstraintCount + 1; ++i) + firstTriangle[m_ActiveConstraintCount + i] = initialIndexCount/3 + batch.firstTriangle[i]; + + base.Merge(actor, other); + } + } + + public override void AddToSolver(ObiSolver solver) + { + // Create distance constraints batch directly. + m_BatchImpl = solver.implementation.CreateConstraintsBatch(constraintType) as IVolumeConstraintsBatchImpl; + + if (m_BatchImpl != null) + m_BatchImpl.SetVolumeConstraints(particleIndices, firstTriangle, numTriangles, restVolumes, pressureStiffness, lambdas, m_ActiveConstraintCount); + } + + public override void RemoveFromSolver(ObiSolver solver) + { + //Remove batch: + solver.implementation.DestroyConstraintsBatch(m_BatchImpl as IConstraintsBatchImpl); + } + + public void SetParameters(float compliance, float pressure) + { + Vector2 p = new Vector2(pressure, compliance); + for (int i = 0; i < pressureStiffness.count; i++) + pressureStiffness[i] = p; + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiVolumeConstraintsBatch.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiVolumeConstraintsBatch.cs.meta new file mode 100644 index 000000000..cd298e6eb --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Batches/ObiVolumeConstraintsBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 38adc52900fa64209829b6db86f4fd40 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: d9d3ddf824bd449e5b405439ee034b12, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups.meta new file mode 100644 index 000000000..9c61b7fc0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a4c68760109fb4c9a9fe6cd000123940 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiAerodynamicConstraintsData.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiAerodynamicConstraintsData.cs new file mode 100644 index 000000000..d2e05fb12 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiAerodynamicConstraintsData.cs @@ -0,0 +1,38 @@ +using UnityEngine; +using System.Collections; +using System; + +namespace Obi +{ + + public interface IAerodynamicConstraintsUser + { + bool aerodynamicsEnabled + { + get; + set; + } + + float drag + { + get; + set; + } + + float lift + { + get; + set; + } + + } + + [Serializable] + public class ObiAerodynamicConstraintsData : ObiConstraints + { + public override ObiAerodynamicConstraintsBatch CreateBatch(ObiAerodynamicConstraintsBatch source = null) + { + return new ObiAerodynamicConstraintsBatch(); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiAerodynamicConstraintsData.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiAerodynamicConstraintsData.cs.meta new file mode 100644 index 000000000..98ac57b33 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiAerodynamicConstraintsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f82b39fc2deaa46d9bbec616c2e7aaf5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiBendConstraintsData.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiBendConstraintsData.cs new file mode 100644 index 000000000..dfed54a54 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiBendConstraintsData.cs @@ -0,0 +1,49 @@ +using UnityEngine; +using System.Collections; +using System; + +namespace Obi +{ + public interface IBendConstraintsUser + { + bool bendConstraintsEnabled + { + get; + set; + } + + float bendCompliance + { + get; + set; + } + + float maxBending + { + get; + set; + } + + float plasticYield + { + get; + set; + } + + float plasticCreep + { + get; + set; + } + + } + + [Serializable] + public class ObiBendConstraintsData : ObiConstraints + { + public override ObiBendConstraintsBatch CreateBatch(ObiBendConstraintsBatch source = null) + { + return new ObiBendConstraintsBatch(); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiBendConstraintsData.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiBendConstraintsData.cs.meta new file mode 100644 index 000000000..02b7052bf --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiBendConstraintsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b1c1bcd52cdf746fc8f62059ba5bb9e9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiBendTwistConstraintsData.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiBendTwistConstraintsData.cs new file mode 100644 index 000000000..36d4709c7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiBendTwistConstraintsData.cs @@ -0,0 +1,28 @@ +using UnityEngine; +using System; + +namespace Obi +{ + + public interface IBendTwistConstraintsUser + { + bool bendTwistConstraintsEnabled + { + get; + set; + } + + Vector3 GetBendTwistCompliance(ObiBendTwistConstraintsBatch batch, int constraintIndex); + Vector2 GetBendTwistPlasticity(ObiBendTwistConstraintsBatch batch, int constraintIndex); + } + + [Serializable] + public class ObiBendTwistConstraintsData : ObiConstraints + { + + public override ObiBendTwistConstraintsBatch CreateBatch(ObiBendTwistConstraintsBatch source = null) + { + return new ObiBendTwistConstraintsBatch(); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiBendTwistConstraintsData.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiBendTwistConstraintsData.cs.meta new file mode 100644 index 000000000..eb547ee14 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiBendTwistConstraintsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e2e8e3c3251694dcfbb9aabbd5ed1a4a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiChainConstraintsData.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiChainConstraintsData.cs new file mode 100644 index 000000000..7a09a7ba7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiChainConstraintsData.cs @@ -0,0 +1,32 @@ +using UnityEngine; +using System.Collections; +using System; + +namespace Obi +{ + + public interface IChainConstraintsUser + { + + bool chainConstraintsEnabled + { + get; + set; + } + + float tightness + { + get; + set; + } + } + + [Serializable] + public class ObiChainConstraintsData : ObiConstraints + { + public override ObiChainConstraintsBatch CreateBatch(ObiChainConstraintsBatch source = null) + { + return new ObiChainConstraintsBatch(); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiChainConstraintsData.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiChainConstraintsData.cs.meta new file mode 100644 index 000000000..75868c484 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiChainConstraintsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 33365683dad7c4ad395bce89c5381081 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiDistanceConstraintsData.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiDistanceConstraintsData.cs new file mode 100644 index 000000000..11f175d9c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiDistanceConstraintsData.cs @@ -0,0 +1,43 @@ +using UnityEngine; +using System.Collections; +using System; + +namespace Obi +{ + public interface IDistanceConstraintsUser + { + bool distanceConstraintsEnabled + { + get; + set; + } + + float stretchingScale + { + get; + set; + } + + float stretchCompliance + { + get; + set; + } + + float maxCompression + { + get; + set; + } + } + + [Serializable] + public class ObiDistanceConstraintsData : ObiConstraints + { + + public override ObiDistanceConstraintsBatch CreateBatch(ObiDistanceConstraintsBatch source = null) + { + return new ObiDistanceConstraintsBatch(); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiDistanceConstraintsData.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiDistanceConstraintsData.cs.meta new file mode 100644 index 000000000..a5723c0c7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiDistanceConstraintsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 782174d96bf484b98b0dbb103eeb2d1c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiPinConstraintsData.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiPinConstraintsData.cs new file mode 100644 index 000000000..0b1201a64 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiPinConstraintsData.cs @@ -0,0 +1,16 @@ +using UnityEngine; +using System.Collections; +using System; + +namespace Obi +{ + [Serializable] + public class ObiPinConstraintsData : ObiConstraints + { + + public override ObiPinConstraintsBatch CreateBatch(ObiPinConstraintsBatch source = null) + { + return new ObiPinConstraintsBatch(); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiPinConstraintsData.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiPinConstraintsData.cs.meta new file mode 100644 index 000000000..593e47902 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiPinConstraintsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b7a2147b44dc24d59a5b57314325ae6c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiShapeMatchingConstraintsData.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiShapeMatchingConstraintsData.cs new file mode 100644 index 000000000..69e4f3ec2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiShapeMatchingConstraintsData.cs @@ -0,0 +1,55 @@ +using UnityEngine; +using System.Collections; +using System; + +namespace Obi +{ + + public interface IShapeMatchingConstraintsUser + { + bool shapeMatchingConstraintsEnabled + { + get; + set; + } + + float deformationResistance + { + get; + set; + } + + float maxDeformation + { + get; + set; + } + + float plasticYield + { + get; + set; + } + + float plasticCreep + { + get; + set; + } + + float plasticRecovery + { + get; + set; + } + } + + [Serializable] + public class ObiShapeMatchingConstraintsData : ObiConstraints + { + public override ObiShapeMatchingConstraintsBatch CreateBatch(ObiShapeMatchingConstraintsBatch source = null) + { + return new ObiShapeMatchingConstraintsBatch(); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiShapeMatchingConstraintsData.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiShapeMatchingConstraintsData.cs.meta new file mode 100644 index 000000000..9476adec7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiShapeMatchingConstraintsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0d275158a9006411cb1a69f84653efcb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiSkinConstraintsData.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiSkinConstraintsData.cs new file mode 100644 index 000000000..4beddc7b9 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiSkinConstraintsData.cs @@ -0,0 +1,26 @@ +using UnityEngine; +using System; + +namespace Obi +{ + public interface ISkinConstraintsUser + { + bool skinConstraintsEnabled + { + get; + set; + } + + Vector3 GetSkinRadiiBackstop(ObiSkinConstraintsBatch batch, int constraintIndex); + float GetSkinCompliance(ObiSkinConstraintsBatch batch, int constraintIndex); + } + + [Serializable] + public class ObiSkinConstraintsData : ObiConstraints + { + public override ObiSkinConstraintsBatch CreateBatch(ObiSkinConstraintsBatch source = null) + { + return new ObiSkinConstraintsBatch(); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiSkinConstraintsData.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiSkinConstraintsData.cs.meta new file mode 100644 index 000000000..45d605e9e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiSkinConstraintsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0bb567aa0489c4b38bf7e6f9b43d953f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiStretchShearConstraintsData.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiStretchShearConstraintsData.cs new file mode 100644 index 000000000..54db995bf --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiStretchShearConstraintsData.cs @@ -0,0 +1,28 @@ +using UnityEngine; +using System.Collections; +using System; + +namespace Obi +{ + + public interface IStretchShearConstraintsUser + { + bool stretchShearConstraintsEnabled + { + get; + set; + } + + Vector3 GetStretchShearCompliance(ObiStretchShearConstraintsBatch batch, int constraintIndex); + } + + [Serializable] + public class ObiStretchShearConstraintsData : ObiConstraints + { + + public override ObiStretchShearConstraintsBatch CreateBatch(ObiStretchShearConstraintsBatch source = null) + { + return new ObiStretchShearConstraintsBatch(); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiStretchShearConstraintsData.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiStretchShearConstraintsData.cs.meta new file mode 100644 index 000000000..825e8e613 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiStretchShearConstraintsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f8ae3ab8eafd74991858032375e5444f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiTetherConstraintsData.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiTetherConstraintsData.cs new file mode 100644 index 000000000..a0269d984 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiTetherConstraintsData.cs @@ -0,0 +1,38 @@ +using UnityEngine; +using System.Collections; +using System; + +namespace Obi +{ + + public interface ITetherConstraintsUser + { + bool tetherConstraintsEnabled + { + get; + set; + } + + float tetherCompliance + { + get; + set; + } + + float tetherScale + { + get; + set; + } + } + + + [Serializable] + public class ObiTetherConstraintsData : ObiConstraints + { + public override ObiTetherConstraintsBatch CreateBatch(ObiTetherConstraintsBatch source = null) + { + return new ObiTetherConstraintsBatch(); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiTetherConstraintsData.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiTetherConstraintsData.cs.meta new file mode 100644 index 000000000..7e7cbcbed --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiTetherConstraintsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 10997226d34c34554a17c69f27627e5d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiVolumeConstraintsData.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiVolumeConstraintsData.cs new file mode 100644 index 000000000..3b76209bd --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiVolumeConstraintsData.cs @@ -0,0 +1,37 @@ +using UnityEngine; +using System.Collections; +using System; + +namespace Obi +{ + + public interface IVolumeConstraintsUser + { + bool volumeConstraintsEnabled + { + get; + set; + } + + float compressionCompliance + { + get; + set; + } + + float pressure + { + get; + set; + } + } + + [Serializable] + public class ObiVolumeConstraintsData : ObiConstraints + { + public override ObiVolumeConstraintsBatch CreateBatch(ObiVolumeConstraintsBatch source = null) + { + return new ObiVolumeConstraintsBatch(); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiVolumeConstraintsData.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiVolumeConstraintsData.cs.meta new file mode 100644 index 000000000..559f0d834 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/Groups/ObiVolumeConstraintsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 55945e863f03047c18b48088708c2935 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/ObiConstraints.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/ObiConstraints.cs new file mode 100644 index 000000000..d4ccd6990 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/ObiConstraints.cs @@ -0,0 +1,172 @@ +using UnityEngine; +using System.Collections.Generic; +using System; + +namespace Obi +{ + public interface IObiConstraints + { + Oni.ConstraintType? GetConstraintType(); + + IObiConstraintsBatch GetBatch(int i); + int GetBatchCount(); + void Clear(); + + bool AddToSolver(ObiSolver solver); + bool RemoveFromSolver(); + + int GetConstraintCount(); + int GetActiveConstraintCount(); + void DeactivateAllConstraints(); + + void Merge(ObiActor actor, IObiConstraints other); + } + + [Serializable] + public abstract class ObiConstraints : IObiConstraints where T : class, IObiConstraintsBatch + { + [NonSerialized] protected ObiSolver m_Solver; + [HideInInspector] public List batches = new List(); + + // merges constraints from a given actor with this one. + public void Merge(ObiActor actor, IObiConstraints other) + { + var others = other as ObiConstraints; + + if (others == null || !other.GetConstraintType().HasValue) + return; + + int constraintType = (int)other.GetConstraintType().Value; + + // clear batch offsets for this constraint type: + actor.solverBatchOffsets[constraintType].Clear(); + + // create new empty batches if needed: + int newBatches = Mathf.Max(0, others.GetBatchCount() - GetBatchCount()); + for (int i = 0; i < newBatches; ++i) + AddBatch(CreateBatch()); + + for (int i = 0; i < other.GetBatchCount(); ++i) + { + // store this batch's offset: + actor.solverBatchOffsets[constraintType].Add(batches[i].activeConstraintCount); + + // merge both batches: + batches[i].Merge(actor, others.batches[i]); + } + + } + + public IObiConstraintsBatch GetBatch(int i) + { + if (batches != null && i >= 0 && i < batches.Count) + return (IObiConstraintsBatch) batches[i]; + return null; + } + + public int GetBatchCount() + { + return batches == null ? 0 : batches.Count; + } + + public int GetConstraintCount() + { + int count = 0; + if (batches == null) return count; + + foreach (T batch in batches) + if (batch != null) + count += batch.constraintCount; + + return count; + } + + public int GetActiveConstraintCount() + { + int count = 0; + if (batches == null) return count; + + foreach (T batch in batches) + if (batch != null) + count += batch.activeConstraintCount; + + return count; + } + + public void DeactivateAllConstraints() + { + if (batches != null) + foreach (T batch in batches) + if (batch != null) + batch.DeactivateAllConstraints(); + } + + public T GetFirstBatch() + { + return (batches != null && batches.Count > 0) ? batches[0] : null; + } + + public Oni.ConstraintType? GetConstraintType() + { + if (batches != null && batches.Count > 0) + return batches[0].constraintType; + else return null; + } + + public void Clear() + { + RemoveFromSolver(); + + if (batches != null) + batches.Clear(); + } + + public virtual T CreateBatch(T source = null) + { + return null; + } + + public void AddBatch(T batch) + { + if (batch != null) + batches.Add(batch); + } + + public bool RemoveBatch(T batch) + { + if (batches == null || batch == null) + return false; + return batches.Remove(batch); + } + + public bool AddToSolver(ObiSolver solver) + { + + if (this.m_Solver != null || batches == null) + return false; + + this.m_Solver = solver; + + foreach (T batch in batches) + batch.AddToSolver(m_Solver); + + return true; + + } + + public bool RemoveFromSolver() + { + + if (this.m_Solver == null || batches == null) + return false; + + foreach (T batch in batches) + batch.RemoveFromSolver(m_Solver); + + this.m_Solver = null; + + return true; + + } + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/ObiConstraints.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/ObiConstraints.cs.meta new file mode 100644 index 000000000..53ddd38c4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/ObiConstraints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ef958cf590b69495999edd2bbdd290f7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/StructuralConstraint.cs b/Assets/Obi/Scripts/Common/Blueprints/Constraints/StructuralConstraint.cs new file mode 100644 index 000000000..927e99ac0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/StructuralConstraint.cs @@ -0,0 +1,37 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public struct StructuralConstraint + { + public IStructuralConstraintBatch batchIndex; + public int constraintIndex; + public float force; + + public float restLength + { + get + { + if (batchIndex == null) + return -1; + return batchIndex.GetRestLength(constraintIndex); + } + + set + { + if (batchIndex != null) + { + batchIndex.SetRestLength(constraintIndex, value); + } + } + } + + public StructuralConstraint(IStructuralConstraintBatch batchIndex, int constraintIndex, float force) + { + this.batchIndex = batchIndex; + this.constraintIndex = constraintIndex; + this.force = force; + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Blueprints/Constraints/StructuralConstraint.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/Constraints/StructuralConstraint.cs.meta new file mode 100644 index 000000000..0d46eb5e3 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/Constraints/StructuralConstraint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 553bc976d8dc04e3fa4a38926a713231 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/GraphColoring.cs b/Assets/Obi/Scripts/Common/Blueprints/GraphColoring.cs new file mode 100644 index 000000000..fc4223716 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/GraphColoring.cs @@ -0,0 +1,106 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Obi +{ + /** + * General greedy graph coloring algorithm for constraints. Input: + * - List of particle indices used by all constraints. + * - List of per-constraint offsets of the first constrained particle in the previous array, with the total amount of particle indices in the last position. + * + * The output is a color for each constraint. Constraints of the same color are guaranteed to not share any partices. + */ + public class GraphColoring + { + private List m_ParticleIndices; + private List m_ConstraintIndices; + private List> m_ConstraintsPerParticle; + + public IReadOnlyList particleIndices => m_ParticleIndices.AsReadOnly(); + public IReadOnlyList constraintIndices => m_ConstraintIndices.AsReadOnly(); + + public GraphColoring(int particleCount = 0) + { + m_ParticleIndices = new List(); + m_ConstraintIndices = new List(); + m_ConstraintsPerParticle = new List>(particleCount); + for (int i = 0; i < particleCount; ++i) + m_ConstraintsPerParticle.Add(new List()); + } + + public void Clear() + { + m_ParticleIndices.Clear(); + m_ConstraintIndices.Clear(); + for (int i = 0; i < m_ConstraintsPerParticle.Count; ++i) + m_ConstraintsPerParticle[i].Clear(); + } + + public void AddConstraint(int[] particles) + { + for (int i = 0; i < particles.Length; ++i) + { + while (particles[i] >= m_ConstraintsPerParticle.Count) + m_ConstraintsPerParticle.Add(new List()); + m_ConstraintsPerParticle[particles[i]].Add(m_ConstraintIndices.Count); + } + + m_ConstraintIndices.Add(m_ParticleIndices.Count); + m_ParticleIndices.AddRange(particles); + } + + public IEnumerator Colorize(string progressDescription, List colors) + { + m_ConstraintIndices.Add(m_ParticleIndices.Count); + + int constraintCount = Mathf.Max(0, m_ConstraintIndices.Count - 1); + colors.Clear(); + + if (constraintCount == 0) + yield break; + + colors.Capacity = constraintCount; + bool[] availability = new bool[constraintCount]; + + for (int i = 0; i < constraintCount; ++i) + { + colors.Add(-1); + availability[i] = true; + } + + // For each constraint: + for (int i = 0; i < constraintCount; ++i) + { + // iterate over its particles: + for (int j = m_ConstraintIndices[i]; j < m_ConstraintIndices[i + 1]; ++j) + { + // for each particle, get constraints affecting it: + foreach (int k in m_ConstraintsPerParticle[m_ParticleIndices[j]]) + { + // skip ourselves: + if (i == k) continue; + + // both constraints share a particle so mark the neighbour color as unavailable: + if (colors[k] >= 0) + availability[colors[k]] = false; + } + } + + // Assign the first available color: + for (colors[i] = 0; colors[i] < constraintCount; ++colors[i]) + if (availability[colors[i]]) + break; + + // Reset availability flags: + for (int j = 0; j < constraintCount; ++j) + availability[j] = true; + + yield return new CoroutineJob.ProgressInfo(progressDescription, i / (float)constraintCount); + } + } + + + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/GraphColoring.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/GraphColoring.cs.meta new file mode 100644 index 000000000..ff8811308 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/GraphColoring.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9fd5c54becb84484b9b524f897fa9f23 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/ObiActorBlueprint.cs b/Assets/Obi/Scripts/Common/Blueprints/ObiActorBlueprint.cs new file mode 100644 index 000000000..894a445b1 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/ObiActorBlueprint.cs @@ -0,0 +1,606 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Serialization; + +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace Obi +{ + + public abstract class ObiActorBlueprint : ScriptableObject, IObiParticleCollection + { + public delegate void BlueprintCallback(ObiActorBlueprint blueprint); + public event BlueprintCallback OnBlueprintGenerate; + + [HideInInspector] [SerializeField] protected bool m_Empty = true; + [HideInInspector] [SerializeField] protected int m_ActiveParticleCount = 0; + [HideInInspector] [SerializeField] protected int m_InitialActiveParticleCount = 0; + [HideInInspector] [SerializeField] protected Bounds _bounds = new Bounds(); + + /**Particle components*/ + [HideInInspector] public Vector3[] positions = null; /**< Particle positions.*/ + [HideInInspector] public Vector4[] restPositions = null; /**< Particle rest positions, used to filter collisions.*/ + + [HideInInspector] public Quaternion[] orientations = null; /**< Particle orientations.*/ + [HideInInspector] public Quaternion[] restOrientations = null; /**< Particle rest orientations.*/ + + [HideInInspector] public Vector3[] velocities = null; /**< Particle velocities.*/ + [HideInInspector] public Vector3[] angularVelocities = null; /**< Particle angular velocities.*/ + + [HideInInspector] public float[] invMasses = null; /**< Particle inverse masses*/ + [HideInInspector] public float[] invRotationalMasses = null; + + [FormerlySerializedAs("phases")] + [HideInInspector] public int[] filters = null; /**< Particle filters*/ + [HideInInspector] public Vector3[] principalRadii = null; /**< Particle ellipsoid principal radii. These are the ellipsoid radius in each axis.*/ + [HideInInspector] public Color[] colors = null; /**< Particle colors (not used by all actors, can be null)*/ + + /** Simplices **/ + [HideInInspector] public int[] points = null; + [HideInInspector] public int[] edges = null; + [HideInInspector] public int[] triangles = null; + + /** Constraint components. Each constraint type contains a list of constraint batches.*/ + [HideInInspector] public ObiDistanceConstraintsData distanceConstraintsData = null; + [HideInInspector] public ObiBendConstraintsData bendConstraintsData = null; + [HideInInspector] public ObiSkinConstraintsData skinConstraintsData = null; + [HideInInspector] public ObiTetherConstraintsData tetherConstraintsData = null; + [HideInInspector] public ObiStretchShearConstraintsData stretchShearConstraintsData = null; + [HideInInspector] public ObiBendTwistConstraintsData bendTwistConstraintsData = null; + [HideInInspector] public ObiShapeMatchingConstraintsData shapeMatchingConstraintsData = null; + [HideInInspector] public ObiAerodynamicConstraintsData aerodynamicConstraintsData = null; + [HideInInspector] public ObiChainConstraintsData chainConstraintsData = null; + [HideInInspector] public ObiVolumeConstraintsData volumeConstraintsData = null; + + /** Particle groups.*/ + [HideInInspector] public List groups = new List(); + + /** + * Returns the amount of particles used by this blueprint. + */ + public int particleCount + { + get { return positions != null ? positions.Length : 0; } + } + + public int activeParticleCount + { + get { return m_ActiveParticleCount; } + } + + /** + * Returns whether this group uses oriented particles. + */ + public bool usesOrientedParticles + { + get + { + return invRotationalMasses != null && invRotationalMasses.Length > 0 && + orientations != null && orientations.Length > 0 && + restOrientations != null && restOrientations.Length > 0; + } + } + + public virtual bool usesTethers + { + get { return false; } + } + + public bool IsParticleActive(int index) + { + return index < m_ActiveParticleCount; + } + + protected virtual void SwapWithFirstInactiveParticle(int index) + { + positions.Swap(index, m_ActiveParticleCount); + restPositions.Swap(index, m_ActiveParticleCount); + orientations.Swap(index, m_ActiveParticleCount); + restOrientations.Swap(index, m_ActiveParticleCount); + velocities.Swap(index, m_ActiveParticleCount); + angularVelocities.Swap(index, m_ActiveParticleCount); + invMasses.Swap(index, m_ActiveParticleCount); + invRotationalMasses.Swap(index, m_ActiveParticleCount); + filters.Swap(index, m_ActiveParticleCount); + principalRadii.Swap(index, m_ActiveParticleCount); + colors.Swap(index, m_ActiveParticleCount); + } + + /** + * Activates one particle. This operation preserves the relative order of all particles. + */ + public bool ActivateParticle(int index) + { + if (IsParticleActive(index)) + return false; + + SwapWithFirstInactiveParticle(index); + m_ActiveParticleCount++; + + return true; + } + + /** + * Deactivates one particle. This operation does not preserve the relative order of other particles, because the last active particle will + * swap positions with the particle being deactivated. + */ + public bool DeactivateParticle(int index) + { + if (!IsParticleActive(index)) + return false; + + m_ActiveParticleCount--; + SwapWithFirstInactiveParticle(index); + + return true; + } + + public bool empty + { + get { return m_Empty; } + } + + public void RecalculateBounds() + { + if (positions.Length > 0) + { + _bounds = new Bounds(positions[0],Vector3.zero); + for (int i = 1; i < positions.Length; ++i) + _bounds.Encapsulate(positions[i]); + } + else + _bounds = new Bounds(); + } + + public Bounds bounds + { + get { return _bounds; } + } + + public IEnumerable GetConstraints() + { + if (distanceConstraintsData != null && distanceConstraintsData.GetBatchCount() > 0) + yield return distanceConstraintsData; + if (bendConstraintsData != null && bendConstraintsData.GetBatchCount() > 0) + yield return bendConstraintsData; + if (skinConstraintsData != null && skinConstraintsData.GetBatchCount() > 0) + yield return skinConstraintsData; + if (tetherConstraintsData != null && tetherConstraintsData.GetBatchCount() > 0) + yield return tetherConstraintsData; + if (stretchShearConstraintsData != null && stretchShearConstraintsData.GetBatchCount() > 0) + yield return stretchShearConstraintsData; + if (bendTwistConstraintsData != null && bendTwistConstraintsData.GetBatchCount() > 0) + yield return bendTwistConstraintsData; + if (shapeMatchingConstraintsData != null && shapeMatchingConstraintsData.GetBatchCount() > 0) + yield return shapeMatchingConstraintsData; + if (aerodynamicConstraintsData != null && aerodynamicConstraintsData.GetBatchCount() > 0) + yield return aerodynamicConstraintsData; + if (chainConstraintsData != null && chainConstraintsData.GetBatchCount() > 0) + yield return chainConstraintsData; + if (volumeConstraintsData != null && volumeConstraintsData.GetBatchCount() > 0) + yield return volumeConstraintsData; + } + + public IObiConstraints GetConstraintsByType(Oni.ConstraintType type) + { + switch (type) + { + case Oni.ConstraintType.Distance: return distanceConstraintsData; + case Oni.ConstraintType.Bending: return bendConstraintsData; + case Oni.ConstraintType.Skin: return skinConstraintsData; + case Oni.ConstraintType.Tether: return tetherConstraintsData; + case Oni.ConstraintType.BendTwist: return bendTwistConstraintsData; + case Oni.ConstraintType.StretchShear: return stretchShearConstraintsData; + case Oni.ConstraintType.ShapeMatching: return shapeMatchingConstraintsData; + case Oni.ConstraintType.Aerodynamics: return aerodynamicConstraintsData; + case Oni.ConstraintType.Chain: return chainConstraintsData; + case Oni.ConstraintType.Volume: return volumeConstraintsData; + default: return null; + } + } + + public int GetParticleRuntimeIndex(int blueprintIndex) + { + return blueprintIndex; + } + + public Vector3 GetParticlePosition(int index) + { + if (positions != null && index < positions.Length) + { + return positions[index]; + } + return Vector3.zero; + } + + public Quaternion GetParticleOrientation(int index) + { + if (orientations != null && index < orientations.Length) + { + return orientations[index]; + } + return Quaternion.identity; + } + + public void GetParticleAnisotropy(int index, ref Vector4 b1, ref Vector4 b2, ref Vector4 b3) + { + if (orientations != null && index < orientations.Length) + { + + Quaternion orientation = orientations[index]; + + b1 = orientation * Vector3.right; + b2 = orientation * Vector3.up; + b3 = orientation * Vector3.forward; + + b1[3] = principalRadii[index][0]; + b2[3] = principalRadii[index][1]; + b3[3] = principalRadii[index][2]; + + } + else + { + b1[3] = b2[3] = b3[3] = principalRadii[index][0]; + } + } + + public float GetParticleMaxRadius(int index) + { + if (principalRadii != null && index < principalRadii.Length) + { + return principalRadii[index][0]; + } + return 0; + } + + public Color GetParticleColor(int index) + { + if (colors != null && index < colors.Length) + { + return colors[index]; + } + else + return Color.white; + } + + public void GenerateImmediate() + { + var g = Generate(); + while (g.MoveNext()){} + } + + public IEnumerator Generate() + { + Clear(); + + IEnumerator g = Initialize(); + + while (g.MoveNext()) + yield return g.Current; + + RecalculateBounds(); + + m_Empty = false; + m_InitialActiveParticleCount = m_ActiveParticleCount; + + foreach (IObiConstraints constraints in GetConstraints()) + for (int i = 0; i < constraints.GetBatchCount(); ++i) + constraints.GetBatch(i).initialActiveConstraintCount = constraints.GetBatch(i).activeConstraintCount; + +#if UNITY_EDITOR + EditorUtility.SetDirty(this); +#endif + + if (OnBlueprintGenerate != null) + OnBlueprintGenerate(this); + } + + public void Clear() + { + m_Empty = true; + + m_ActiveParticleCount = 0; + positions = null; + restPositions = null; + orientations = null; + restOrientations = null; + velocities = null; + angularVelocities = null; + invMasses = null; + invRotationalMasses = null; + filters = null; + //phases = null; + principalRadii = null; + colors = null; + + points = null; + edges = null; + triangles = null; + + distanceConstraintsData = null; + bendConstraintsData = null; + skinConstraintsData = null; + tetherConstraintsData = null; + bendTwistConstraintsData = null; + stretchShearConstraintsData = null; + shapeMatchingConstraintsData = null; + aerodynamicConstraintsData = null; + chainConstraintsData = null; + volumeConstraintsData = null; + + } + + public ObiParticleGroup InsertNewParticleGroup(string name, int index, bool saveImmediately = true) + { + if (index >= 0 && index <= groups.Count) + { + ObiParticleGroup group = ScriptableObject.CreateInstance(); + group.SetSourceBlueprint(this); + group.name = name; + +#if UNITY_EDITOR + if (!Application.isPlaying) + { + AssetDatabase.AddObjectToAsset(group, this); + Undo.RegisterCreatedObjectUndo(group, "Insert particle group"); + + Undo.RecordObject(this, "Insert particle group"); + groups.Insert(index, group); + + if (EditorUtility.IsPersistent(this)) + { + EditorUtility.SetDirty(this); + if (saveImmediately) + AssetDatabase.SaveAssets(); + } + } + else +#endif + { + groups.Insert(index, group); + } + + return group; + } + return null; + } + + public ObiParticleGroup AppendNewParticleGroup(string name, bool saveImmediately = true) + { + return InsertNewParticleGroup(name, groups.Count, saveImmediately); + } + + public bool RemoveParticleGroupAt(int index, bool saveImmediately = true) + { + if (index >= 0 && index < groups.Count) + { +#if UNITY_EDITOR + if (!Application.isPlaying) + { + Undo.RecordObject(this, "Remove particle group"); + + var group = groups[index]; + groups.RemoveAt(index); + + if (group != null) + Undo.DestroyObjectImmediate(group); + + if (EditorUtility.IsPersistent(this)) + { + EditorUtility.SetDirty(this); + if (saveImmediately) + AssetDatabase.SaveAssets(); + } + } + else +#endif + { + var group = groups[index]; + groups.RemoveAt(index); + + if (group != null) + DestroyImmediate(group, true); + } + + return true; + } + return false; + } + + public bool SetParticleGroupName(int index, string name, bool saveImmediately = true) + { + if (index >= 0 && index < groups.Count) + { +#if UNITY_EDITOR + if (!Application.isPlaying) + { + Undo.RecordObject(this, "Set particle group name"); + groups[index].name = name; + + if (EditorUtility.IsPersistent(this)) + { + EditorUtility.SetDirty(this); + if (saveImmediately) + AssetDatabase.SaveAssets(); + } + } + else +#endif + { + groups[index].name = name; + } + + return true; + } + return false; + } + + public void ClearParticleGroups(bool saveImmediately = true) + { +#if UNITY_EDITOR + if (!Application.isPlaying) + { + Undo.RecordObject(this, "Clear particle groups"); + for (int i = 0; i < groups.Count; ++i) + if (groups[i] != null) + Undo.DestroyObjectImmediate(groups[i]); + + if (EditorUtility.IsPersistent(this)) + { + EditorUtility.SetDirty(this); + if (saveImmediately) + AssetDatabase.SaveAssets(); + } + } + else +#endif + { + for (int i = 0; i < groups.Count; ++i) + if (groups[i] != null) + DestroyImmediate(groups[i], true); + } + + groups.Clear(); + } + + private bool IsParticleSharedInConstraint(int index, List particles, bool[] selected) + { + bool containsCurrent = false; + bool containsUnselected = false; + + for (int k = 0; k < particles.Count; ++k) + { + containsCurrent |= particles[k] == index; + containsUnselected |= !selected[particles[k]]; + + if (containsCurrent && containsUnselected) + { + return true; + } + } + return false; + } + + private bool DoesParticleShareConstraints(IObiConstraints constraints, int index, List particles, bool[] selected) + { + bool shared = false; + for (int i = 0; i < constraints.GetBatchCount(); ++i) + { + var batch = constraints.GetBatch(i); + for (int j = 0; j < batch.activeConstraintCount; ++j) + { + particles.Clear(); + batch.GetParticlesInvolved(j, particles); + + if (shared |= IsParticleSharedInConstraint(index, particles, selected)) + break; + } + + if (shared) + break; + } + return shared; + } + + private void DeactivateConstraintsWithInactiveParticles(IObiConstraints constraints, List particles) + { + for (int j = 0; j < constraints.GetBatchCount(); ++j) + { + var batch = constraints.GetBatch(j); + + for (int i = batch.activeConstraintCount - 1; i >= 0; --i) + { + particles.Clear(); + batch.GetParticlesInvolved(i, particles); + for (int k = 0; k < particles.Count; ++k) + { + if (!IsParticleActive(particles[k])) + { + batch.DeactivateConstraint(i); + break; + } + } + } + } + } + + private void ParticlesSwappedInGroups(int index, int newIndex) + { + // Update groups: + foreach (ObiParticleGroup group in groups) + { + for (int i = 0; i < group.particleIndices.Count; ++i) + { + if (group.particleIndices[i] == newIndex) + group.particleIndices[i] = index; + else if (group.particleIndices[i] == index) + group.particleIndices[i] = newIndex; + } + } + } + + public void RemoveSelectedParticles(ref bool[] selected, bool optimize = true) + { + List particles = new List(); + + // iterate over all particles and get those selected ones that are only constrained to other selected ones. + for (int i = activeParticleCount - 1; i >= 0; --i) + { + // if the particle is not selected for optimization, skip it. + if (!selected[i]) + continue; + + // look if the particle shares distance or shape matching constraints with an unselected particle. + bool shared = false; + if (optimize) + { + shared |= DoesParticleShareConstraints(distanceConstraintsData, i, particles, selected); + shared |= DoesParticleShareConstraints(bendConstraintsData, i, particles, selected); + shared |= DoesParticleShareConstraints(shapeMatchingConstraintsData, i, particles, selected); + } + + if (!shared) + { + if (DeactivateParticle(i)) + { + selected.Swap(i, m_ActiveParticleCount); + + // Update constraints: + foreach (IObiConstraints constraints in GetConstraints()) + for (int j = 0; j < constraints.GetBatchCount(); ++j) + constraints.GetBatch(j).ParticlesSwapped(i, m_ActiveParticleCount); + + // Update groups: + ParticlesSwappedInGroups(i, m_ActiveParticleCount); + } + } + + } + + // deactivate all constraints that reference inactive particles: + foreach (IObiConstraints constraints in GetConstraints()) + DeactivateConstraintsWithInactiveParticles(constraints, particles); + + } + + public void RestoreRemovedParticles() + { + m_ActiveParticleCount = m_InitialActiveParticleCount; + + foreach (IObiConstraints constraints in GetConstraints()) + for (int j = 0; j < constraints.GetBatchCount(); ++j) + constraints.GetBatch(j).activeConstraintCount = constraints.GetBatch(j).initialActiveConstraintCount; + + } + + public virtual void GenerateTethers(bool[] selected) { } + public virtual void ClearTethers() { } + + protected abstract IEnumerator Initialize(); + + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Blueprints/ObiActorBlueprint.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/ObiActorBlueprint.cs.meta new file mode 100644 index 000000000..599d5ac93 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/ObiActorBlueprint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e041cee7fba0844ba933278f278090ce +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: d0123218ec6144d0983c099fc7339924, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/ObiMeshBasedActorBlueprint.cs b/Assets/Obi/Scripts/Common/Blueprints/ObiMeshBasedActorBlueprint.cs new file mode 100644 index 000000000..cd4792baf --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/ObiMeshBasedActorBlueprint.cs @@ -0,0 +1,13 @@ +using UnityEngine; +using System.Collections; + + +namespace Obi +{ + public abstract class ObiMeshBasedActorBlueprint : ObiActorBlueprint + { + public Mesh inputMesh; /**< Mesh used to generate the blueprint.*/ + public Vector3 scale = Vector3.one; + public Quaternion rotation = Quaternion.identity; + } +} diff --git a/Assets/Obi/Scripts/Common/Blueprints/ObiMeshBasedActorBlueprint.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/ObiMeshBasedActorBlueprint.cs.meta new file mode 100644 index 000000000..1f175fe2e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/ObiMeshBasedActorBlueprint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5a20734f05b7e41d89888f99cc0e88f2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Blueprints/ObiParticleGroup.cs b/Assets/Obi/Scripts/Common/Blueprints/ObiParticleGroup.cs new file mode 100644 index 000000000..2f6bf501c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/ObiParticleGroup.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + + +namespace Obi +{ + [Serializable] + public class ObiParticleGroup : ScriptableObject + { + public List particleIndices = new List() { }; + public ObiActorBlueprint m_Blueprint = null; + + public ObiActorBlueprint blueprint + { + get { return m_Blueprint; } + } + + public void SetSourceBlueprint(ObiActorBlueprint blueprint) + { + this.m_Blueprint = blueprint; + } + + public int Count + { + get { return particleIndices.Count; } + } + + public bool ContainsParticle(int index) + { + return particleIndices.Contains(index); + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Blueprints/ObiParticleGroup.cs.meta b/Assets/Obi/Scripts/Common/Blueprints/ObiParticleGroup.cs.meta new file mode 100644 index 000000000..c7293e092 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Blueprints/ObiParticleGroup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 775ad4994fda946d1a5936c7e2dfc785 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions.meta b/Assets/Obi/Scripts/Common/Collisions.meta new file mode 100644 index 000000000..f69d80900 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0507b097be2324070b9912008b71a4a8 +folderAsset: yes +timeCreated: 1448942565 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers.meta b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers.meta new file mode 100644 index 000000000..8f55bd387 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 16e8693eb314d42888bd5a08daebe03a +folderAsset: yes +timeCreated: 1501157275 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D.meta b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D.meta new file mode 100644 index 000000000..98f5ed000 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e56c9feb62e6b4f9ea6517ebb106419b +folderAsset: yes +timeCreated: 1503483313 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiBoxShapeTracker2D.cs b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiBoxShapeTracker2D.cs new file mode 100644 index 000000000..dab43bce4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiBoxShapeTracker2D.cs @@ -0,0 +1,47 @@ +using System; +using UnityEngine; + +namespace Obi{ + + public class ObiBoxShapeTracker2D : ObiShapeTracker + { + public ObiBoxShapeTracker2D(ObiCollider2D source, BoxCollider2D collider){ + this.source = source; + this.collider = collider; + } + + public override bool UpdateIfNeeded (){ + + BoxCollider2D box = collider as BoxCollider2D; + + var world = ObiColliderWorld.GetInstance(); + int index = source.Handle.index; + + // update collider: + var shape = world.colliderShapes[index]; + shape.is2D = 1; + shape.type = ColliderShape.ShapeType.Box; + shape.filter = source.Filter; + shape.flags = box.isTrigger ? 1 : 0; + shape.rigidbodyIndex = source.Rigidbody != null ? source.Rigidbody.handle.index : -1; + shape.materialIndex = source.CollisionMaterial != null ? source.CollisionMaterial.handle.index : -1; + shape.contactOffset = source.Thickness + box.edgeRadius; + shape.center = box.offset; + shape.size = box.size; + world.colliderShapes[index] = shape; + + // update bounds: + var aabb = world.colliderAabbs[index]; + aabb.FromBounds(box.bounds, shape.contactOffset, true); + world.colliderAabbs[index] = aabb; + + // update transform: + var trfm = world.colliderTransforms[index]; + trfm.FromTransform(box.transform, true); + world.colliderTransforms[index] = trfm; + return false; + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiBoxShapeTracker2D.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiBoxShapeTracker2D.cs.meta new file mode 100644 index 000000000..90d91f6c4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiBoxShapeTracker2D.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e3701e56c1528404daa61e704345b750 +timeCreated: 1501960568 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiCapsuleShapeTracker2D.cs b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiCapsuleShapeTracker2D.cs new file mode 100644 index 000000000..277be12f7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiCapsuleShapeTracker2D.cs @@ -0,0 +1,53 @@ +using System; +using UnityEngine; + +namespace Obi{ + + public class ObiCapsuleShapeTracker2D : ObiShapeTracker + { + public ObiCapsuleShapeTracker2D(ObiCollider2D source, CapsuleCollider2D collider) + { + this.source = source; + this.collider = collider; + } + + public override bool UpdateIfNeeded () + { + CapsuleCollider2D capsule = collider as CapsuleCollider2D; + + // retrieve collision world and index: + var world = ObiColliderWorld.GetInstance(); + int index = source.Handle.index; + + // update collider: + var shape = world.colliderShapes[index]; + shape.is2D = 1; + shape.type = ColliderShape.ShapeType.Capsule; + shape.filter = source.Filter; + shape.flags = capsule.isTrigger ? 1 : 0; + shape.rigidbodyIndex = source.Rigidbody != null ? source.Rigidbody.handle.index : -1; + shape.materialIndex = source.CollisionMaterial != null ? source.CollisionMaterial.handle.index : -1; + shape.contactOffset = source.Thickness; + shape.center = capsule.offset; + Vector2 size = capsule.size; + shape.size = new Vector4((capsule.direction == CapsuleDirection2D.Horizontal ? size.y : size.x) * 0.5f, + Mathf.Max(size.x, size.y), + capsule.direction == CapsuleDirection2D.Horizontal ? 0 : 1, 0); + world.colliderShapes[index] = shape; + + // update bounds: + var aabb = world.colliderAabbs[index]; + aabb.FromBounds(capsule.bounds, shape.contactOffset,true); + world.colliderAabbs[index] = aabb; + + // update transform: + var trfm = world.colliderTransforms[index]; + trfm.FromTransform(capsule.transform,true); + world.colliderTransforms[index] = trfm; + + return false; + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiCapsuleShapeTracker2D.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiCapsuleShapeTracker2D.cs.meta new file mode 100644 index 000000000..9e5005722 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiCapsuleShapeTracker2D.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fe1cd08d83cfe4785b8d5bb8e0bd3dd9 +timeCreated: 1501961541 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiCircleShapeTracker2D.cs b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiCircleShapeTracker2D.cs new file mode 100644 index 000000000..c75ffd90e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiCircleShapeTracker2D.cs @@ -0,0 +1,52 @@ +using System; +using UnityEngine; + +namespace Obi{ + + public class ObiCircleShapeTracker2D : ObiShapeTracker + { + + public ObiCircleShapeTracker2D(ObiCollider2D source, CircleCollider2D collider) + { + this.source = source; + this.collider = collider; + } + + public override bool UpdateIfNeeded () + { + + CircleCollider2D sphere = collider as CircleCollider2D; + + // retrieve collision world and index: + var world = ObiColliderWorld.GetInstance(); + int index = source.Handle.index; + + // update collider: + var shape = world.colliderShapes[index]; + shape.is2D = 1; + shape.type = ColliderShape.ShapeType.Sphere; + shape.filter = source.Filter; + shape.flags = sphere.isTrigger ? 1 : 0; + shape.rigidbodyIndex = source.Rigidbody != null ? source.Rigidbody.handle.index : -1; + shape.materialIndex = source.CollisionMaterial != null ? source.CollisionMaterial.handle.index : -1; + shape.contactOffset = source.Thickness; + shape.center = sphere.offset; + shape.size = Vector3.one * sphere.radius; + world.colliderShapes[index] = shape; + + // update bounds: + var aabb = world.colliderAabbs[index]; + aabb.FromBounds(sphere.bounds, shape.contactOffset, true); + world.colliderAabbs[index] = aabb; + + // update transform: + var trfm = world.colliderTransforms[index]; + trfm.FromTransform(sphere.transform,true); + world.colliderTransforms[index] = trfm; + + return true; + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiCircleShapeTracker2D.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiCircleShapeTracker2D.cs.meta new file mode 100644 index 000000000..e2c7b7f36 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiCircleShapeTracker2D.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4290734bafa8c46d8862202365a9f83b +timeCreated: 1501960324 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiEdgeShapeTracker2D.cs b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiEdgeShapeTracker2D.cs new file mode 100644 index 000000000..dfdb9988f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiEdgeShapeTracker2D.cs @@ -0,0 +1,72 @@ +using System; +using UnityEngine; +using System.Runtime.InteropServices; + +namespace Obi{ + + public class ObiEdgeShapeTracker2D : ObiShapeTracker + { + ObiEdgeMeshHandle handle; + + public ObiEdgeShapeTracker2D(ObiCollider2D source, EdgeCollider2D collider) + { + this.source = source; + this.collider = collider; + } + + public void UpdateEdgeData() + { + ObiColliderWorld.GetInstance().DestroyEdgeMesh(handle); + } + + public override bool UpdateIfNeeded (){ + + EdgeCollider2D edgeCollider = collider as EdgeCollider2D; + + // retrieve collision world and index: + var world = ObiColliderWorld.GetInstance(); + int index = source.Handle.index; + + // get or create the mesh: + if (handle == null || !handle.isValid) + { + handle = world.GetOrCreateEdgeMesh(edgeCollider); + handle.Reference(); + } + + // update collider: + var shape = world.colliderShapes[index]; + shape.is2D = 1; + shape.type = ColliderShape.ShapeType.EdgeMesh; + shape.filter = source.Filter; + shape.flags = edgeCollider.isTrigger ? 1 : 0; + shape.rigidbodyIndex = source.Rigidbody != null ? source.Rigidbody.handle.index : -1; + shape.materialIndex = source.CollisionMaterial != null ? source.CollisionMaterial.handle.index : -1; + shape.center = edgeCollider.offset; + shape.contactOffset = source.Thickness + edgeCollider.edgeRadius; + shape.dataIndex = handle.index; + world.colliderShapes[index] = shape; + + // update bounds: + var aabb = world.colliderAabbs[index]; + aabb.FromBounds(edgeCollider.bounds, shape.contactOffset, true); + world.colliderAabbs[index] = aabb; + + // update transform: + var trfm = world.colliderTransforms[index]; + trfm.FromTransform(edgeCollider.transform, true); + world.colliderTransforms[index] = trfm; + + return true; + } + + public override void Destroy() + { + base.Destroy(); + + if (handle != null && handle.Dereference()) + ObiColliderWorld.GetInstance().DestroyEdgeMesh(handle); + } + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiEdgeShapeTracker2D.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiEdgeShapeTracker2D.cs.meta new file mode 100644 index 000000000..07524ca77 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers2D/ObiEdgeShapeTracker2D.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2d2b0912e5ba74985bb209d365e52f4b +timeCreated: 1502808634 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D.meta b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D.meta new file mode 100644 index 000000000..859897cc2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3eba36295266249e08782d3327db66cd +folderAsset: yes +timeCreated: 1503483325 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiBoxShapeTracker.cs b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiBoxShapeTracker.cs new file mode 100644 index 000000000..afe993057 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiBoxShapeTracker.cs @@ -0,0 +1,58 @@ +using System; +using UnityEngine; + +namespace Obi{ + + public class ObiBoxShapeTracker : ObiShapeTracker + { + + public ObiBoxShapeTracker(ObiCollider source, BoxCollider collider) + { + this.source = source; + this.collider = collider; + } + + public override bool UpdateIfNeeded (){ + + BoxCollider box = collider as BoxCollider; + + /*if (box != null && (box.size != size || box.center != center)){ + size = box.size; + center = box.center; + adaptor.Set(center, size); + Oni.UpdateShape(oniShape,ref adaptor); + return true; + }*/ + + // retrieve collision world and index: + var world = ObiColliderWorld.GetInstance(); + int index = source.Handle.index; + + // update collider: + var shape = world.colliderShapes[index]; + shape.type = ColliderShape.ShapeType.Box; + shape.filter = source.Filter; + shape.flags = box.isTrigger ? 1 : 0; + shape.rigidbodyIndex = source.Rigidbody != null ? source.Rigidbody.handle.index : -1; + shape.materialIndex = source.CollisionMaterial != null ? source.CollisionMaterial.handle.index : -1; + shape.contactOffset = source.Thickness; + shape.center = box.center; + shape.size = box.size; + world.colliderShapes[index] = shape; + + // update bounds: + var aabb = world.colliderAabbs[index]; + aabb.FromBounds(box.bounds, shape.contactOffset); + world.colliderAabbs[index] = aabb; + + // update transform: + var trfm = world.colliderTransforms[index]; + trfm.FromTransform(box.transform); + world.colliderTransforms[index] = trfm; + + return true; + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiBoxShapeTracker.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiBoxShapeTracker.cs.meta new file mode 100644 index 000000000..9e3ef16f6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiBoxShapeTracker.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7f9acb590fcdd47838d4e1929e463712 +timeCreated: 1501960568 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiCapsuleShapeTracker.cs b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiCapsuleShapeTracker.cs new file mode 100644 index 000000000..e55f43b0d --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiCapsuleShapeTracker.cs @@ -0,0 +1,49 @@ +using System; +using UnityEngine; + +namespace Obi{ + + public class ObiCapsuleShapeTracker : ObiShapeTracker + { + + public ObiCapsuleShapeTracker(ObiCollider source, CapsuleCollider collider){ + this.collider = collider; + this.source = source; + } + + public override bool UpdateIfNeeded (){ + + CapsuleCollider capsule = collider as CapsuleCollider; + + // retrieve collision world and index: + var world = ObiColliderWorld.GetInstance(); + int index = source.Handle.index; + + // update collider: + var shape = world.colliderShapes[index]; + shape.type = ColliderShape.ShapeType.Capsule; + shape.filter = source.Filter; + shape.flags = capsule.isTrigger ? 1 : 0; + shape.rigidbodyIndex = source.Rigidbody != null ? source.Rigidbody.handle.index : -1; + shape.materialIndex = source.CollisionMaterial != null ? source.CollisionMaterial.handle.index : -1; + shape.contactOffset = source.Thickness; + shape.center = capsule.center; + shape.size = new Vector4(capsule.radius, capsule.height, capsule.direction, 0); + world.colliderShapes[index] = shape; + + // update bounds: + var aabb = world.colliderAabbs[index]; + aabb.FromBounds(capsule.bounds, shape.contactOffset); + world.colliderAabbs[index] = aabb; + + // update transform: + var trfm = world.colliderTransforms[index]; + trfm.FromTransform(capsule.transform); + world.colliderTransforms[index] = trfm; + + return true; + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiCapsuleShapeTracker.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiCapsuleShapeTracker.cs.meta new file mode 100644 index 000000000..488258d09 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiCapsuleShapeTracker.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ab81f697ad33c47c0b487129c7ef1761 +timeCreated: 1501961541 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiCharacterControllerShapeTracker.cs b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiCharacterControllerShapeTracker.cs new file mode 100644 index 000000000..d50fcd280 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiCharacterControllerShapeTracker.cs @@ -0,0 +1,52 @@ +using System; +using UnityEngine; + +namespace Obi +{ + + public class ObiCharacterControllerShapeTracker : ObiShapeTracker + { + + public ObiCharacterControllerShapeTracker(ObiCollider source, CharacterController collider) + { + this.collider = collider; + this.source = source; + } + + public override bool UpdateIfNeeded() + { + + CharacterController character = collider as CharacterController; + + // retrieve collision world and index: + var world = ObiColliderWorld.GetInstance(); + int index = source.Handle.index; + + // update collider: + var shape = world.colliderShapes[index]; + shape.type = ColliderShape.ShapeType.Capsule; + shape.filter = source.Filter; + shape.flags = character.isTrigger ? 1 : 0; + shape.rigidbodyIndex = source.Rigidbody != null ? source.Rigidbody.handle.index : -1; + shape.materialIndex = source.CollisionMaterial != null ? source.CollisionMaterial.handle.index : -1; + shape.contactOffset = source.Thickness; + shape.center = character.center; + shape.size = new Vector4(character.radius, character.height, 1, 0); + world.colliderShapes[index] = shape; + + // update bounds: + var aabb = world.colliderAabbs[index]; + aabb.FromBounds(character.bounds, shape.contactOffset); + world.colliderAabbs[index] = aabb; + + // update transform: + var trfm = world.colliderTransforms[index]; + trfm.FromTransform(character.transform); + world.colliderTransforms[index] = trfm; + + return true; + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiCharacterControllerShapeTracker.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiCharacterControllerShapeTracker.cs.meta new file mode 100644 index 000000000..ccbb3adbb --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiCharacterControllerShapeTracker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c77ed89a210345ce9e9e549d11263db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiDistanceFieldShapeTracker.cs b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiDistanceFieldShapeTracker.cs new file mode 100644 index 000000000..c25d6b9e2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiDistanceFieldShapeTracker.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using System.Runtime.InteropServices; + +namespace Obi{ + + public class ObiDistanceFieldShapeTracker : ObiShapeTracker + { + public ObiDistanceField distanceField; + ObiDistanceFieldHandle handle; + + + public ObiDistanceFieldShapeTracker(ObiCollider source, Component collider, ObiDistanceField distanceField){ + + this.source = source; + this.collider = collider; + this.distanceField = distanceField; + } + + /** + * Forces the tracker to update distance field data during the next call to UpdateIfNeeded(). + */ + public void UpdateDistanceFieldData() + { + ObiColliderWorld.GetInstance().DestroyDistanceField(handle); + } + + public override bool UpdateIfNeeded () + { + + bool trigger = false; + if (collider is Collider) trigger = ((Collider)collider).isTrigger; + else if (collider is Collider2D) trigger = ((Collider2D)collider).isTrigger; + + // retrieve collision world and index: + var world = ObiColliderWorld.GetInstance(); + int index = source.Handle.index; + + // decrease reference count of current handle if the df data it points to is different + // than the df used by the collider: + if (handle != null && handle.owner != distanceField) + { + if (handle.Dereference()) + world.DestroyDistanceField(handle); + } + + if (handle == null || !handle.isValid) + { + handle = world.GetOrCreateDistanceField(distanceField); + handle.Reference(); + } + + // update collider: + var shape = world.colliderShapes[index]; + shape.type = ColliderShape.ShapeType.SignedDistanceField; + shape.filter = source.Filter; + shape.flags = trigger ? 1 : 0; + shape.rigidbodyIndex = source.Rigidbody != null ? source.Rigidbody.handle.index : -1; + shape.materialIndex = source.CollisionMaterial != null ? source.CollisionMaterial.handle.index : -1; + shape.contactOffset = source.Thickness; + shape.dataIndex = handle.index; + world.colliderShapes[index] = shape; + + // update bounds: + var aabb = world.colliderAabbs[index]; + aabb.FromBounds(distanceField.FieldBounds.Transform(source.transform.localToWorldMatrix), shape.contactOffset); + world.colliderAabbs[index] = aabb; + + // update transform: + var trfm = world.colliderTransforms[index]; + trfm.FromTransform(source.transform); + world.colliderTransforms[index] = trfm; + + return true; + } + + public override void Destroy() + { + base.Destroy(); + + if (handle != null && handle.Dereference()) + ObiColliderWorld.GetInstance().DestroyDistanceField(handle); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiDistanceFieldShapeTracker.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiDistanceFieldShapeTracker.cs.meta new file mode 100644 index 000000000..71b25fc82 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiDistanceFieldShapeTracker.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b9b443b752c21400ca6cfc151526f107 +timeCreated: 1504879085 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiMeshShapeTracker.cs b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiMeshShapeTracker.cs new file mode 100644 index 000000000..e3831d9d4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiMeshShapeTracker.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using System.Runtime.InteropServices; + +namespace Obi{ + + public class ObiMeshShapeTracker : ObiShapeTracker + { + ObiTriangleMeshHandle handle; + + public ObiMeshShapeTracker(ObiCollider source, MeshCollider collider){ + + this.source = source; + this.collider = collider; + } + + /** + * Forces the tracker to update mesh data during the next call to UpdateIfNeeded(). + */ + public void UpdateMeshData() + { + ObiColliderWorld.GetInstance().DestroyTriangleMesh(handle); + } + + public override bool UpdateIfNeeded () + { + + MeshCollider meshCollider = collider as MeshCollider; + + // retrieve collision world and index: + var world = ObiColliderWorld.GetInstance(); + int index = source.Handle.index; + + // decrease reference count of current handle if the mesh data it points to is different + // than the mesh used by the collider: + if (handle != null && handle.owner != meshCollider.sharedMesh) + { + if (handle.Dereference()) + world.DestroyTriangleMesh(handle); + } + + // get or create the mesh: + if (handle == null || !handle.isValid) + { + handle = world.GetOrCreateTriangleMesh(meshCollider.sharedMesh); + handle.Reference(); + } + + // update collider: + var shape = world.colliderShapes[index]; + shape.type = ColliderShape.ShapeType.TriangleMesh; + shape.filter = source.Filter; + shape.flags = meshCollider.isTrigger ? 1 : 0; + shape.rigidbodyIndex = source.Rigidbody != null ? source.Rigidbody.handle.index : -1; + shape.materialIndex = source.CollisionMaterial != null ? source.CollisionMaterial.handle.index : -1; + shape.contactOffset = source.Thickness; + shape.dataIndex = handle.index; + world.colliderShapes[index] = shape; + + // update bounds: + var aabb = world.colliderAabbs[index]; + aabb.FromBounds(meshCollider.bounds, shape.contactOffset); + world.colliderAabbs[index] = aabb; + + // update transform: + var trfm = world.colliderTransforms[index]; + trfm.FromTransform(meshCollider.transform); + world.colliderTransforms[index] = trfm; + + return true; + } + + public override void Destroy() + { + base.Destroy(); + + if (handle != null && handle.Dereference()) + ObiColliderWorld.GetInstance().DestroyTriangleMesh(handle); + } + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiMeshShapeTracker.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiMeshShapeTracker.cs.meta new file mode 100644 index 000000000..f7911fbb5 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiMeshShapeTracker.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c955001531e3444fd9615a5272954dea +timeCreated: 1502875710 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiShapeTracker.cs b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiShapeTracker.cs new file mode 100644 index 000000000..c3992da14 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiShapeTracker.cs @@ -0,0 +1,20 @@ +using System; +using UnityEngine; + +namespace Obi{ + + public abstract class ObiShapeTracker + { + protected ObiColliderBase source; + protected Component collider; + + public virtual void Destroy(){ + } + + public abstract bool UpdateIfNeeded (); + + } + +} + + diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiShapeTracker.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiShapeTracker.cs.meta new file mode 100644 index 000000000..749c718f6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiShapeTracker.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5f455a735ac894ee7bddecd2b5a64ca8 +timeCreated: 1501960324 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiSphereShapeTracker.cs b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiSphereShapeTracker.cs new file mode 100644 index 000000000..ab4368c2f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiSphereShapeTracker.cs @@ -0,0 +1,72 @@ +using System; +using UnityEngine; + +namespace Obi{ + + public class ObiSphereShapeTracker : ObiShapeTracker + { + + public ObiSphereShapeTracker(ObiCollider source, SphereCollider collider) + { + this.source = source; + this.collider = collider; + } + + public override bool UpdateIfNeeded() + { + + SphereCollider sphere = collider as SphereCollider; + + // TODO: testing for changes here is not needed? all we do is set variables... + //if (sphere != null && (sphere.radius != radius || sphere.center != center)) + { + //radius = sphere.radius; + //center = sphere.center; + + // retrieve collision world and index: + var world = ObiColliderWorld.GetInstance(); + int index = source.Handle.index; + + // update collider: + var shape = world.colliderShapes[index]; + shape.type = ColliderShape.ShapeType.Sphere; + shape.filter = source.Filter; + shape.flags = sphere.isTrigger ? 1 : 0; + shape.rigidbodyIndex = source.Rigidbody != null ? source.Rigidbody.handle.index : -1; + shape.materialIndex = source.CollisionMaterial != null ? source.CollisionMaterial.handle.index : -1; + shape.contactOffset = source.Thickness; + shape.center = sphere.center; + shape.size = Vector3.one * sphere.radius; + world.colliderShapes[index] = shape; + + // update bounds: + var aabb = world.colliderAabbs[index]; + aabb.FromBounds(sphere.bounds, shape.contactOffset); + world.colliderAabbs[index] = aabb; + + // update transform: + var trfm = world.colliderTransforms[index]; + trfm.FromTransform(sphere.transform); + world.colliderTransforms[index] = trfm; + + + /*var shape = source.colliderWorld.colliderShapes[source.shapeHandle.index]; + + // update the transform + shape.Set(collider as Collider, source.Phase, source.Thickness); + + // update the shape: + shape.SetSphere(sphere.center, sphere.radius); + + source.colliderWorld.colliderShapes[source.shapeHandle.index] = shape;*/ + + //adaptor.Set(center, radius); + //Oni.UpdateShape(oniShape,ref adaptor); + return true; + } + //return false; + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiSphereShapeTracker.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiSphereShapeTracker.cs.meta new file mode 100644 index 000000000..946853609 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiSphereShapeTracker.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 221c651500acc4cbfa30ed329aebb822 +timeCreated: 1501960324 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiTerrainShapeTracker.cs b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiTerrainShapeTracker.cs new file mode 100644 index 000000000..ed3faed03 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiTerrainShapeTracker.cs @@ -0,0 +1,76 @@ +using System; +using UnityEngine; +using System.Runtime.InteropServices; + +namespace Obi{ + + public class ObiTerrainShapeTracker : ObiShapeTracker + { + private bool heightmapDataHasChanged = false; + ObiHeightFieldHandle handle; + + public ObiTerrainShapeTracker(ObiCollider source, TerrainCollider collider){ + + this.source = source; + this.collider = collider; + } + + public void UpdateHeightData() + { + ObiColliderWorld.GetInstance().DestroyHeightField(handle); + } + + public override bool UpdateIfNeeded () + { + + TerrainCollider terrain = collider as TerrainCollider; + + // retrieve collision world and index: + var world = ObiColliderWorld.GetInstance(); + int index = source.Handle.index; + + int resolution = terrain.terrainData.heightmapResolution; + + // get or create the heightfield: + if (handle == null || !handle.isValid) + { + handle = world.GetOrCreateHeightField(terrain.terrainData); + handle.Reference(); + } + + // update collider: + var shape = world.colliderShapes[index]; + shape.type = ColliderShape.ShapeType.Heightmap; + shape.filter = source.Filter; + shape.flags = terrain.isTrigger ? 1 : 0; + shape.rigidbodyIndex = source.Rigidbody != null ? source.Rigidbody.handle.index : -1; + shape.materialIndex = source.CollisionMaterial != null ? source.CollisionMaterial.handle.index : -1; + shape.contactOffset = source.Thickness; + shape.dataIndex = handle.index; + shape.size = terrain.terrainData.size; + shape.center = new Vector4(resolution, resolution, resolution, resolution); + world.colliderShapes[index] = shape; + + // update bounds: + var aabb = world.colliderAabbs[index]; + aabb.FromBounds(terrain.bounds, shape.contactOffset); + world.colliderAabbs[index] = aabb; + + // update transform: + var trfm = world.colliderTransforms[index]; + trfm.FromTransform(terrain.transform); + world.colliderTransforms[index] = trfm; + + return true; + } + + public override void Destroy() + { + base.Destroy(); + + if (handle != null && handle.Dereference()) + ObiColliderWorld.GetInstance().DestroyHeightField(handle); + } + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiTerrainShapeTracker.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiTerrainShapeTracker.cs.meta new file mode 100644 index 000000000..21b385e35 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ColliderTrackers/Trackers3D/ObiTerrainShapeTracker.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 601187ba897f54e20b787637df64e96b +timeCreated: 1502808634 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiCollider.cs b/Assets/Obi/Scripts/Common/Collisions/ObiCollider.cs new file mode 100644 index 000000000..13ead10b3 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiCollider.cs @@ -0,0 +1,118 @@ +using UnityEngine; +using UnityEngine.Serialization; + +namespace Obi +{ + + /** + * Add this component to any Collider that you want to be considered by Obi. + */ + [ExecuteInEditMode] + [RequireComponent(typeof(Collider))] + public class ObiCollider : ObiColliderBase + { + + [SerializeProperty("sourceCollider")] + [FormerlySerializedAs("SourceCollider")] + [SerializeField] private Collider m_SourceCollider; + + /// + /// The Unity collider that this ObiCollider should mimic. + /// + /// This is automatically set when you first create the ObiCollider component, but you can override it afterwards. + public Collider sourceCollider + { + set + { + if (value != null && value.gameObject != this.gameObject) + { + Debug.LogError("The Collider component must reside in the same GameObject as ObiCollider."); + return; + } + + m_SourceCollider = value; + + RemoveCollider(); + AddCollider(); + + } + get { return m_SourceCollider; } + } + + [SerializeProperty("distanceField")] + [FormerlySerializedAs("distanceField")] + [SerializeField] private ObiDistanceField m_DistanceField; + + /// + /// The distance field used by this collider. + /// + /// Setting a distance field will cause the collider to ignore its and use the distance field instead. + public ObiDistanceField distanceField + { + set + { + if (m_DistanceField != value) + { + m_DistanceField = value; + CreateTracker(); + } + } + get { return m_DistanceField; } + } + + /** + * Creates an OniColliderTracker of the appropiate type. + */ + protected override void CreateTracker() + { + + if (tracker != null) + { + tracker.Destroy(); + tracker = null; + } + + if (distanceField != null) + tracker = new ObiDistanceFieldShapeTracker(this, m_SourceCollider, distanceField); + else + { + + if (m_SourceCollider is SphereCollider) + tracker = new ObiSphereShapeTracker(this, (SphereCollider)m_SourceCollider); + else if (m_SourceCollider is BoxCollider) + tracker = new ObiBoxShapeTracker(this, (BoxCollider)m_SourceCollider); + else if (m_SourceCollider is CapsuleCollider) + tracker = new ObiCapsuleShapeTracker(this, (CapsuleCollider)m_SourceCollider); + else if (m_SourceCollider is CharacterController) + tracker = new ObiCharacterControllerShapeTracker(this, (CharacterController)m_SourceCollider); + else if (m_SourceCollider is TerrainCollider) + tracker = new ObiTerrainShapeTracker(this, (TerrainCollider)m_SourceCollider); + else if (m_SourceCollider is MeshCollider) + tracker = new ObiMeshShapeTracker(this,(MeshCollider)m_SourceCollider); + else + Debug.LogWarning("Collider type not supported by Obi."); + + } + + } + + protected override Component GetUnityCollider(ref bool enabled) + { + + if (m_SourceCollider != null) + enabled = m_SourceCollider.enabled; + + return m_SourceCollider; + } + + protected override void FindSourceCollider() + { + if (sourceCollider == null) + sourceCollider = GetComponent(); + else + AddCollider(); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiCollider.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ObiCollider.cs.meta new file mode 100644 index 000000000..430e54775 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiCollider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6757b231cedd544c583ef8aeaf773b2a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 6da22d6bce08a4f3d86542bb903de689, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiCollider2D.cs b/Assets/Obi/Scripts/Common/Collisions/ObiCollider2D.cs new file mode 100644 index 000000000..2ebcd494f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiCollider2D.cs @@ -0,0 +1,82 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + + /** + * Add this component to any Collider that you want to be considered by Obi. + */ + [ExecuteInEditMode] + [RequireComponent(typeof(Collider2D))] + public class ObiCollider2D : ObiColliderBase + { + [SerializeProperty("SourceCollider")] + [SerializeField] private Collider2D sourceCollider; + + public Collider2D SourceCollider + { + set + { + if (value.gameObject != this.gameObject) + { + Debug.LogError("The Collider component must reside in the same GameObject as ObiCollider."); + } + else + { + sourceCollider = value; + + RemoveCollider(); + AddCollider(); + } + } + get { return sourceCollider; } + } + + /** + * Creates an OniColliderTracker of the appropiate type. + */ + protected override void CreateTracker() + { + + if (tracker != null) + { + tracker.Destroy(); + tracker = null; + } + + if (sourceCollider is CircleCollider2D) + tracker = new ObiCircleShapeTracker2D(this,(CircleCollider2D)sourceCollider); + else if (sourceCollider is BoxCollider2D) + tracker = new ObiBoxShapeTracker2D(this,(BoxCollider2D)sourceCollider); + else if (sourceCollider is CapsuleCollider2D) + tracker = new ObiCapsuleShapeTracker2D(this,(CapsuleCollider2D)sourceCollider); + else if (sourceCollider is EdgeCollider2D) + tracker = new ObiEdgeShapeTracker2D(this,(EdgeCollider2D)sourceCollider); + else + Debug.LogWarning("Collider2D type not supported by Obi."); + + } + + protected override Component GetUnityCollider(ref bool enabled) + { + + if (sourceCollider != null) + enabled = sourceCollider.enabled; + + return sourceCollider; + } + + protected override void FindSourceCollider() + { + if (SourceCollider == null) + SourceCollider = GetComponent(); + else + AddCollider(); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiCollider2D.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ObiCollider2D.cs.meta new file mode 100644 index 000000000..06928c2a9 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiCollider2D.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7f6a9934a1a0f44e89ccbb25355461bb +timeCreated: 1503509235 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: e7185d0557058412db2fc499de3a0739, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiColliderBase.cs b/Assets/Obi/Scripts/Common/Collisions/ObiColliderBase.cs new file mode 100644 index 000000000..7700c7bd8 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiColliderBase.cs @@ -0,0 +1,206 @@ +using UnityEngine; +using System; + +namespace Obi +{ + + /** + * Implements common functionality for ObiCollider and ObiCollider2D. + */ + public abstract class ObiColliderBase : MonoBehaviour + { + + [SerializeProperty("Thickness")] + [SerializeField] private float thickness = 0; + + [SerializeProperty("CollisionMaterial")] + [SerializeField] private ObiCollisionMaterial material; + + [SerializeField] private int filter = ObiUtils.MakeFilter(ObiUtils.CollideWithEverything, 0); + + public ObiCollisionMaterial CollisionMaterial + { + set + { + material = value; + } + get { return material; } + } + + public int Filter + { + set + { + if (filter != value) + { + filter = value; + dirty = true; + } + } + get { return filter; } + } + + public float Thickness + { + set + { + if (!Mathf.Approximately(thickness, value)) + { + thickness = value; + dirty = true; + } + } + get { return thickness; } + } + + public ObiShapeTracker Tracker + { + get { return tracker; } + } + + public ObiColliderHandle Handle + { + get + { + if (shapeHandle == null) + FindSourceCollider(); + return shapeHandle; + } + } + + public IntPtr OniCollider + { + get + { + if (oniCollider == IntPtr.Zero) + FindSourceCollider(); + + return oniCollider; + } + } + + public ObiRigidbodyBase Rigidbody + { + get { return obiRigidbody; } + } + + protected ObiColliderHandle shapeHandle; + + protected IntPtr oniCollider; + protected ObiRigidbodyBase obiRigidbody; + protected bool wasUnityColliderEnabled = true; + protected bool dirty = false; + + protected ObiShapeTracker tracker; /**< tracker object used to determine when to update the collider's shape*/ + + /** + * Creates an OniColliderTracker of the appropiate type. + */ + protected abstract void CreateTracker(); + + protected abstract Component GetUnityCollider(ref bool enabled); + + protected abstract void FindSourceCollider(); + + protected void CreateRigidbody() + { + + obiRigidbody = null; + + // find the first rigidbody up our hierarchy: + Rigidbody rb = GetComponentInParent(); + Rigidbody2D rb2D = GetComponentInParent(); + + // if we have an rigidbody above us, see if it has a ObiRigidbody component and add one if it doesn't: + if (rb != null) + { + + obiRigidbody = rb.GetComponent(); + + if (obiRigidbody == null) + obiRigidbody = rb.gameObject.AddComponent(); + + } + else if (rb2D != null) + { + + obiRigidbody = rb2D.GetComponent(); + + if (obiRigidbody == null) + obiRigidbody = rb2D.gameObject.AddComponent(); + + } + + } + + private void OnTransformParentChanged() + { + CreateRigidbody(); + } + + protected void AddCollider() + { + + Component unityCollider = GetUnityCollider(ref wasUnityColliderEnabled); + + if (unityCollider != null && (shapeHandle == null || !shapeHandle.isValid)) + { + shapeHandle = ObiColliderWorld.GetInstance().CreateCollider(); + shapeHandle.owner = this; + + // Create shape tracker: + CreateTracker(); + + // Create rigidbody if necessary, and link ourselves to it: + CreateRigidbody(); + } + + } + + protected void RemoveCollider() + { + ObiColliderWorld.GetInstance().DestroyCollider(shapeHandle); + + // Destroy shape tracker: + if (tracker != null) + { + tracker.Destroy(); + tracker = null; + } + } + + /** + * Check if the collider transform or its shape have changed any relevant property, and update their Oni counterparts. + */ + public void UpdateIfNeeded() + { + bool unityColliderEnabled = false; + Component unityCollider = GetUnityCollider(ref unityColliderEnabled); + var colliderWorld = ObiColliderWorld.GetInstance(); + + if (unityCollider != null) + { + // no need to test for changes, all we are doing is setting some variables here. + if (tracker != null) + tracker.UpdateIfNeeded(); + + } + // If the unity collider is null but its handle is valid, the unity collider has been destroyed. + else if (shapeHandle != null && shapeHandle.isValid) + RemoveCollider(); + } + + private void OnEnable() + { + // Initialize using the source collider specified by the user (or find an appropiate one). + FindSourceCollider(); + } + + private void OnDisable() + { + RemoveCollider(); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiColliderBase.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ObiColliderBase.cs.meta new file mode 100644 index 000000000..7bc649a2f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiColliderBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5a055da07c6fe4debad9680a4b251f7a +timeCreated: 1503477796 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs b/Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs new file mode 100644 index 000000000..233c5818e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs @@ -0,0 +1,434 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class ObiResourceHandle where T : class + { + public T owner = null; /**< reference to the owner instance*/ + public int index = -1; /**< index of this resource in the collision world.*/ + private int referenceCount = 0; /**< amount of references to this handle. Can be used to clean up any associated resources after it reaches zero.*/ + + public bool isValid + { + get { return index >= 0; } + } + + public void Invalidate() + { + index = -1; + referenceCount = 0; + } + + public void Reference() + { + referenceCount++; + } + + public bool Dereference() + { + return --referenceCount == 0; + } + + public ObiResourceHandle(int index = -1) + { + this.index = index; + owner = null; + } + } + + public class ObiColliderHandle : ObiResourceHandle + { + public ObiColliderHandle(int index = -1) : base(index) { } + } + public class ObiCollisionMaterialHandle : ObiResourceHandle + { + public ObiCollisionMaterialHandle(int index = -1) : base(index) { } + } + public class ObiRigidbodyHandle : ObiResourceHandle + { + public ObiRigidbodyHandle(int index = -1) : base(index) { } + } + + [ExecuteInEditMode] + public class ObiColliderWorld + { + [NonSerialized] public List implementations; + + [NonSerialized] public List colliderHandles; // list of collider handles, used by ObiCollider components to retrieve them. + [NonSerialized] public ObiNativeColliderShapeList colliderShapes; // list of collider shapes. + [NonSerialized] public ObiNativeAabbList colliderAabbs; // list of collider bounds. + [NonSerialized] public ObiNativeAffineTransformList colliderTransforms; // list of collider transforms. + + [NonSerialized] public List materialHandles; + [NonSerialized] public ObiNativeCollisionMaterialList collisionMaterials; // list of collision materials. + + [NonSerialized] public List rigidbodyHandles; // list of rigidbody handles, used by ObiRigidbody components to retrieve them. + [NonSerialized] public ObiNativeRigidbodyList rigidbodies; // list of rigidbodies. + + [NonSerialized] public ObiTriangleMeshContainer triangleMeshContainer; + [NonSerialized] public ObiEdgeMeshContainer edgeMeshContainer; + [NonSerialized] public ObiDistanceFieldContainer distanceFieldContainer; + [NonSerialized] public ObiHeightFieldContainer heightFieldContainer; + + private static ObiColliderWorld instance; + + public static ObiColliderWorld GetInstance() + { + if (instance == null) + { + instance = new ObiColliderWorld(); + instance.Initialize(); + } + return instance; + } + + private void Initialize() + { + // Allocate all lists: + if (implementations == null) + implementations = new List(); + + if (colliderHandles == null) + colliderHandles = new List(); + if (colliderShapes == null) + colliderShapes = new ObiNativeColliderShapeList(); + if (colliderAabbs == null) + colliderAabbs = new ObiNativeAabbList(); + if (colliderTransforms == null) + colliderTransforms = new ObiNativeAffineTransformList(); + + if (materialHandles == null) + materialHandles = new List(); + if (collisionMaterials == null) + collisionMaterials = new ObiNativeCollisionMaterialList(); + + if (rigidbodyHandles == null) + rigidbodyHandles = new List(); + if (rigidbodies == null) + rigidbodies = new ObiNativeRigidbodyList(); + + if (triangleMeshContainer == null) + triangleMeshContainer = new ObiTriangleMeshContainer(); + if (edgeMeshContainer == null) + edgeMeshContainer = new ObiEdgeMeshContainer(); + if (distanceFieldContainer == null) + distanceFieldContainer = new ObiDistanceFieldContainer(); + if (heightFieldContainer == null) + heightFieldContainer = new ObiHeightFieldContainer(); + } + + private void Destroy() + { + for (int i = 0; i < implementations.Count; ++i) + { + implementations[i].SetColliders(colliderShapes, colliderAabbs, colliderTransforms, 0); + implementations[i].UpdateWorld(0); + } + + // Invalidate all handles: + if (colliderHandles != null) + foreach (var handle in colliderHandles) + handle.Invalidate(); + + if (rigidbodyHandles != null) + foreach (var handle in rigidbodyHandles) + handle.Invalidate(); + + if (materialHandles != null) + foreach (var handle in materialHandles) + handle.Invalidate(); + + // Dispose of all lists: + implementations = null; + colliderHandles = null; + rigidbodyHandles = null; + materialHandles = null; + + if (colliderShapes != null) + colliderShapes.Dispose(); + if (colliderAabbs != null) + colliderAabbs.Dispose(); + if (colliderTransforms != null) + colliderTransforms.Dispose(); + + if (collisionMaterials != null) + collisionMaterials.Dispose(); + + if (rigidbodies != null) + rigidbodies.Dispose(); + + if (triangleMeshContainer != null) + triangleMeshContainer.Dispose(); + if (edgeMeshContainer != null) + edgeMeshContainer.Dispose(); + if (distanceFieldContainer != null) + distanceFieldContainer.Dispose(); + if (heightFieldContainer != null) + heightFieldContainer.Dispose(); + + instance = null; + } + + private void DestroyIfUnused() + { + // when there are no implementations and no colliders, the world gets destroyed. + if (colliderHandles.Count == 0 && rigidbodyHandles.Count == 0 && materialHandles.Count == 0 && implementations.Count == 0) + Destroy(); + } + + public void RegisterImplementation(IColliderWorldImpl impl) + { + if (!implementations.Contains(impl)) + implementations.Add(impl); + } + + public void UnregisterImplementation(IColliderWorldImpl impl) + { + implementations.Remove(impl); + DestroyIfUnused(); + } + + public ObiColliderHandle CreateCollider() + { + var handle = new ObiColliderHandle(colliderHandles.Count); + colliderHandles.Add(handle); + + colliderShapes.Add(new ColliderShape() { materialIndex = -1, rigidbodyIndex = -1}); + colliderAabbs.Add(new Aabb()); + colliderTransforms.Add(new AffineTransform()); + + return handle; + } + + public ObiRigidbodyHandle CreateRigidbody() + { + var handle = new ObiRigidbodyHandle(rigidbodyHandles.Count); + rigidbodyHandles.Add(handle); + + rigidbodies.Add(new ColliderRigidbody()); + + return handle; + } + + public ObiCollisionMaterialHandle CreateCollisionMaterial() + { + var handle = new ObiCollisionMaterialHandle(materialHandles.Count); + materialHandles.Add(handle); + + collisionMaterials.Add(new CollisionMaterial()); + + return handle; + } + + public ObiTriangleMeshHandle GetOrCreateTriangleMesh(Mesh mesh) + { + return triangleMeshContainer.GetOrCreateTriangleMesh(mesh); + } + + public void DestroyTriangleMesh(ObiTriangleMeshHandle meshHandle) + { + triangleMeshContainer.DestroyTriangleMesh(meshHandle); + } + + public ObiEdgeMeshHandle GetOrCreateEdgeMesh(EdgeCollider2D collider) + { + return edgeMeshContainer.GetOrCreateEdgeMesh(collider); + } + + public void DestroyEdgeMesh(ObiEdgeMeshHandle meshHandle) + { + edgeMeshContainer.DestroyEdgeMesh(meshHandle); + } + + public ObiDistanceFieldHandle GetOrCreateDistanceField(ObiDistanceField df) + { + return distanceFieldContainer.GetOrCreateDistanceField(df); + } + + public void DestroyDistanceField(ObiDistanceFieldHandle dfHandle) + { + distanceFieldContainer.DestroyDistanceField(dfHandle); + } + + public ObiHeightFieldHandle GetOrCreateHeightField(TerrainData hf) + { + return heightFieldContainer.GetOrCreateHeightField(hf); + } + + public void DestroyHeightField(ObiHeightFieldHandle hfHandle) + { + heightFieldContainer.DestroyHeightField(hfHandle); + } + + public void DestroyCollider(ObiColliderHandle handle) + { + if (colliderShapes != null && handle != null && handle.isValid && handle.index < colliderHandles.Count) + { + int index = handle.index; + int lastIndex = colliderHandles.Count - 1; + + // swap all collider info: + colliderHandles.Swap(index, lastIndex); + colliderShapes.Swap(index, lastIndex); + colliderAabbs.Swap(index, lastIndex); + colliderTransforms.Swap(index, lastIndex); + + // update the index of the handle we swapped with: + colliderHandles[index].index = index; + + // invalidate our handle: + // (after updating the swapped one! + // in case there's just one handle in the array, + // we need to write -1 after 0) + handle.Invalidate(); + + // remove last index: + colliderHandles.RemoveAt(lastIndex); + colliderShapes.count--; + colliderAabbs.count--; + colliderTransforms.count--; + + DestroyIfUnused(); + } + + } + + public void DestroyRigidbody(ObiRigidbodyHandle handle) + { + if (rigidbodies != null && handle != null && handle.isValid && handle.index < rigidbodyHandles.Count) + { + int index = handle.index; + int lastIndex = rigidbodyHandles.Count - 1; + + // swap all collider info: + rigidbodyHandles.Swap(index, lastIndex); + rigidbodies.Swap(index, lastIndex); + + // update the index of the handle we swapped with: + rigidbodyHandles[index].index = index; + + // invalidate our handle: + // (after updating the swapped one! + // in case there's just one handle in the array, + // we need to write -1 after 0) + handle.Invalidate(); + + // remove last index: + rigidbodyHandles.RemoveAt(lastIndex); + rigidbodies.count--; + + DestroyIfUnused(); + } + + } + + public void DestroyCollisionMaterial(ObiCollisionMaterialHandle handle) + { + if (collisionMaterials != null && handle != null && handle.isValid && handle.index < materialHandles.Count) + { + int index = handle.index; + int lastIndex = materialHandles.Count - 1; + + // swap all collider info: + materialHandles.Swap(index, lastIndex); + collisionMaterials.Swap(index, lastIndex); + + // update the index of the handle we swapped with: + materialHandles[index].index = index; + + // invalidate our handle: + // (after updating the swapped one! + // in case there's just one handle in the array, + // we need to write -1 after 0) + handle.Invalidate(); + + // remove last index: + materialHandles.RemoveAt(lastIndex); + collisionMaterials.count--; + + DestroyIfUnused(); + } + } + + public void UpdateColliders() + { + // update all colliders: + for (int i = 0; i < colliderHandles.Count; ++i) + colliderHandles[i].owner.UpdateIfNeeded(); + } + + public void UpdateRigidbodies(List solvers, float stepTime) + { + // reset all solver's delta buffers to zero: + foreach (ObiSolver solver in solvers) + { + if (solver != null && solver.initialized) + { + solver.EnsureRigidbodyArraysCapacity(rigidbodyHandles.Count); + solver.rigidbodyLinearDeltas.WipeToZero(); + solver.rigidbodyAngularDeltas.WipeToZero(); + } + } + + for (int i = 0; i < rigidbodyHandles.Count; ++i) + rigidbodyHandles[i].owner.UpdateIfNeeded(stepTime); + } + + public void UpdateWorld(float deltaTime) + { + for (int i = 0; i < implementations.Count; ++i) + { + if (implementations[i].referenceCount > 0) + { + // set arrays: + implementations[i].SetColliders(colliderShapes, colliderAabbs, colliderTransforms, colliderShapes.count); + implementations[i].SetRigidbodies(rigidbodies); + implementations[i].SetCollisionMaterials(collisionMaterials); + implementations[i].SetTriangleMeshData(triangleMeshContainer.headers, triangleMeshContainer.bihNodes, triangleMeshContainer.triangles, triangleMeshContainer.vertices); + implementations[i].SetEdgeMeshData(edgeMeshContainer.headers, edgeMeshContainer.bihNodes, edgeMeshContainer.edges, edgeMeshContainer.vertices); + implementations[i].SetDistanceFieldData(distanceFieldContainer.headers, distanceFieldContainer.dfNodes); + implementations[i].SetHeightFieldData(heightFieldContainer.headers, heightFieldContainer.samples); + + // update world implementation: + implementations[i].UpdateWorld(deltaTime); + } + } + } + + public void UpdateRigidbodyVelocities(List solvers) + { + int count = 0; + foreach (ObiSolver solver in solvers) + if (solver != null && solver.initialized) count++; + + if (count > 0) + { + // we want to average the deltas applied by all solvers, so calculate 1/solverCount. + float rcpCount = 1.0f / count; + + for (int i = 0; i < rigidbodyHandles.Count; ++i) + { + Vector4 linearDelta = Vector4.zero; + Vector4 angularDelta = Vector4.zero; + + foreach (ObiSolver solver in solvers) + { + if (solver != null && solver.initialized) + { + linearDelta += solver.rigidbodyLinearDeltas[i] * rcpCount; + angularDelta += solver.rigidbodyAngularDeltas[i] * rcpCount; + } + } + + // update rigidbody velocities + rigidbodyHandles[i].owner.UpdateVelocities(linearDelta, angularDelta); + } + } + } + + } +} diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs.meta new file mode 100644 index 000000000..e2753233a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 72e79cbbc15cc42e1b3e0db8936d18a5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs.orig b/Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs.orig new file mode 100644 index 000000000..46d5419e8 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs.orig @@ -0,0 +1,452 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace Obi +{ + public class ObiResourceHandle where T : class + { + public T owner = null; /**< reference to the owner instance*/ + public int index = -1; /**< index of this resource in the collision world.*/ + private int referenceCount = 0; /**< amount of references to this handle. Can be used to clean up any associated resources after it reaches zero.*/ + + public bool isValid + { + get { return index >= 0; } + } + + public void Invalidate() + { + index = -1; + referenceCount = 0; + } + + public void Reference() + { + referenceCount++; + } + + public bool Dereference() + { + return --referenceCount == 0; + } + + public ObiResourceHandle(int index = -1) + { + this.index = index; + owner = null; + } + } + + public class ObiColliderHandle : ObiResourceHandle + { + public ObiColliderHandle(int index = -1) : base(index) { } + } + public class ObiCollisionMaterialHandle : ObiResourceHandle + { + public ObiCollisionMaterialHandle(int index = -1) : base(index) { } + } + public class ObiRigidbodyHandle : ObiResourceHandle + { + public ObiRigidbodyHandle(int index = -1) : base(index) { } + } + + [ExecuteInEditMode] + public class ObiColliderWorld + { + [NonSerialized] public List implementations; + + [NonSerialized] public List colliderHandles; // list of collider handles, used by ObiCollider components to retrieve them. + [NonSerialized] public ObiNativeColliderShapeList colliderShapes; // list of collider shapes. + [NonSerialized] public ObiNativeAabbList colliderAabbs; // list of collider bounds. + [NonSerialized] public ObiNativeAffineTransformList colliderTransforms; // list of collider transforms. + + [NonSerialized] public List materialHandles; + [NonSerialized] public ObiNativeCollisionMaterialList collisionMaterials; // list of collision materials. + + [NonSerialized] public List rigidbodyHandles; // list of rigidbody handles, used by ObiRigidbody components to retrieve them. + [NonSerialized] public ObiNativeRigidbodyList rigidbodies; // list of rigidbodies. + + [NonSerialized] public ObiTriangleMeshContainer triangleMeshContainer; + [NonSerialized] public ObiEdgeMeshContainer edgeMeshContainer; + [NonSerialized] public ObiDistanceFieldContainer distanceFieldContainer; + [NonSerialized] public ObiHeightFieldContainer heightFieldContainer; + + private static ObiColliderWorld instance; + + public static ObiColliderWorld GetInstance() + { + if (instance == null) + { + instance = new ObiColliderWorld(); + instance.Initialize(); + } + return instance; + } + + private void Initialize() + { + // Allocate all lists: + if (implementations == null) + implementations = new List(); + + if (colliderHandles == null) + colliderHandles = new List(); + if (colliderShapes == null) + colliderShapes = new ObiNativeColliderShapeList(); + if (colliderAabbs == null) + colliderAabbs = new ObiNativeAabbList(); + if (colliderTransforms == null) + colliderTransforms = new ObiNativeAffineTransformList(); + + if (materialHandles == null) + materialHandles = new List(); + if (collisionMaterials == null) + collisionMaterials = new ObiNativeCollisionMaterialList(); + + if (rigidbodyHandles == null) + rigidbodyHandles = new List(); + if (rigidbodies == null) + rigidbodies = new ObiNativeRigidbodyList(); + + if (triangleMeshContainer == null) + triangleMeshContainer = new ObiTriangleMeshContainer(); + if (edgeMeshContainer == null) + edgeMeshContainer = new ObiEdgeMeshContainer(); + if (distanceFieldContainer == null) + distanceFieldContainer = new ObiDistanceFieldContainer(); + if (heightFieldContainer == null) + heightFieldContainer = new ObiHeightFieldContainer(); + } + + private void Destroy() + { + for (int i = 0; i < implementations.Count; ++i) + { + implementations[i].SetColliders(colliderShapes, colliderAabbs, colliderTransforms, 0); + implementations[i].UpdateWorld(0); + } + + // Invalidate all handles: + if (colliderHandles != null) + foreach (var handle in colliderHandles) + handle.Invalidate(); + + if (rigidbodyHandles != null) + foreach (var handle in rigidbodyHandles) + handle.Invalidate(); + + if (materialHandles != null) + foreach (var handle in materialHandles) + handle.Invalidate(); + + // Dispose of all lists: + implementations = null; + colliderHandles = null; + rigidbodyHandles = null; + materialHandles = null; + + if (colliderShapes != null) + colliderShapes.Dispose(); + if (colliderAabbs != null) + colliderAabbs.Dispose(); + if (colliderTransforms != null) + colliderTransforms.Dispose(); + + if (collisionMaterials != null) + collisionMaterials.Dispose(); + + if (rigidbodies != null) + rigidbodies.Dispose(); + + if (triangleMeshContainer != null) + triangleMeshContainer.Dispose(); + if (edgeMeshContainer != null) + edgeMeshContainer.Dispose(); + if (distanceFieldContainer != null) + distanceFieldContainer.Dispose(); + if (heightFieldContainer != null) + heightFieldContainer.Dispose(); + + instance = null; + } + + private void DestroyIfUnused() + { + // when there are no implementations and no colliders, the world gets destroyed. + if (colliderHandles.Count == 0 && rigidbodyHandles.Count == 0 && materialHandles.Count == 0 && implementations.Count == 0) + Destroy(); + } + + public void RegisterImplementation(IColliderWorldImpl impl) + { + if (!implementations.Contains(impl)) + implementations.Add(impl); + } + + public void UnregisterImplementation(IColliderWorldImpl impl) + { + implementations.Remove(impl); + DestroyIfUnused(); + } + + public ObiColliderHandle CreateCollider() + { + var handle = new ObiColliderHandle(colliderHandles.Count); + colliderHandles.Add(handle); + + colliderShapes.Add(new ColliderShape()); + colliderAabbs.Add(new Aabb()); + colliderTransforms.Add(new AffineTransform()); + + return handle; + } + + public ObiRigidbodyHandle CreateRigidbody() + { + var handle = new ObiRigidbodyHandle(rigidbodyHandles.Count); + rigidbodyHandles.Add(handle); + + rigidbodies.Add(new ColliderRigidbody()); + + return handle; + } + + public ObiCollisionMaterialHandle CreateCollisionMaterial() + { + var handle = new ObiCollisionMaterialHandle(materialHandles.Count); + materialHandles.Add(handle); + + collisionMaterials.Add(new CollisionMaterial()); + + return handle; + } + + public ObiTriangleMeshHandle GetOrCreateTriangleMesh(Mesh mesh) + { + return triangleMeshContainer.GetOrCreateTriangleMesh(mesh); + } + + public void DestroyTriangleMesh(ObiTriangleMeshHandle meshHandle) + { + triangleMeshContainer.DestroyTriangleMesh(meshHandle); + } + + public ObiEdgeMeshHandle GetOrCreateEdgeMesh(EdgeCollider2D collider) + { + return edgeMeshContainer.GetOrCreateEdgeMesh(collider); + } + + public void DestroyEdgeMesh(ObiEdgeMeshHandle meshHandle) + { + edgeMeshContainer.DestroyEdgeMesh(meshHandle); + } + + public ObiDistanceFieldHandle GetOrCreateDistanceField(ObiDistanceField df) + { + return distanceFieldContainer.GetOrCreateDistanceField(df); + } + + public void DestroyDistanceField(ObiDistanceFieldHandle dfHandle) + { + distanceFieldContainer.DestroyDistanceField(dfHandle); + } + + public ObiHeightFieldHandle GetOrCreateHeightField(TerrainData hf) + { + return heightFieldContainer.GetOrCreateHeightField(hf); + } + + public void DestroyHeightField(ObiHeightFieldHandle hfHandle) + { + heightFieldContainer.DestroyHeightField(hfHandle); + } + + public void DestroyCollider(ObiColliderHandle handle) + { + if (colliderShapes != null && handle != null && handle.isValid && handle.index < colliderHandles.Count) + { + int index = handle.index; + int lastIndex = colliderHandles.Count - 1; + + // swap all collider info: + colliderHandles.Swap(index, lastIndex); + colliderShapes.Swap(index, lastIndex); + colliderAabbs.Swap(index, lastIndex); + colliderTransforms.Swap(index, lastIndex); + + // update the index of the handle we swapped with: + colliderHandles[index].index = index; + + // invalidate our handle: + // (after updating the swapped one! + // in case there's just one handle in the array, + // we need to write -1 after 0) + handle.Invalidate(); + + // remove last index: + colliderHandles.RemoveAt(lastIndex); + colliderShapes.count--; + colliderAabbs.count--; + colliderTransforms.count--; + + DestroyIfUnused(); + } + + } + + public void DestroyRigidbody(ObiRigidbodyHandle handle) + { + if (rigidbodies != null && handle != null && handle.isValid && handle.index < rigidbodyHandles.Count) + { + int index = handle.index; + int lastIndex = rigidbodyHandles.Count - 1; + + // swap all collider info: + rigidbodyHandles.Swap(index, lastIndex); + rigidbodies.Swap(index, lastIndex); + + // update the index of the handle we swapped with: + rigidbodyHandles[index].index = index; + + // invalidate our handle: + // (after updating the swapped one! + // in case there's just one handle in the array, + // we need to write -1 after 0) + handle.Invalidate(); + + // remove last index: + rigidbodyHandles.RemoveAt(lastIndex); + rigidbodies.count--; + + DestroyIfUnused(); + } + + } + + public void DestroyCollisionMaterial(ObiCollisionMaterialHandle handle) + { + if (collisionMaterials != null && handle != null && handle.isValid && handle.index < materialHandles.Count) + { + int index = handle.index; + int lastIndex = materialHandles.Count - 1; + + // swap all collider info: + materialHandles.Swap(index, lastIndex); + collisionMaterials.Swap(index, lastIndex); + + // update the index of the handle we swapped with: + materialHandles[index].index = index; + + // invalidate our handle: + // (after updating the swapped one! + // in case there's just one handle in the array, + // we need to write -1 after 0) + handle.Invalidate(); + + // remove last index: + materialHandles.RemoveAt(lastIndex); + collisionMaterials.count--; + + DestroyIfUnused(); + } + } + + public void UpdateColliders() + { + // update all colliders: + for (int i = 0; i < colliderHandles.Count; ++i) + colliderHandles[i].owner.UpdateIfNeeded(); +<<<<<<< HEAD +======= + + for (int i = 0; i < implementations.Count; ++i) + { + if (implementations[i].referenceCount > 0) + { + // set arrays: + implementations[i].SetColliders(colliderShapes, colliderAabbs, colliderTransforms, colliderShapes.count); + implementations[i].SetRigidbodies(rigidbodies); + implementations[i].SetCollisionMaterials(collisionMaterials); + implementations[i].SetTriangleMeshData(triangleMeshContainer.headers, triangleMeshContainer.bihNodes, triangleMeshContainer.triangles, triangleMeshContainer.vertices); + implementations[i].SetEdgeMeshData(edgeMeshContainer.headers, edgeMeshContainer.bihNodes, edgeMeshContainer.edges, edgeMeshContainer.vertices); + implementations[i].SetDistanceFieldData(distanceFieldContainer.headers, distanceFieldContainer.dfNodes); + implementations[i].SetHeightFieldData(heightFieldContainer.headers, heightFieldContainer.samples); + + // update world implementation: + implementations[i].UpdateWorld(); + } + } +>>>>>>> 56Hotfix + } + + public void UpdateRigidbodies(List solvers, float stepTime) + { + // reset all solver's delta buffers to zero: + foreach (ObiSolver solver in solvers) + { + if (solver != null) + { + solver.EnsureRigidbodyArraysCapacity(rigidbodyHandles.Count); + solver.rigidbodyLinearDeltas.WipeToZero(); + solver.rigidbodyAngularDeltas.WipeToZero(); + } + } + + for (int i = 0; i < rigidbodyHandles.Count; ++i) + rigidbodyHandles[i].owner.UpdateIfNeeded(stepTime); + } + + public void UpdateWorld(float deltaTime) + { + for (int i = 0; i < implementations.Count; ++i) + { + // set arrays: + implementations[i].SetColliders(colliderShapes, colliderAabbs, colliderTransforms, colliderShapes.count); + implementations[i].SetRigidbodies(rigidbodies); + implementations[i].SetCollisionMaterials(collisionMaterials); + implementations[i].SetTriangleMeshData(triangleMeshContainer.headers, triangleMeshContainer.bihNodes, triangleMeshContainer.triangles, triangleMeshContainer.vertices); + implementations[i].SetEdgeMeshData(edgeMeshContainer.headers, edgeMeshContainer.bihNodes, edgeMeshContainer.edges, edgeMeshContainer.vertices); + implementations[i].SetDistanceFieldData(distanceFieldContainer.headers, distanceFieldContainer.dfNodes); + implementations[i].SetHeightFieldData(heightFieldContainer.headers, heightFieldContainer.samples); + + // update world implementation: + implementations[i].UpdateWorld(deltaTime); + } + } + + public void UpdateRigidbodyVelocities(List solvers) + { + int count = 0; + foreach (ObiSolver solver in solvers) + if (solver != null) count++; + + if (count > 0) + { + // we want to average the deltas applied by all solvers, so calculate 1/solverCount. + float rcpCount = 1.0f / count; + + for (int i = 0; i < rigidbodyHandles.Count; ++i) + { + Vector4 linearDelta = Vector4.zero; + Vector4 angularDelta = Vector4.zero; + + foreach (ObiSolver solver in solvers) + { + if (solver != null) + { + linearDelta += solver.rigidbodyLinearDeltas[i] * rcpCount; + angularDelta += solver.rigidbodyAngularDeltas[i] * rcpCount; + } + } + + // update rigidbody velocities + rigidbodyHandles[i].owner.UpdateVelocities(linearDelta, angularDelta); + } + } + } + + } +} diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs.orig.meta b/Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs.orig.meta new file mode 100644 index 000000000..e1c169cde --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs.orig.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 663bb98786e3a46a3b909fa8d01073f2 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiCollisionMaterial.cs b/Assets/Obi/Scripts/Common/Collisions/ObiCollisionMaterial.cs new file mode 100644 index 000000000..b20a92eb4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiCollisionMaterial.cs @@ -0,0 +1,80 @@ +using UnityEngine; +using System; +using System.Collections; + +namespace Obi{ + + /** + * Holds information about the physics properties of a particle or collider, and how it should react to collisions. + */ + [CreateAssetMenu(fileName = "collision material", menuName = "Obi/Collision Material", order = 180)] + public class ObiCollisionMaterial : ScriptableObject + { + protected ObiCollisionMaterialHandle materialHandle; + + public float dynamicFriction; + public float staticFriction; + public float stickiness; + public float stickDistance; + + public Oni.MaterialCombineMode frictionCombine; + public Oni.MaterialCombineMode stickinessCombine; + + [Space] + public bool rollingContacts = false; + + [Indent()] + [VisibleIf("rollingContacts")] + public float rollingFriction; + + public ObiCollisionMaterialHandle handle + { + get + { + CreateMaterialIfNeeded(); + return materialHandle; + } + } + + public void OnEnable() + { + UpdateMaterial(); + } + + public void OnDisable() + { + ObiColliderWorld.GetInstance().DestroyCollisionMaterial(materialHandle); + } + + public void OnValidate() + { + // we can't create GameObjects in OnValidate(), so make sure the colliderworld already exists. + UpdateMaterial(); + } + + public void UpdateMaterial() + { + var world = ObiColliderWorld.GetInstance(); + var mat = world.collisionMaterials[handle.index]; + mat.FromObiCollisionMaterial(this); + world.collisionMaterials[handle.index] = mat; + } + + protected void CreateMaterialIfNeeded() + { + if (materialHandle == null || !materialHandle.isValid) + { + var world = ObiColliderWorld.GetInstance(); + + // create the material: + materialHandle = world.CreateCollisionMaterial(); + materialHandle.owner = this; + + // copy material data from this material (use materialHandle instead of handle, to not retrigger CreateMaterialIfNeeded) + var mat = world.collisionMaterials[materialHandle.index]; + mat.FromObiCollisionMaterial(this); + world.collisionMaterials[materialHandle.index] = mat; + } + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiCollisionMaterial.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ObiCollisionMaterial.cs.meta new file mode 100644 index 000000000..bf25cb7db --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiCollisionMaterial.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5b9c84cdb747944209b1c8753933c5db +timeCreated: 1483360014 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: e101664ae1c454916896aaaa3199221c, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiDistanceField.cs b/Assets/Obi/Scripts/Common/Collisions/ObiDistanceField.cs new file mode 100644 index 000000000..3e5e315cd --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiDistanceField.cs @@ -0,0 +1,129 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi{ + + [CreateAssetMenu(fileName = "distance field", menuName = "Obi/Distance Field", order = 181)] + [ExecuteInEditMode] + public class ObiDistanceField : ScriptableObject + { + [SerializeProperty("InputMesh")] + [SerializeField] private Mesh input = null; + + [HideInInspector][SerializeField] private float minNodeSize = 0; + [HideInInspector][SerializeField] private Bounds bounds = new Bounds(); + [HideInInspector] public List nodes; /**< list of distance field nodes*/ + + [Range(0.0000001f,0.1f)] + public float maxError = 0.01f; + + [Range(1, 8)] + public int maxDepth = 5; + + public bool Initialized{ + get{return nodes != null;} + } + + public Bounds FieldBounds { + get{return bounds;} + } + + public float EffectiveSampleSize { + get{return minNodeSize;} + } + + public Mesh InputMesh{ + set{ + if (value != input){ + Reset(); + input = value; + } + } + get{return input;} + } + + public void Reset(){ + nodes = null; + if (input != null) + bounds = input.bounds; + } + + public IEnumerator Generate(){ + + Reset(); + + if (input == null) + yield break; + + int[] tris = input.triangles; + Vector3[] verts = input.vertices; + + nodes = new List(); + var buildingCoroutine = ASDF.Build(maxError, maxDepth, verts, tris, nodes); + + while (buildingCoroutine.MoveNext()) + yield return new CoroutineJob.ProgressInfo("Processed nodes: " + nodes.Count, 1); + + // calculate min node size; + minNodeSize = float.PositiveInfinity; + for (int j = 0; j < nodes.Count; ++j) + minNodeSize = Mathf.Min(minNodeSize, nodes[j].center[3] * 2); + + // get bounds: + float max = Mathf.Max(bounds.size[0], Mathf.Max(bounds.size[1], bounds.size[2])) + 0.2f; + bounds.size = new Vector3(max, max, max); + + } + + /** + * Return a volume texture containing a representation of this distance field. + */ + public Texture3D GetVolumeTexture(int size){ + + if (!Initialized) + return null; + + // upper bound of the distance from any point inside the bounds to the surface. + float maxDist = Mathf.Max(bounds.size.x,bounds.size.y,bounds.size.z); + + float spacingX = bounds.size.x / (float)size; + float spacingY = bounds.size.y / (float)size; + float spacingZ = bounds.size.z / (float)size; + + Texture3D tex = new Texture3D (size, size, size, TextureFormat.Alpha8, false); + + var cols = new Color[size*size*size]; + int idx = 0; + Color c = Color.black; + + for (int z = 0; z < size; ++z) + { + for (int y = 0; y < size; ++y) + { + for (int x = 0; x < size; ++x, ++idx) + { + Vector3 samplePoint = bounds.min + new Vector3(spacingX * x + spacingX*0.5f, + spacingY * y + spacingY*0.5f, + spacingZ * z + spacingZ*0.5f); + + float distance = ASDF.Sample(nodes,samplePoint); + + if (distance >= 0) + c.a = distance.Remap(0,maxDist*0.1f,0.5f,1); + else + c.a = distance.Remap(-maxDist*0.1f,0,0,0.5f); + + cols[idx] = c; + } + } + } + tex.SetPixels (cols); + tex.Apply (); + return tex; + + } + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiDistanceField.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ObiDistanceField.cs.meta new file mode 100644 index 000000000..9f0681502 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiDistanceField.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d31207380edf34b1b84ce50af22f2356 +timeCreated: 1516041748 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: a83ed40096e3a40efa85f35b091e6298, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiDistanceFieldContainer.cs b/Assets/Obi/Scripts/Common/Collisions/ObiDistanceFieldContainer.cs new file mode 100644 index 000000000..9d6fde096 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiDistanceFieldContainer.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Obi +{ + + public class ObiDistanceFieldHandle : ObiResourceHandle + { + public ObiDistanceFieldHandle(ObiDistanceField field, int index = -1) : base(index) { owner = field; } + } + + public struct DistanceFieldHeader //we need to use the header in the backend, so it must be a struct. + { + public int firstNode; + public int nodeCount; + + public DistanceFieldHeader(int firstNode, int nodeCount) + { + this.firstNode = firstNode; + this.nodeCount = nodeCount; + } + } + + public class ObiDistanceFieldContainer + { + public Dictionary handles; /**< dictionary indexed by asset, so that we don't generate data for the same distance field multiple times.*/ + + public ObiNativeDistanceFieldHeaderList headers; /**< One header per distance field.*/ + public ObiNativeDFNodeList dfNodes; + + public ObiDistanceFieldContainer() + { + handles = new Dictionary(); + headers = new ObiNativeDistanceFieldHeaderList(); + dfNodes = new ObiNativeDFNodeList(); + } + + public ObiDistanceFieldHandle GetOrCreateDistanceField(ObiDistanceField source) + { + ObiDistanceFieldHandle handle; + + if (!handles.TryGetValue(source, out handle)) + { + + handle = new ObiDistanceFieldHandle(source, headers.count); + handles.Add(source, handle); + headers.Add(new DistanceFieldHeader(dfNodes.count, source.nodes.Count)); + + dfNodes.AddRange(source.nodes); + } + + return handle; + } + + public void DestroyDistanceField(ObiDistanceFieldHandle handle) + { + if (handle != null && handle.isValid && handle.index < handles.Count) + { + var header = headers[handle.index]; + + // Update headers: + for (int i = 0; i < headers.count; ++i) + { + var h = headers[i]; + if (h.firstNode > header.firstNode) + { + h.firstNode -= header.nodeCount; + headers[i] = h; + } + } + + // update handles: + foreach (var pair in handles) + { + if (pair.Value.index > handle.index) + pair.Value.index--; + } + + // Remove nodes + dfNodes.RemoveRange(header.firstNode, header.nodeCount); + + // remove header: + headers.RemoveAt(handle.index); + + // remove the mesh from the dictionary: + handles.Remove(handle.owner); + + // Invalidate our handle: + handle.Invalidate(); + } + } + + public void Dispose() + { + if (headers != null) + headers.Dispose(); + if (dfNodes != null) + dfNodes.Dispose(); + } + + } +} diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiDistanceFieldContainer.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ObiDistanceFieldContainer.cs.meta new file mode 100644 index 000000000..6d49dbfd5 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiDistanceFieldContainer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8fb69dfa0ce5432d83da86e05e31e12 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiEdgeMeshContainer.cs b/Assets/Obi/Scripts/Common/Collisions/ObiEdgeMeshContainer.cs new file mode 100644 index 000000000..d4bc3e7e5 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiEdgeMeshContainer.cs @@ -0,0 +1,163 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Obi +{ + public struct Edge : IBounded + { + public int i1; + public int i2; + + Aabb b; + + public Edge(int i1, int i2, Vector2 v1, Vector2 v2) + { + this.i1 = i1; + this.i2 = i2; + b = new Aabb(v1); + b.Encapsulate(v2); + } + + public Aabb GetBounds() + { + return b; + } + } + + public class ObiEdgeMeshHandle : ObiResourceHandle + { + public ObiEdgeMeshHandle(EdgeCollider2D collider, int index = -1) : base(index) { owner = collider; } + } + + public struct EdgeMeshHeader + { + public int firstNode; + public int nodeCount; + public int firstEdge; + public int edgeCount; + public int firstVertex; + public int vertexCount; + + public EdgeMeshHeader(int firstNode, int nodeCount, int firstTriangle, int triangleCount, int firstVertex, int vertexCount) + { + this.firstNode = firstNode; + this.nodeCount = nodeCount; + this.firstEdge = firstTriangle; + this.edgeCount = triangleCount; + this.firstVertex = firstVertex; + this.vertexCount = vertexCount; + } + } + + public class ObiEdgeMeshContainer + { + public Dictionary handles; /**< dictionary indexed by mesh, so that we don't generate data for the same mesh multiple times.*/ + + public ObiNativeEdgeMeshHeaderList headers; + public ObiNativeBIHNodeList bihNodes; + public ObiNativeEdgeList edges; + public ObiNativeVector2List vertices; + + public ObiEdgeMeshContainer() + { + handles = new Dictionary(); + headers = new ObiNativeEdgeMeshHeaderList(); + bihNodes = new ObiNativeBIHNodeList(); + edges = new ObiNativeEdgeList(); + vertices = new ObiNativeVector2List(); + } + + public ObiEdgeMeshHandle GetOrCreateEdgeMesh(EdgeCollider2D source) + { + ObiEdgeMeshHandle handle; + + if (!handles.TryGetValue(source, out handle)) + { + Vector2[] sourceVertices = source.points; + int[] sourceEdges = new int[source.edgeCount * 2]; + + for (int i = 0; i < source.edgeCount; ++i) + { + sourceEdges[i * 2] = i; + sourceEdges[i * 2 + 1] = i + 1; + } + + // Build a bounding interval hierarchy from the edges: + IBounded[] t = new IBounded[source.edgeCount]; + for (int i = 0; i < source.edgeCount; ++i) + { + t[i] = new Edge(i, i+1, sourceVertices[i], sourceVertices[i+1]); + } + var sourceBih = BIH.Build(ref t); + + Edge[] edgs = Array.ConvertAll(t, x => (Edge)x); + + handle = new ObiEdgeMeshHandle(source, headers.count); + handles.Add(source, handle); + headers.Add(new EdgeMeshHeader(bihNodes.count, sourceBih.Length, edges.count, edgs.Length, vertices.count, sourceVertices.Length)); + + bihNodes.AddRange(sourceBih); + edges.AddRange(edgs); + vertices.AddRange(sourceVertices); + } + + return handle; + } + + public void DestroyEdgeMesh(ObiEdgeMeshHandle handle) + { + if (handle != null && handle.isValid && handle.index < handles.Count) + { + var header = headers[handle.index]; + + // Update headers: + for (int i = 0; i < headers.count; ++i) + { + var h = headers[i]; + if (h.firstEdge > header.firstEdge) + { + h.firstNode -= header.nodeCount; + h.firstEdge -= header.edgeCount; + h.firstVertex -= header.vertexCount; + headers[i] = h; + } + } + + // update handles: + foreach (var pair in handles) + { + if (pair.Value.index > handle.index) + pair.Value.index--; + } + + // Remove nodes, triangles and vertices + bihNodes.RemoveRange(header.firstNode, header.nodeCount); + edges.RemoveRange(header.firstEdge, header.edgeCount); + vertices.RemoveRange(header.firstVertex, header.vertexCount); + + // remove header: + headers.RemoveAt(handle.index); + + // remove the collider from the dictionary: + handles.Remove(handle.owner); + + // Invalidate our handle: + handle.Invalidate(); + } + } + + public void Dispose() + { + if (headers != null) + headers.Dispose(); + if (edges != null) + edges.Dispose(); + if (vertices != null) + vertices.Dispose(); + if (bihNodes != null) + bihNodes.Dispose(); + } + + } +} diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiEdgeMeshContainer.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ObiEdgeMeshContainer.cs.meta new file mode 100644 index 000000000..8e1c4df1b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiEdgeMeshContainer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 26d97a1797c5d43a69fc77f77c37a3b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiHeightFieldContainer.cs b/Assets/Obi/Scripts/Common/Collisions/ObiHeightFieldContainer.cs new file mode 100644 index 000000000..75131e753 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiHeightFieldContainer.cs @@ -0,0 +1,114 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Obi +{ + public class ObiHeightFieldHandle : ObiResourceHandle + { + public ObiHeightFieldHandle(TerrainData data, int index = -1) : base(index) { owner = data; } + } + + public struct HeightFieldHeader //we need to use the header in the backend, so it must be a struct. + { + public int firstSample; + public int sampleCount; + + public HeightFieldHeader(int firstSample, int sampleCount) + { + this.firstSample = firstSample; + this.sampleCount = sampleCount; + } + } + + public class ObiHeightFieldContainer + { + public Dictionary handles; /**< dictionary indexed by asset, so that we don't generate data for the same distance field multiple times.*/ + + public ObiNativeHeightFieldHeaderList headers; /**< One header per distance field.*/ + public ObiNativeFloatList samples; + + public ObiHeightFieldContainer() + { + handles = new Dictionary(); + headers = new ObiNativeHeightFieldHeaderList(); + samples = new ObiNativeFloatList(); + } + + public ObiHeightFieldHandle GetOrCreateHeightField(TerrainData source) + { + ObiHeightFieldHandle handle; + + if (!handles.TryGetValue(source, out handle)) + { + // Get the heighfield into a 1d array: + int width = source.heightmapResolution; + int height = source.heightmapResolution; + + float[,] heights = source.GetHeights(0, 0, width, height); + bool[,] holes = source.GetHoles(0, 0, width-1, height-1); + + float[] buffer = new float[width * height]; + + for (int y = 0; y < height; ++y) + for (int x = 0; x < width; ++x) + buffer[y * width + x] = heights[y, x] * (holes[Mathf.Min(y,height - 2), Mathf.Min(x, width - 2)] ? 1:-1); + + handle = new ObiHeightFieldHandle(source, headers.count); + handles.Add(source, handle); + headers.Add(new HeightFieldHeader(samples.count, buffer.Length)); + + samples.AddRange(buffer); + } + + return handle; + } + + public void DestroyHeightField(ObiHeightFieldHandle handle) + { + if (handle != null && handle.isValid && handle.index < handles.Count) + { + var header = headers[handle.index]; + + // Update headers: + for (int i = 0; i < headers.count; ++i) + { + var h = headers[i]; + if (h.firstSample > header.firstSample) + { + h.firstSample -= header.sampleCount; + headers[i] = h; + } + } + + // update handles: + foreach (var pair in handles) + { + if (pair.Value.index > handle.index) + pair.Value.index--; + } + + // Remove nodes + samples.RemoveRange(header.firstSample, header.sampleCount); + + // remove header: + headers.RemoveAt(handle.index); + + // remove the heightfield from the dictionary: + handles.Remove(handle.owner); + + // Invalidate our handle: + handle.Invalidate(); + } + } + + public void Dispose() + { + if (headers != null) + headers.Dispose(); + if (samples != null) + samples.Dispose(); + } + + } +} diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiHeightFieldContainer.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ObiHeightFieldContainer.cs.meta new file mode 100644 index 000000000..4a72e5c5c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiHeightFieldContainer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 144f4377b36f741b3af30c9ff572733f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiRigidbody.cs b/Assets/Obi/Scripts/Common/Collisions/ObiRigidbody.cs new file mode 100644 index 000000000..0896b6524 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiRigidbody.cs @@ -0,0 +1,89 @@ +using UnityEngine; +using System; +using System.Collections; + +namespace Obi +{ + + /** + * Small helper class that lets you specify Obi-only properties for rigidbodies. + */ + + [ExecuteInEditMode] + [RequireComponent(typeof(Rigidbody))] + public class ObiRigidbody : ObiRigidbodyBase + { + public Rigidbody unityRigidbody { get; private set; } + + public Vector3 position => unityRigidbody.position; + public Quaternion rotation => unityRigidbody.rotation; + + public Vector3 linearVelocity { get; protected set; } + public Vector3 angularVelocity { get; protected set; } + + private Quaternion prevRotation; + private Vector3 prevPosition; + + public override void OnEnable() + { + unityRigidbody = GetComponent(); + prevPosition = unityRigidbody.position; + prevRotation = unityRigidbody.rotation; + + linearVelocity = unityRigidbody.linearVelocity; + angularVelocity = unityRigidbody.angularVelocity; + base.OnEnable(); + } + + private void UpdateVelocities(float stepTime) + { + // differentiate positions/orientations to get our own velocites for kinematic objects. + // when calling Physics.Simulate, MovePosition/Rotation do not work correctly. Also useful for animations. + if (unityRigidbody.isKinematic) + { + // differentiate positions to obtain linear velocity: + linearVelocity = (unityRigidbody.position - prevPosition) / stepTime; + + // differentiate rotations to obtain angular velocity: + Quaternion delta = unityRigidbody.rotation * Quaternion.Inverse(prevRotation); + angularVelocity = new Vector3(delta.x, delta.y, delta.z) * 2.0f / stepTime; + } + else + { + // if the object is non-kinematic, just copy velocities. + linearVelocity = unityRigidbody.linearVelocity; + angularVelocity = unityRigidbody.angularVelocity; + } + + prevPosition = unityRigidbody.position; + prevRotation = unityRigidbody.rotation; + } + + public override void UpdateIfNeeded(float stepTime) + { + UpdateVelocities(stepTime); + var world = ObiColliderWorld.GetInstance(); + + var rb = world.rigidbodies[handle.index]; + rb.FromRigidbody(this); + world.rigidbodies[handle.index] = rb; + } + + /** + * Reads velocities back from the solver. + */ + public override void UpdateVelocities(Vector3 linearDelta, Vector3 angularDelta) + { + // kinematic rigidbodies are passed to Obi with zero velocity, so we must ignore the new velocities calculated by the solver: + if (Application.isPlaying && !(unityRigidbody.isKinematic || kinematicForParticles)) + { + if (Vector3.SqrMagnitude(linearDelta) > 0.00001f || Vector3.SqrMagnitude(angularDelta) > 0.00001f) + { + unityRigidbody.linearVelocity += linearDelta; + unityRigidbody.angularVelocity += angularDelta; + } + } + } + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiRigidbody.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ObiRigidbody.cs.meta new file mode 100644 index 000000000..7a15a80f6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiRigidbody.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 62359d80fdc0e4315ab6331b78ec5b90 +timeCreated: 1502137073 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 1788ce7c914374d949486d9789c9f306, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiRigidbody2D.cs b/Assets/Obi/Scripts/Common/Collisions/ObiRigidbody2D.cs new file mode 100644 index 000000000..6e831e839 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiRigidbody2D.cs @@ -0,0 +1,87 @@ +using UnityEngine; +using System; +using System.Collections; + +namespace Obi +{ + + /** + * Small helper class that lets you specify Obi-only properties for rigidbodies. + */ + + [ExecuteInEditMode] + [RequireComponent(typeof(Rigidbody2D))] + public class ObiRigidbody2D : ObiRigidbodyBase + { + public Rigidbody2D unityRigidbody { get; private set; } + + public Vector2 position => unityRigidbody.position; + public float rotation => unityRigidbody.rotation; + + public Vector2 linearVelocity { get; protected set; } + public float angularVelocity { get; protected set; } + + private Quaternion prevRotation; + private Vector3 prevPosition; + + public override void OnEnable() + { + unityRigidbody = GetComponent(); + prevPosition = transform.position; + prevRotation = transform.rotation; + + linearVelocity = unityRigidbody.linearVelocity; + angularVelocity = unityRigidbody.angularVelocity; + base.OnEnable(); + } + + private void UpdateKinematicVelocities(float stepTime) + { + // differentiate positions/orientations to get our own velocites for kinematic objects. + // when calling Physics.Simulate, MovePosition/Rotation do not work correctly. Also useful for animations. + if (unityRigidbody.isKinematic) + { + // differentiate positions to obtain linear velocity: + linearVelocity = (transform.position - prevPosition) / stepTime; + + // differentiate rotations to obtain angular velocity: + Quaternion delta = transform.rotation * Quaternion.Inverse(prevRotation); + angularVelocity = delta.z * Mathf.Rad2Deg * 2.0f / stepTime; + } + else + { + // if the object is non-kinematic, just copy velocities. + linearVelocity = unityRigidbody.linearVelocity; + angularVelocity = unityRigidbody.angularVelocity; + } + + prevPosition = transform.position; + prevRotation = transform.rotation; + } + + public override void UpdateIfNeeded(float stepTime) + { + UpdateKinematicVelocities(stepTime); + var world = ObiColliderWorld.GetInstance(); + + var rb = world.rigidbodies[handle.index]; + rb.FromRigidbody(this); + world.rigidbodies[handle.index] = rb; + } + + /** + * Reads velocities back from the solver. + */ + public override void UpdateVelocities(Vector3 linearDelta, Vector3 angularDelta) + { + // kinematic rigidbodies are passed to Obi with zero velocity, so we must ignore the new velocities calculated by the solver: + if (Application.isPlaying && !(unityRigidbody.isKinematic || kinematicForParticles)) + { + unityRigidbody.linearVelocity += new Vector2(linearDelta.x, linearDelta.y); + unityRigidbody.angularVelocity += angularDelta[2] * Mathf.Rad2Deg; + } + + } + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiRigidbody2D.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ObiRigidbody2D.cs.meta new file mode 100644 index 000000000..8b4dbc1d7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiRigidbody2D.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d8e1dfa1dce354ed499bfb5d2b1cd799 +timeCreated: 1517939164 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 21e01eb398ab24a7abb1f3b493af6b20, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiRigidbodyBase.cs b/Assets/Obi/Scripts/Common/Collisions/ObiRigidbodyBase.cs new file mode 100644 index 000000000..69cbef4f5 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiRigidbodyBase.cs @@ -0,0 +1,41 @@ +using UnityEngine; +using Unity.Profiling; +using System; +using System.Collections; + +namespace Obi{ + + /** + * Small helper class that lets you specify Obi-only properties for rigidbodies. + */ + + [ExecuteInEditMode] + public abstract class ObiRigidbodyBase : MonoBehaviour + { + + public bool kinematicForParticles = false; + + public ObiRigidbodyHandle handle; + + public virtual void OnEnable() + { + handle = ObiColliderWorld.GetInstance().CreateRigidbody(); + handle.owner = this; + UpdateIfNeeded(1); + } + + public void OnDisable() + { + ObiColliderWorld.GetInstance().DestroyRigidbody(handle); + } + + public abstract void UpdateIfNeeded(float stepTime); + + /** + * Reads velocities back from the solver. + */ + public abstract void UpdateVelocities(Vector3 linearDelta, Vector3 angularDelta); + + } +} + diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiRigidbodyBase.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ObiRigidbodyBase.cs.meta new file mode 100644 index 000000000..0e3cab7cc --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiRigidbodyBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8f0adb129c9cf4d978dc5964711503b8 +timeCreated: 1516131526 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiTriangleMeshContainer.cs b/Assets/Obi/Scripts/Common/Collisions/ObiTriangleMeshContainer.cs new file mode 100644 index 000000000..1fa9f41d0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiTriangleMeshContainer.cs @@ -0,0 +1,163 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Obi +{ + public struct Triangle : IBounded + { + public int i1; + public int i2; + public int i3; + + Aabb b; + + public Triangle(int i1, int i2, int i3, Vector3 v1, Vector3 v2, Vector3 v3) + { + this.i1 = i1; + this.i2 = i2; + this.i3 = i3; + b = new Aabb(v1); + b.Encapsulate(v2); + b.Encapsulate(v3); + } + + public Aabb GetBounds() + { + return b; + } + } + + public class ObiTriangleMeshHandle : ObiResourceHandle + { + public ObiTriangleMeshHandle(Mesh mesh, int index = -1) : base(index) { owner = mesh; } + } + + public struct TriangleMeshHeader //we need to use the header in the backend, so it must be a struct. + { + public int firstNode; + public int nodeCount; + public int firstTriangle; + public int triangleCount; + public int firstVertex; + public int vertexCount; + + public TriangleMeshHeader(int firstNode, int nodeCount, int firstTriangle, int triangleCount, int firstVertex, int vertexCount) + { + this.firstNode = firstNode; + this.nodeCount = nodeCount; + this.firstTriangle = firstTriangle; + this.triangleCount = triangleCount; + this.firstVertex = firstVertex; + this.vertexCount = vertexCount; + } + } + + public class ObiTriangleMeshContainer + { + public Dictionary handles; /**< dictionary indexed by mesh, so that we don't generate data for the same mesh multiple times.*/ + + public ObiNativeTriangleMeshHeaderList headers; /**< One header per mesh.*/ + public ObiNativeBIHNodeList bihNodes; + public ObiNativeTriangleList triangles; + public ObiNativeVector3List vertices; + + public ObiTriangleMeshContainer() + { + handles = new Dictionary(); + headers = new ObiNativeTriangleMeshHeaderList(); + bihNodes = new ObiNativeBIHNodeList(); + triangles = new ObiNativeTriangleList(); + vertices = new ObiNativeVector3List(); + } + + public ObiTriangleMeshHandle GetOrCreateTriangleMesh(Mesh source) + { + ObiTriangleMeshHandle handle = new ObiTriangleMeshHandle(null); + + if (source != null && !handles.TryGetValue(source, out handle)) + { + var sourceTris = source.triangles; + var sourceVertices = source.vertices; + + // Build a bounding interval hierarchy from the triangles: + IBounded[] t = new IBounded[sourceTris.Length/3]; + for (int i = 0; i < t.Length; ++i) + { + int t1 = sourceTris[i * 3]; + int t2 = sourceTris[i * 3 + 1]; + int t3 = sourceTris[i * 3 + 2]; + t[i] = new Triangle(t1,t2,t3, sourceVertices[t1], sourceVertices[t2], sourceVertices[t3]); + } + var sourceBih = BIH.Build(ref t); + + Triangle[] tris = Array.ConvertAll(t, x => (Triangle)x); + + handle = new ObiTriangleMeshHandle(source, headers.count); + handles.Add(source, handle); + headers.Add(new TriangleMeshHeader(bihNodes.count, sourceBih.Length, triangles.count, tris.Length, vertices.count, sourceVertices.Length)); + + bihNodes.AddRange(sourceBih); + triangles.AddRange(tris); + vertices.AddRange(sourceVertices); + } + + return handle; + } + + public void DestroyTriangleMesh(ObiTriangleMeshHandle handle) + { + if (handle != null && handle.isValid && handle.index < handles.Count) + { + var header = headers[handle.index]; + + // Update headers: + for (int i = 0; i < headers.count; ++i) + { + var h = headers[i]; + if (h.firstTriangle > header.firstTriangle) + { + h.firstNode -= header.nodeCount; + h.firstTriangle -= header.triangleCount; + h.firstVertex -= header.vertexCount; + headers[i] = h; + } + } + + // update handles: + foreach (var pair in handles) + { + if (pair.Value.index > handle.index) + pair.Value.index --; + } + + // Remove nodes, triangles and vertices + bihNodes.RemoveRange(header.firstNode, header.nodeCount); + triangles.RemoveRange(header.firstTriangle, header.triangleCount); + vertices.RemoveRange(header.firstVertex, header.vertexCount); + + // remove header: + headers.RemoveAt(handle.index); + + // remove the mesh from the dictionary: + handles.Remove(handle.owner); + + // Invalidate our handle: + handle.Invalidate(); + } + } + + public void Dispose() + { + if (headers != null) + headers.Dispose(); + if (triangles != null) + triangles.Dispose(); + if (vertices != null) + vertices.Dispose(); + if (bihNodes != null) + bihNodes.Dispose(); + } + + } +} diff --git a/Assets/Obi/Scripts/Common/Collisions/ObiTriangleMeshContainer.cs.meta b/Assets/Obi/Scripts/Common/Collisions/ObiTriangleMeshContainer.cs.meta new file mode 100644 index 000000000..a92add228 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Collisions/ObiTriangleMeshContainer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ce6cc2e74afba4793acd378425158828 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures.meta b/Assets/Obi/Scripts/Common/DataStructures.meta new file mode 100644 index 000000000..2c79eb3bb --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c8768fedc0fc14bb484c2289f4d7b6c9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/ASDF.meta b/Assets/Obi/Scripts/Common/DataStructures/ASDF.meta new file mode 100644 index 000000000..2ccf1cd06 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/ASDF.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 645b177bec2c444aaa188661f611418a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/ASDF/ASDF.cs b/Assets/Obi/Scripts/Common/DataStructures/ASDF/ASDF.cs new file mode 100644 index 000000000..3573506c2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/ASDF/ASDF.cs @@ -0,0 +1,187 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Obi +{ + public class ASDF + { + static readonly Vector4[] corners = + { + new Vector4(-1,-1,-1,-1), + new Vector4(-1,-1,1,-1), + new Vector4(-1,1,-1,-1), + new Vector4(-1,1,1,-1), + + new Vector4(1,-1,-1,-1), + new Vector4(1,-1,1,-1), + new Vector4(1,1,-1,-1), + new Vector4(1,1,1,-1) + }; + + static readonly Vector4[] samples = + { + new Vector4(0,0,0,0), + new Vector4(1,0,0,0), + new Vector4(-1,0,0,0), + new Vector4(0,1,0,0), + new Vector4(0,-1,0,0), + new Vector4(0,0,1,0), + new Vector4(0,0,-1,0), + + new Vector4(0,-1,-1,0), + new Vector4(0,-1,1,0), + new Vector4(0,1,-1,0), + new Vector4(0,1,1,0), + + new Vector4(-1,0,-1,0), + new Vector4(-1,0,1,0), + new Vector4(1,0,-1,0), + new Vector4(1,0,1,0), + + new Vector4(-1,-1,0,0), + new Vector4(-1,1,0,0), + new Vector4(1,-1,0,0), + new Vector4(1,1,0,0) + }; + + const float sqrt3 = 1.73205f; + + public static IEnumerator Build(float maxError, int maxDepth, Vector3[] vertexPositions, int[] triangleIndices, List nodes, int yieldAfterNodeCount = 32) + { + // Empty vertex or triangle lists, return. + if (maxDepth <= 0 || + nodes == null || + vertexPositions == null || vertexPositions.Length == 0 || + triangleIndices == null || triangleIndices.Length == 0) + yield break; + + // Build a bounding interval hierarchy from the triangles, to speed up distance queries: + IBounded[] t = new IBounded[triangleIndices.Length / 3]; + for (int i = 0; i < t.Length; ++i) + { + int t1 = triangleIndices[i * 3]; + int t2 = triangleIndices[i * 3 + 1]; + int t3 = triangleIndices[i * 3 + 2]; + t[i] = new Triangle(t1, t2, t3, vertexPositions[t1], vertexPositions[t2], vertexPositions[t3]); + } + var bih = BIH.Build(ref t); + + // Copy reordered triangles over to a new array: + Triangle[] tris = Array.ConvertAll(t, x => (Triangle)x); + + // Build angle weighted normals, used to determine the sign of the distance field. + Vector3[] angleNormals = ObiUtils.CalculateAngleWeightedNormals(vertexPositions,triangleIndices); + + // Calculate bounding box of the mesh: + Bounds bounds = new Bounds(vertexPositions[0], Vector3.zero); + for (int i = 1; i < vertexPositions.Length; ++i) + bounds.Encapsulate(vertexPositions[i]); + + bounds.Expand(0.2f); + + // Auxiliar variables to keep track of current tree depth: + int depth = 0; + int nodesToNextLevel = 1; + + // Initialize node list: + Vector4 center = bounds.center; + Vector3 boundsExtents = bounds.extents; + center[3] = Mathf.Max(boundsExtents[0], Math.Max(boundsExtents[1], boundsExtents[2])); + nodes.Clear(); + nodes.Add(new DFNode(center)); + + + var queue = new Queue(); + queue.Enqueue(0); + + int processedNodeCount = 0; + while (queue.Count > 0) + { + // get current node: + int index = queue.Dequeue(); + var node = nodes[index]; + + // measure distance at the 8 node corners: + for (int i = 0; i < 8; ++i) + { + Vector4 point = node.center + corners[i] * node.center[3]; + point[3] = 0; + float distance = BIH.DistanceToSurface(bih, tris, vertexPositions,angleNormals,point); + + if (i < 4) + node.distancesA[i] = distance; + else + node.distancesB[i - 4] = distance; + } + + // only subdivide those nodes intersecting the surface: + if (depth < maxDepth && Mathf.Abs(BIH.DistanceToSurface(bih, tris, vertexPositions, angleNormals, node.center)) < node.center[3] * sqrt3) + { + + // calculate mean squared error between measured distances and interpolated ones: + float mse = 0; + for (int i = 0; i < samples.Length; ++i) + { + Vector4 point = node.center + samples[i] * node.center[3]; + float groundTruth = BIH.DistanceToSurface(bih, tris, vertexPositions, angleNormals, point); + float estimation = node.Sample(point); + float d = groundTruth - estimation; + mse += d * d; + } + mse /= (float)samples.Length; + + // if error > threshold, subdivide the node: + if (mse > maxError) + { + node.firstChild = nodes.Count; + for (int i = 0; i < 8; ++i) + { + queue.Enqueue(nodes.Count); + nodes.Add(new DFNode(node.center + corners[i] * node.center[3] * 0.5f)); + } + } + + // keep track of current depth: + if (--nodesToNextLevel == 0) + { + depth++; + nodesToNextLevel = queue.Count; + } + } + + // feed the modified node back: + nodes[index] = node; + + // if we've processed enough nodes, yield. + if (nodes.Count - processedNodeCount >= yieldAfterNodeCount) + { + processedNodeCount = nodes.Count; + yield return null; + } + } + } + + public static float Sample(List nodes, Vector3 position) + { + if (nodes != null && nodes.Count > 0) + { + var queue = new Queue(); + queue.Enqueue(0); + + while (queue.Count > 0) + { + // get current node: + var node = nodes[queue.Dequeue()]; + + if (node.firstChild > -1) + queue.Enqueue(node.firstChild + node.GetOctant(position)); + else + return node.Sample(position); + } + } + return 0; + } + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/ASDF/ASDF.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/ASDF/ASDF.cs.meta new file mode 100644 index 000000000..d51108acd --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/ASDF/ASDF.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6951f2457b77d4daf9f257e128b6dfb2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/ASDF/DFNode.cs b/Assets/Obi/Scripts/Common/DataStructures/ASDF/DFNode.cs new file mode 100644 index 000000000..0121d6fc0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/ASDF/DFNode.cs @@ -0,0 +1,65 @@ +using System; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public struct DFNode + { + public Vector4 distancesA; + public Vector4 distancesB; + public Vector4 center; + public int firstChild; + + // add 12 bytes of padding to ensure correct memory alignment: + private int pad0; + private int pad1; + private int pad2; + + public DFNode(Vector4 center) + { + this.distancesA = Vector4.zero; + this.distancesB = Vector4.zero; + this.center = center; + this.firstChild = -1; + this.pad0 = 0; + this.pad1 = 0; + this.pad2 = 0; + } + + public float Sample(Vector3 position) + { + Vector3 nPos = GetNormalizedPos(position); + + // trilinear interpolation: interpolate along x axis + Vector4 x = distancesA + (distancesB - distancesA) * nPos[0]; + + // interpolate along y axis + float y0 = x[0] + (x[2] - x[0]) * nPos[1]; + float y1 = x[1] + (x[3] - x[1]) * nPos[1]; + + // interpolate along z axis. + return y0 + (y1 - y0) * nPos[2]; + } + + public Vector3 GetNormalizedPos(Vector3 position) + { + float size = center[3] * 2; + return new Vector3( + (position[0] - (center[0] - center[3])) / size, + (position[1] - (center[1] - center[3])) / size, + (position[2] - (center[2] - center[3])) / size + ); + } + + public int GetOctant(Vector3 position) + { + int index = 0; + if (position[0] > center[0]) index |= 4; + if (position[1] > center[1]) index |= 2; + if (position[2] > center[2]) index |= 1; + return index; + } + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/ASDF/DFNode.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/ASDF/DFNode.cs.meta new file mode 100644 index 000000000..17405a2c1 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/ASDF/DFNode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 769e6e9ced39347bc96146f1858ab648 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/Aabb.cs b/Assets/Obi/Scripts/Common/DataStructures/Aabb.cs new file mode 100644 index 000000000..0ab75766d --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/Aabb.cs @@ -0,0 +1,53 @@ +using UnityEngine; + +namespace Obi +{ + public struct Aabb + { + public Vector4 min; + public Vector4 max; + + public Vector4 center + { + get { return min + (max - min) * 0.5f; } + } + + public Vector4 size + { + get { return max - min; } + } + + public Aabb(Vector4 min, Vector4 max) + { + this.min = min; + this.max = max; + } + + public Aabb(Vector4 point) + { + this.min = point; + this.max = point; + } + + public void Encapsulate(Vector4 point) + { + min = Vector4.Min(min, point); + max = Vector4.Max(max, point); + } + + public void Encapsulate(Aabb other) + { + min = Vector4.Min(min, other.min); + max = Vector4.Max(max, other.max); + } + + public void FromBounds(Bounds bounds, float thickness, bool is2D = false) + { + Vector3 s = Vector3.one * thickness; + min = bounds.min - s; + max = bounds.max + s; + if (is2D) + max[2] = min[2] = 0; + } + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/Aabb.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/Aabb.cs.meta new file mode 100644 index 000000000..242d31dd4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/Aabb.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4b6d58d9b0a8a4f7ea09067526d713cf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/AffineTransform.cs b/Assets/Obi/Scripts/Common/DataStructures/AffineTransform.cs new file mode 100644 index 000000000..6c8fa5f6e --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/AffineTransform.cs @@ -0,0 +1,34 @@ +using UnityEngine; + +namespace Obi +{ + public struct AffineTransform + { + public Vector4 translation; + public Vector4 scale; + public Quaternion rotation; + + public AffineTransform(Vector4 translation, Quaternion rotation, Vector4 scale) + { + // make sure there are good values in the 4th component: + translation[3] = 0; + scale[3] = 1; + + this.translation = translation; + this.rotation = rotation; + this.scale = scale; + } + + public void FromTransform(Transform source, bool is2D = false) + { + translation = source.position; + rotation = source.rotation; + scale = source.lossyScale; + + if (is2D) + { + translation[2] = 0; + } + } + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/AffineTransform.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/AffineTransform.cs.meta new file mode 100644 index 000000000..b15e7adca --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/AffineTransform.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c8eff617709c457a85387e2f72187aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/BVH.meta b/Assets/Obi/Scripts/Common/DataStructures/BVH.meta new file mode 100644 index 000000000..4dd39cc26 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/BVH.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3d141c0731e7c43e8be29d786670298c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/BVH/BIH.cs b/Assets/Obi/Scripts/Common/DataStructures/BVH/BIH.cs new file mode 100644 index 000000000..c770ed386 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/BVH/BIH.cs @@ -0,0 +1,262 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Obi +{ + public class BIH + { + public static BIHNode[] Build(ref IBounded[] elements, int maxDepth = 10, float maxOverlap = 0.7f) + { + List nodes = new List{ new BIHNode(0, elements.Length) }; + + // auxiliar variables to keep track of current tree depth: + int depth = 0; + int nodesToNextLevel = 1; + + var queue = new Queue(); + queue.Enqueue(0); + + while (queue.Count > 0) + { + // get current node: + int index = queue.Dequeue(); + var node = nodes[index]; + + // if this node contains enough elements, split it: + if (node.count > 2) + { + int start = node.start; + int end = start + (node.count - 1); + + // calculate bounding box of all elements: + Aabb b = elements[start].GetBounds(); + for (int k = start + 1; k <= end; ++k) + b.Encapsulate(elements[k].GetBounds()); + + // determine split axis (longest one): + Vector3 size = b.size; + int axis = node.axis = (size.x > size.y) ? + (size.x > size.z ? 0 : 2) : + (size.y > size.z ? 1 : 2); + + // place split plane at half the longest axis: + float pivot = b.min[axis] + size[axis] * 0.5f; + + // partition elements according to which side of the split plane they're at: + int j = HoarePartition(elements, start, end, pivot, ref node, axis); + + // create two child nodes: + var minChild = new BIHNode(start, j - start + 1); + var maxChild = new BIHNode(j + 1, end - j); + + // calculate child overlap: + float overlap = size[axis] > 0 ? Mathf.Max(node.min - node.max, 0) / size[axis] : 1; + + // guard against cases where all elements are on one side of the split plane, + // due to all having the same or very similar bounds as the entire group. + if (overlap <= maxOverlap && minChild.count > 0 && maxChild.count > 0) + { + node.firstChild = nodes.Count; + nodes[index] = node; + + queue.Enqueue(nodes.Count); + queue.Enqueue(nodes.Count + 1); + + // append child nodes to list: + nodes.Add(minChild); + nodes.Add(maxChild); + } + + // keep track of current depth: + if (--nodesToNextLevel == 0) + { + depth++; + if (depth >= maxDepth) + return nodes.ToArray(); + nodesToNextLevel = queue.Count; + } + } + } + return nodes.ToArray(); + } + + public static int HoarePartition(IBounded[] elements, int start, int end, float pivot, ref BIHNode node, int axis) + { + int i = start; + int j = end; + + while (i <= j) + { + while (i < end && elements[i].GetBounds().center[axis] < pivot) + node.min = Mathf.Max(node.min, elements[i++].GetBounds().max[axis]); + + while (j > start && elements[j].GetBounds().center[axis] > pivot) + node.max = Mathf.Min(node.max, elements[j--].GetBounds().min[axis]); + + if (i <= j) + { + node.min = Mathf.Max(node.min, elements[j].GetBounds().max[axis]); + node.max = Mathf.Min(node.max, elements[i].GetBounds().min[axis]); + ObiUtils.Swap(ref elements[i++], ref elements[j--]); + } + } + + return j; + } + + public static float DistanceToSurface(Triangle[] triangles, + Vector3[] vertices, + Vector3[] normals, + in BIHNode node, + in Vector3 point) + { + float minDistance = float.MaxValue; + int sign = 1; + + Vector3 pointOnTri; + Vector3 interpolatedNormal; + + for (int i = node.start; i < node.start + node.count; ++i) + { + Triangle t = triangles[i]; + + + ObiUtils.NearestPointOnTri(in vertices[t.i1], + in vertices[t.i2], + in vertices[t.i3], + in point, + out pointOnTri); + + Vector3 pointToTri = point - pointOnTri; + float sqrDistance = pointToTri.sqrMagnitude; + + if (sqrDistance < minDistance) + { + Vector3 bary = Vector3.zero; + ObiUtils.BarycentricCoordinates(in vertices[t.i1], in vertices[t.i2], in vertices[t.i3], in pointOnTri, ref bary); + ObiUtils.BarycentricInterpolation(in normals[t.i1], + in normals[t.i2], + in normals[t.i3], + in bary, + out interpolatedNormal); + + sign = ObiUtils.PureSign(pointToTri.x * interpolatedNormal.x + + pointToTri.y * interpolatedNormal.y + + pointToTri.z * interpolatedNormal.z); + + minDistance = sqrDistance; + } + } + + return Mathf.Sqrt(minDistance) * sign; + } + + public static float DistanceToSurface(BIHNode[] nodes, + Triangle[] triangles, + Vector3[] vertices, + Vector3[] normals, + in Vector3 point) + { + + if (nodes.Length > 0) + return DistanceToSurface(nodes, triangles, vertices, normals, in nodes[0], in point); + + return float.MaxValue; + } + + public static float DistanceToSurface(BIHNode[] nodes, + Triangle[] triangles, + Vector3[] vertices, + Vector3[] normals, + in BIHNode node, + in Vector3 point) + { + + float MinSignedDistance(float d1, float d2) + { + return (Mathf.Abs(d1) < Mathf.Abs(d2)) ? d1 : d2; + } + + if (node.firstChild >= 0) + { + /** + * If the current node is not a leaf, figure out which side of the split plane that contains the query point, and recurse down that side. + * You will get the index and distance to the closest triangle in that subtree. + * Then, check if the distance to the nearest triangle is closer to the query point than the distance between the query point and the split plane. + * If it is closer, there is no need to recurse down the other side of the KD tree and you can just return. + * Otherwise, you will need to recurse down the other way too, and return whichever result is closer. + */ + + float si = float.MaxValue; + float p = point[node.axis]; + + // child nodes overlap: + if (node.min > node.max) + { + // CASE 1: we are in the overlapping zone: recurse down both. + if (p <= node.min && p >= node.max) + { + si = MinSignedDistance(DistanceToSurface(nodes, triangles, vertices, normals, in nodes[node.firstChild], in point), + DistanceToSurface(nodes, triangles, vertices, normals, in nodes[node.firstChild + 1], in point)); + } + // CASE 2: to the right of left pivot, that is: in the right child only. + else if (p > node.min) + { + si = DistanceToSurface(nodes, triangles, vertices, normals, in nodes[node.firstChild + 1], in point); + + // only recurse down left child if nearest surface in right child is furthest than left pivot. + if (Mathf.Abs(si) > Mathf.Abs(p - node.min)) + si = MinSignedDistance(si, DistanceToSurface(nodes, triangles, vertices, normals, in nodes[node.firstChild], in point)); + } + // CASE 3: to the left of right pivot, that is: in the left child only. + else + { + si = DistanceToSurface(nodes, triangles, vertices, normals, nodes[node.firstChild], point); + + // only recurse down left child if nearest surface in right child is furthest than left pivot. + if (Mathf.Abs(si) > Mathf.Abs(node.max - p)) + si = MinSignedDistance(si, DistanceToSurface(nodes, triangles, vertices, normals, in nodes[node.firstChild + 1], in point)); + } + } + // child nodes do not overlap + else + { + // CASE 4: we are in the middle. just pick up one child (I chose right), get minimum, and if the other child pivot is nearer, recurse down it too. + // Just like case 2. + if (p > node.min && p < node.max) + { + si = DistanceToSurface(nodes, triangles, vertices, normals, in nodes[node.firstChild + 1], in point); + + // only recurse down left child if nearest surface in right child is furthest than left pivot. + if (Mathf.Abs(si) > Mathf.Abs(p - node.min)) + si = MinSignedDistance(si, DistanceToSurface(nodes, triangles, vertices, normals, in nodes[node.firstChild], in point)); + } + // CASE 5: in the left child. Just like case 3. + else if (p <= node.min) + { + si = DistanceToSurface(nodes, triangles, vertices, normals, in nodes[node.firstChild], in point); + + // only recurse down left child if nearest surface in right child is furthest than left pivot. + if (Mathf.Abs(si) > Mathf.Abs(node.max - p)) + si = MinSignedDistance(si, DistanceToSurface(nodes, triangles, vertices, normals, in nodes[node.firstChild + 1], in point)); + } + // CASE 6: in the right child. Just like case 2 + else if (p >= node.max) + { + si = DistanceToSurface(nodes, triangles, vertices, normals, in nodes[node.firstChild + 1], in point); + + // only recurse down left child if nearest surface in right child is furthest than left pivot. + if (Mathf.Abs(si) > Mathf.Abs(p - node.min)) + si = MinSignedDistance(si, DistanceToSurface(nodes, triangles, vertices, normals, in nodes[node.firstChild], in point)); + } + } + + return si; + } + else + return DistanceToSurface(triangles, vertices, normals, in node, point); + } + + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/BVH/BIH.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/BVH/BIH.cs.meta new file mode 100644 index 000000000..767c410f2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/BVH/BIH.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7d1727eb52e8f4619a5dc1084db72db0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/BVH/BIHNode.cs b/Assets/Obi/Scripts/Common/DataStructures/BVH/BIHNode.cs new file mode 100644 index 000000000..0599e5e39 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/BVH/BIHNode.cs @@ -0,0 +1,25 @@ +using System; + +namespace Obi +{ + public struct BIHNode + { + public int firstChild; /**< index of the first child node. The second one is right after the first.*/ + public int start; /**< index of the first element in this node.*/ + public int count; /**< amount of elements in this node.*/ + + public int axis; /**< axis of the split plane (0,1,2 = x,y,z)*/ + public float min; /**< minimum split plane*/ + public float max; /**< maximum split plane*/ + + public BIHNode(int start, int count) + { + firstChild = -1; + this.start = start; + this.count = count; + axis = 0; + min = float.MinValue; + max = float.MaxValue; + } + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/BVH/BIHNode.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/BVH/BIHNode.cs.meta new file mode 100644 index 000000000..618215bc2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/BVH/BIHNode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 128610647c5e64bc284f13abefda3a58 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/BVH/IBounded.cs b/Assets/Obi/Scripts/Common/DataStructures/BVH/IBounded.cs new file mode 100644 index 000000000..f6cf2b3c1 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/BVH/IBounded.cs @@ -0,0 +1,10 @@ +using System; +using UnityEngine; + +namespace Obi +{ + public interface IBounded + { + Aabb GetBounds(); + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/BVH/IBounded.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/BVH/IBounded.cs.meta new file mode 100644 index 000000000..376054976 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/BVH/IBounded.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 44a65f44be3e24beca5faaa7d2c28480 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/CellSpan.cs b/Assets/Obi/Scripts/Common/DataStructures/CellSpan.cs new file mode 100644 index 000000000..12e7453bb --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/CellSpan.cs @@ -0,0 +1,17 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public struct CellSpan + { + public VInt4 min; + public VInt4 max; + + public CellSpan(VInt4 min, VInt4 max) + { + this.min = min; + this.max = max; + } + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/CellSpan.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/CellSpan.cs.meta new file mode 100644 index 000000000..4b19c3ac8 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/CellSpan.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 786fc387d096a4921bd52253d3f51b02 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/ColliderRigidbody.cs b/Assets/Obi/Scripts/Common/DataStructures/ColliderRigidbody.cs new file mode 100644 index 000000000..10126adc9 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/ColliderRigidbody.cs @@ -0,0 +1,68 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public struct ColliderRigidbody + { + public Matrix4x4 inverseInertiaTensor; + public Vector4 velocity; + public Vector4 angularVelocity; + public Vector4 com; + public float inverseMass; + + private int pad0; + private int pad1; + private int pad2; + + public void FromRigidbody(ObiRigidbody rb) + { + bool kinematic = !Application.isPlaying || rb.unityRigidbody.isKinematic || rb.kinematicForParticles; + + //rotation = source.rotation; + velocity = rb.kinematicForParticles ? Vector3.zero : rb.linearVelocity; + angularVelocity = rb.kinematicForParticles ? Vector3.zero : rb.angularVelocity; + + // center of mass in unity is affected by local rotation and position, but not scale. We need it expressed in world space: + com = rb.unityRigidbody.position + rb.unityRigidbody.rotation * rb.unityRigidbody.centerOfMass; + + Vector3 invTensor = new Vector3((rb.unityRigidbody.constraints & RigidbodyConstraints.FreezeRotationX) != 0 ? 0 : 1 / rb.unityRigidbody.inertiaTensor.x, + (rb.unityRigidbody.constraints & RigidbodyConstraints.FreezeRotationY) != 0 ? 0 : 1 / rb.unityRigidbody.inertiaTensor.y, + (rb.unityRigidbody.constraints & RigidbodyConstraints.FreezeRotationZ) != 0 ? 0 : 1 / rb.unityRigidbody.inertiaTensor.z); + + // the inertia tensor is a diagonal matrix (Vector3) because it is expressed in the space generated by the principal axes of rotation (inertiaTensorRotation). + Vector3 inertiaTensor = kinematic ? Vector3.zero : invTensor; + + // calculate full world space inertia matrix: + Matrix4x4 rotation = Matrix4x4.Rotate(rb.unityRigidbody.rotation * rb.unityRigidbody.inertiaTensorRotation); + inverseInertiaTensor = rotation * Matrix4x4.Scale(inertiaTensor) * rotation.transpose; + + inverseMass = kinematic ? 0 : 1 / rb.unityRigidbody.mass; + + } + + public void FromRigidbody(ObiRigidbody2D rb) + { + + bool kinematic = !Application.isPlaying || rb.unityRigidbody.isKinematic || rb.kinematicForParticles; + velocity = rb.linearVelocity; + + // For some weird reason, in 2D angular velocity is measured in *degrees* per second, + // instead of radians. Seriously Unity, WTF?? + angularVelocity = new Vector4(0, 0, rb.angularVelocity * Mathf.Deg2Rad, 0); + + // center of mass in unity is affected by local rotation and poistion, but not scale. We need it expressed in world space: + com = rb.transform.position + rb.transform.rotation * rb.unityRigidbody.centerOfMass; + + Vector3 inertiaTensor = kinematic ? Vector3.zero : new Vector3(0, 0, (rb.unityRigidbody.constraints & RigidbodyConstraints2D.FreezeRotation) != 0 ? 0 : 1 / rb.unityRigidbody.inertia); + + Matrix4x4 rotation = Matrix4x4.Rotate(Quaternion.AngleAxis(rb.rotation, Vector3.forward)); + inverseInertiaTensor = rotation * Matrix4x4.Scale(inertiaTensor) * rotation.transpose; + + inverseMass = kinematic ? 0 : 1 / rb.unityRigidbody.mass; + + } + + + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/ColliderRigidbody.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/ColliderRigidbody.cs.meta new file mode 100644 index 000000000..ee3318973 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/ColliderRigidbody.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2273ddd528c3a44af9ef3f985a620e24 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/ColliderShape.cs b/Assets/Obi/Scripts/Common/DataStructures/ColliderShape.cs new file mode 100644 index 000000000..70ab4cdc9 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/ColliderShape.cs @@ -0,0 +1,34 @@ +using UnityEngine; + +namespace Obi +{ + public struct ColliderShape + { + public enum ShapeType + { + Sphere = 0, + Box = 1, + Capsule = 2, + Heightmap = 3, + TriangleMesh = 4, + EdgeMesh = 5, + SignedDistanceField = 6 + } + + public Vector4 center; + public Vector4 size; /**< box: size of the box in each axis. + sphere: radius of sphere (x,y,z), + capsule: radius (x), height(y), direction (z, can be 0, 1 or 2). + heightmap: width (x axis), height (y axis) and depth (z axis) in world units.*/ + public ShapeType type; + public float contactOffset; + + public int dataIndex; + public int rigidbodyIndex; // index of the associated rigidbody in the collision world. + public int materialIndex; // index of the associated material in the collision world. + + public int filter; // bitwise category/mask. + public int flags; // for now, only used for trigger (1) or regular collider (0). + public int is2D; // whether the collider is 2D (1) or 3D (0). + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/ColliderShape.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/ColliderShape.cs.meta new file mode 100644 index 000000000..9f1dc6e02 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/ColliderShape.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 38d82eae8f8744bdc9f0795c1fd3b317 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/CollisionMaterial.cs b/Assets/Obi/Scripts/Common/DataStructures/CollisionMaterial.cs new file mode 100644 index 000000000..082f99c67 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/CollisionMaterial.cs @@ -0,0 +1,34 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + + public struct CollisionMaterial + { + public float dynamicFriction; + public float staticFriction; + public float rollingFriction; + public float stickiness; + public float stickDistance; + public Oni.MaterialCombineMode frictionCombine; + public Oni.MaterialCombineMode stickinessCombine; + public int rollingContacts; + + public void FromObiCollisionMaterial(ObiCollisionMaterial material) + { + if (material != null) + { + dynamicFriction = material.dynamicFriction; + staticFriction = material.staticFriction; + stickiness = material.stickiness; + stickDistance = material.stickDistance; + rollingFriction = material.rollingFriction; + frictionCombine = material.frictionCombine; + stickinessCombine = material.stickinessCombine; + rollingContacts = material.rollingContacts ? 1 : 0; + } + } + + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/CollisionMaterial.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/CollisionMaterial.cs.meta new file mode 100644 index 000000000..9653b5b07 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/CollisionMaterial.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ed8262093b9b44e8abb2557ed2624c4d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList.meta new file mode 100644 index 000000000..c9416a7cd --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f5d490805c6e4ee6b39c067e26e490c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeAabbList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeAabbList.cs new file mode 100644 index 000000000..0c699a24c --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeAabbList.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeAabbList : ObiNativeList + { + public ObiNativeAabbList() { } + public ObiNativeAabbList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new Aabb(); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeAabbList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeAabbList.cs.meta new file mode 100644 index 000000000..398a60417 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeAabbList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 96e807cda064c47c1aed643600660143 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeAffineTransformList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeAffineTransformList.cs new file mode 100644 index 000000000..466b4f8d2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeAffineTransformList.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeAffineTransformList : ObiNativeList + { + public ObiNativeAffineTransformList() { } + public ObiNativeAffineTransformList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new AffineTransform(); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeAffineTransformList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeAffineTransformList.cs.meta new file mode 100644 index 000000000..c5ae9d09e --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeAffineTransformList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f741a9b23bfd4f55979eb1a18146388 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeBIHNodeList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeBIHNodeList.cs new file mode 100644 index 000000000..376276d25 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeBIHNodeList.cs @@ -0,0 +1,17 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeBIHNodeList : ObiNativeList + { + public ObiNativeBIHNodeList() { } + public ObiNativeBIHNodeList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new BIHNode(); + } + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeBIHNodeList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeBIHNodeList.cs.meta new file mode 100644 index 000000000..301def190 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeBIHNodeList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c960e0992a4cf4d7195a513c5fd5f550 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeBoneWeightList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeBoneWeightList.cs new file mode 100644 index 000000000..83c375513 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeBoneWeightList.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeBoneWeightList : ObiNativeList + { + public ObiNativeBoneWeightList() { } + public ObiNativeBoneWeightList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new BoneWeight1(); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeBoneWeightList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeBoneWeightList.cs.meta new file mode 100644 index 000000000..36daa8edd --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeBoneWeightList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 50b49a1cc8de340ebb8d6a89fb044c1d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeByteList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeByteList.cs new file mode 100644 index 000000000..800c3046b --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeByteList.cs @@ -0,0 +1,18 @@ +using System; + +namespace Obi +{ + [Serializable] + public class ObiNativeByteList : ObiNativeList + { + + public ObiNativeByteList() { } + public ObiNativeByteList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = 0; + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeByteList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeByteList.cs.meta new file mode 100644 index 000000000..ffe7d6fd4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeByteList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aefb86b129c07425fa244ada261f4184 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeCellSpanList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeCellSpanList.cs new file mode 100644 index 000000000..468759ceb --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeCellSpanList.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeCellSpanList : ObiNativeList + { + public ObiNativeCellSpanList() { } + public ObiNativeCellSpanList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new CellSpan(); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeCellSpanList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeCellSpanList.cs.meta new file mode 100644 index 000000000..f06f2c711 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeCellSpanList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 53a29ecfe0ecb4db3a344781b333776d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeColliderShapeList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeColliderShapeList.cs new file mode 100644 index 000000000..bce8165f1 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeColliderShapeList.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeColliderShapeList : ObiNativeList + { + public ObiNativeColliderShapeList() { } + public ObiNativeColliderShapeList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new ColliderShape(); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeColliderShapeList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeColliderShapeList.cs.meta new file mode 100644 index 000000000..22379f03f --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeColliderShapeList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 45031e9a1b74143c4a6df44e2b999373 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeCollisionMaterialList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeCollisionMaterialList.cs new file mode 100644 index 000000000..0f1a048ae --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeCollisionMaterialList.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeCollisionMaterialList : ObiNativeList + { + public ObiNativeCollisionMaterialList() { } + public ObiNativeCollisionMaterialList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new CollisionMaterial(); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeCollisionMaterialList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeCollisionMaterialList.cs.meta new file mode 100644 index 000000000..1c43e6aea --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeCollisionMaterialList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f6d32cd2f844a48cab0508f798fc1ff4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeColorList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeColorList.cs new file mode 100644 index 000000000..c6a61babf --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeColorList.cs @@ -0,0 +1,22 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeColorList : ObiNativeList + { + public ObiNativeColorList() { } + public ObiNativeColorList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = Color.white; + } + public ObiNativeColorList(int capacity, int alignment, Color defaultValue) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = defaultValue; + } + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeColorList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeColorList.cs.meta new file mode 100644 index 000000000..23dc2862c --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeColorList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 391ffe5ba25364d2393afabc3083daa1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeContactShapeList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeContactShapeList.cs new file mode 100644 index 000000000..d5ff11583 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeContactShapeList.cs @@ -0,0 +1,17 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeContactShapeList : ObiNativeList + { + public ObiNativeContactShapeList() { } + public ObiNativeContactShapeList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new Oni.Contact(); + } + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeContactShapeList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeContactShapeList.cs.meta new file mode 100644 index 000000000..ab5d80836 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeContactShapeList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5ac88e1dd7e0249b5b361d60655d8d88 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeDFNodeList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeDFNodeList.cs new file mode 100644 index 000000000..c19ee95fb --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeDFNodeList.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeDFNodeList : ObiNativeList + { + public ObiNativeDFNodeList() { } + public ObiNativeDFNodeList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new DFNode(); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeDFNodeList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeDFNodeList.cs.meta new file mode 100644 index 000000000..447524703 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeDFNodeList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 17462646d532945749479c75ba3cd0d8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeDistanceFieldHeaderList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeDistanceFieldHeaderList.cs new file mode 100644 index 000000000..a784f7774 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeDistanceFieldHeaderList.cs @@ -0,0 +1,17 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeDistanceFieldHeaderList : ObiNativeList + { + public ObiNativeDistanceFieldHeaderList() { } + public ObiNativeDistanceFieldHeaderList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new DistanceFieldHeader(); + } + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeDistanceFieldHeaderList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeDistanceFieldHeaderList.cs.meta new file mode 100644 index 000000000..198e874f0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeDistanceFieldHeaderList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1e18334e185814395aac025a1d4afe70 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeEdgeList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeEdgeList.cs new file mode 100644 index 000000000..6589654c9 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeEdgeList.cs @@ -0,0 +1,17 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeEdgeList : ObiNativeList + { + public ObiNativeEdgeList() { } + public ObiNativeEdgeList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new Edge(); + } + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeEdgeList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeEdgeList.cs.meta new file mode 100644 index 000000000..1d0141367 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeEdgeList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0d602b9fba6fc4e78a78b8dee0acd309 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeEdgeMeshHeaderList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeEdgeMeshHeaderList.cs new file mode 100644 index 000000000..6055829df --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeEdgeMeshHeaderList.cs @@ -0,0 +1,17 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeEdgeMeshHeaderList : ObiNativeList + { + public ObiNativeEdgeMeshHeaderList() { } + public ObiNativeEdgeMeshHeaderList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new EdgeMeshHeader(); + } + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeEdgeMeshHeaderList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeEdgeMeshHeaderList.cs.meta new file mode 100644 index 000000000..98f0f3d8e --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeEdgeMeshHeaderList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 474a95d0d9d37494f9ac5201e262b8a4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeFloatList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeFloatList.cs new file mode 100644 index 000000000..b1c418bf6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeFloatList.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeFloatList : ObiNativeList + { + public ObiNativeFloatList() { } + public ObiNativeFloatList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = 0; + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeFloatList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeFloatList.cs.meta new file mode 100644 index 000000000..332159d3d --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeFloatList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7cf0e80d841ca4425a99bc2d4beb3547 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeHeightFieldHeaderList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeHeightFieldHeaderList.cs new file mode 100644 index 000000000..1baeff23b --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeHeightFieldHeaderList.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeHeightFieldHeaderList : ObiNativeList + { + public ObiNativeHeightFieldHeaderList() { } + public ObiNativeHeightFieldHeaderList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new HeightFieldHeader(); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeHeightFieldHeaderList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeHeightFieldHeaderList.cs.meta new file mode 100644 index 000000000..412b35ad4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeHeightFieldHeaderList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 61e8d2ecda37e442aa8f24756395f12a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeInt4List.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeInt4List.cs new file mode 100644 index 000000000..c18c1821f --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeInt4List.cs @@ -0,0 +1,23 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeInt4List : ObiNativeList + { + public ObiNativeInt4List() { } + public ObiNativeInt4List(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new VInt4(0,0,0,0); + } + + public ObiNativeInt4List(int capacity, int alignment, VInt4 defaultValue) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = defaultValue; + } + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeInt4List.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeInt4List.cs.meta new file mode 100644 index 000000000..1a032a3fb --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeInt4List.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 18f572cdc044a4caabe29c40944c0987 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeIntList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeIntList.cs new file mode 100644 index 000000000..9b2704cbc --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeIntList.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeIntList : ObiNativeList + { + public ObiNativeIntList() { } + public ObiNativeIntList(int capacity = 8, int alignment = 16) : base(capacity,alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = 0; + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeIntList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeIntList.cs.meta new file mode 100644 index 000000000..be2264626 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeIntList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0f8a8fd8447dc458bab16dea3dfd5580 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeIntPtrList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeIntPtrList.cs new file mode 100644 index 000000000..6ac489c10 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeIntPtrList.cs @@ -0,0 +1,16 @@ +using System; +using UnityEngine; + +namespace Obi +{ + public class ObiNativeIntPtrList : ObiNativeList + { + public ObiNativeIntPtrList() { } + public ObiNativeIntPtrList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = IntPtr.Zero; + } + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeIntPtrList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeIntPtrList.cs.meta new file mode 100644 index 000000000..4d49d8b6d --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeIntPtrList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6201c3f1582cd43deaaf41286f802126 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeList.cs new file mode 100644 index 000000000..4d27307a7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeList.cs @@ -0,0 +1,442 @@ +using System; +using System.Text; +using System.Collections.Generic; +using UnityEngine; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using System.Collections; + +namespace Obi +{ + public unsafe abstract class ObiNativeList : IEnumerable, IDisposable, ISerializationCallbackReceiver where T : struct + { + public T[] serializedContents; + protected void* m_AlignedPtr = null; + + protected int m_Stride; + protected int m_Capacity; + protected int m_Count; + [SerializeField] protected int m_AlignBytes = 16; + +#if ENABLE_UNITY_COLLECTIONS_CHECKS + protected AtomicSafetyHandle m_SafetyHandle; +#endif + protected ComputeBuffer m_ComputeBuffer; + + public int count + { + set + { + if (value != m_Count) + { + // we should not use ResizeUninitialized as it would destroy all current data. + // we first ensure we can hold the previous count, and then set the new one. + EnsureCapacity(m_Count); + m_Count = Mathf.Min(m_Capacity, value); + } + } + get { return m_Count; } + } + + public int capacity + { + set + { + if (value != m_Capacity) + ChangeCapacity(value); + } + get { return m_Capacity; } + } + + public bool isCreated + { + get { return m_AlignedPtr != null; } + } + + public T this[int index] + { + get + { + return UnsafeUtility.ReadArrayElementWithStride(m_AlignedPtr, index, m_Stride); + } + set + { + UnsafeUtility.WriteArrayElementWithStride(m_AlignedPtr, index, m_Stride, value); + + if (m_ComputeBuffer != null) + m_ComputeBuffer.SetData(AsNativeArray(), index, index, 1); + } + } + + // Declare parameterless constructor, called by Unity upon deserialization. + protected ObiNativeList() + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + m_SafetyHandle = AtomicSafetyHandle.Create(); +#endif + } + + public ObiNativeList(int capacity = 8, int alignment = 16) + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + m_SafetyHandle = AtomicSafetyHandle.Create(); +#endif + m_AlignBytes = alignment; + ChangeCapacity(capacity); + } + + ~ObiNativeList() + { + Dispose(false); + } + + protected void Dispose(bool disposing) + { + if (isCreated) + { + + // dispose of compuse buffer representation: + if (m_ComputeBuffer != null) + { + m_ComputeBuffer.Dispose(); + } + + // free unmanaged memory buffer: + UnsafeUtility.Free(m_AlignedPtr, Allocator.Persistent); + m_AlignedPtr = null; + } +#if ENABLE_UNITY_COLLECTIONS_CHECKS + // dispose of atomic safety handle: + AtomicSafetyHandle.CheckDeallocateAndThrow(m_SafetyHandle); + AtomicSafetyHandle.Release(m_SafetyHandle); +#endif + } + + public void Dispose() + { + Dispose(true); + } + + public void OnBeforeSerialize() + { + if (isCreated) + { + // create a new managed array to serialize the data: + serializedContents = new T[m_Count]; + + // pin the managed array and get its address: + ulong serializedContentsHandle; + var serializedContentsAddress = UnsafeUtility.PinGCArrayAndGetDataAddress(serializedContents, out serializedContentsHandle); + + // copy data over to the managed array: + UnsafeUtility.MemCpy(serializedContentsAddress, m_AlignedPtr, m_Count * m_Stride); + + // unpin the managed array: + UnsafeUtility.ReleaseGCObject(serializedContentsHandle); + } + } + + public void OnAfterDeserialize() + { + if (serializedContents != null) + { + // resize to receive the serialized data: + ResizeUninitialized(serializedContents.Length); + + // pin the managed array and get its address: + ulong serializedContentsHandle; + var serializedContentsAddress = UnsafeUtility.PinGCArrayAndGetDataAddress(serializedContents, out serializedContentsHandle); + + // copy data from the managed array: + UnsafeUtility.MemCpy(m_AlignedPtr, serializedContentsAddress, m_Count * m_Stride); + + // unpin the managed array: + UnsafeUtility.ReleaseGCObject(serializedContentsHandle); + } + } + + // Reinterprets the data in the list as a native array. + public NativeArray AsNativeArray() where U : struct + { + return AsNativeArray(m_Count); + } + + // Reinterprets the data in the list as a native array. + public NativeArray AsNativeArray(int arrayLength) where U : struct + { + unsafe + { + NativeArray array = NativeArrayUnsafeUtility.ConvertExistingDataToNativeArray(m_AlignedPtr, arrayLength, Allocator.None); + +#if ENABLE_UNITY_COLLECTIONS_CHECKS + NativeArrayUnsafeUtility.SetAtomicSafetyHandle(ref array, m_SafetyHandle); +#endif + return array; + } + } + + // Reinterprets the data in the list as a compute buffer. Note: This also calls AsNativeArray() internally, to be able to pass the raw pointer to the compute buffer + public ComputeBuffer AsComputeBuffer() where U : struct + { + if (m_ComputeBuffer != null) + { + m_ComputeBuffer.Dispose(); + } + + m_ComputeBuffer = new ComputeBuffer(m_Count, m_Stride); + m_ComputeBuffer.SetData(AsNativeArray()); + return m_ComputeBuffer; + } + + protected void ChangeCapacity(int newCapacity) + { + // allocate a new buffer: + m_Stride = UnsafeUtility.SizeOf(); + var newAlignedPtr = UnsafeUtility.Malloc(newCapacity * m_Stride, 16, Allocator.Persistent); + + // if there was a previous allocation: + if (isCreated) + { + // copy contents from previous memory region + unsafe + { + UnsafeUtility.MemCpy(newAlignedPtr, m_AlignedPtr, Mathf.Min(newCapacity, m_Capacity) * m_Stride); + } + + // free previous memory region + UnsafeUtility.Free(m_AlignedPtr, Allocator.Persistent); + } + + // get hold of new pointers/capacity. + m_AlignedPtr = newAlignedPtr; + m_Capacity = newCapacity; + } + + public bool Compare(ObiNativeList other) + { + if (other == null || !isCreated || !other.isCreated) + throw new ArgumentNullException(); + + if (m_Count != other.m_Count) + return false; + + return UnsafeUtility.MemCmp(m_AlignedPtr, other.m_AlignedPtr, m_Count * m_Stride) == 0; + } + + public void CopyFrom(ObiNativeList source) + { + if (source == null || !isCreated || !source.isCreated) + throw new ArgumentNullException(); + + if (m_Count < source.m_Count) + throw new ArgumentOutOfRangeException(); + + UnsafeUtility.MemCpy(m_AlignedPtr, source.m_AlignedPtr, source.count * m_Stride); + } + + public void CopyFrom(ObiNativeList source, int sourceIndex, int destIndex, int length) + { + if (source == null || !isCreated || !source.isCreated) + throw new ArgumentNullException(); + + if (length <= 0 || source.m_Count == 0) + return; + + if (sourceIndex >= source.m_Count || sourceIndex < 0 || destIndex >= m_Count || destIndex < 0 || + sourceIndex + length > source.m_Count || destIndex + length > m_Count) + throw new ArgumentOutOfRangeException(); + + void* sourceAddress = source.AddressOfElement(sourceIndex); + void* destAddress = AddressOfElement(destIndex); + UnsafeUtility.MemCpy(destAddress, sourceAddress, length * m_Stride); + + } + + public void CopyReplicate(T value, int destIndex, int length) + { + if (length <= 0) return; + + if (!isCreated) + throw new ArgumentNullException(); + + if (destIndex >= m_Count || destIndex < 0 || destIndex + length > m_Count) + throw new ArgumentOutOfRangeException(); + + void* sourceAddress = UnsafeUtility.AddressOf(ref value); + void* destAddress = AddressOfElement(destIndex); + UnsafeUtility.MemCpyReplicate(destAddress, sourceAddress, m_Stride, length); + } + + public void CopyTo(T[] dest, int sourceIndex, int length) + { + if (length <= 0) return; + + if (dest == null || !isCreated) + throw new ArgumentNullException(); + + if (sourceIndex < 0 || sourceIndex >= m_Count || sourceIndex + length > m_Count || length > dest.Length) + throw new ArgumentOutOfRangeException(); + + ulong destHandle; + void* sourceAddress = AddressOfElement(sourceIndex); + void* destAddress = UnsafeUtility.PinGCArrayAndGetDataAddress(dest, out destHandle); + UnsafeUtility.MemCpy(destAddress, sourceAddress, length * m_Stride); + + UnsafeUtility.ReleaseGCObject(destHandle); + } + + public void Clear() + { + m_Count = 0; + } + + public void Add(T item) + { + EnsureCapacity(m_Count + 1); + this[m_Count++] = item; + } + + public void AddRange(IEnumerable enumerable) + { + ICollection collection = enumerable as ICollection; + if (collection != null && collection.Count > 0) + { + EnsureCapacity(m_Count + collection.Count); + } + + using (IEnumerator enumerator = enumerable.GetEnumerator()) + { + while (enumerator.MoveNext()) + { + Add(enumerator.Current); + } + } + } + + public void RemoveRange(int index, int count) + { + if (index < 0 || count < 0 || index + count > m_Count) + throw new ArgumentOutOfRangeException(); + + for (int i = index; i < m_Count - count; ++i) + this[i] = this[i + count]; + + m_Count -= count; + } + + public void RemoveAt(int index) + { + if (index < 0 || index >= count) + throw new ArgumentOutOfRangeException(); + + for (int i = index; i < m_Count - 1; ++i) + this[i] = this[i + 1]; + + m_Count--; + } + + /** + * Ensures a minimal capacity of count elements, then sets the new count. Useful when passing the backing array to C++ + * for being filled with new data. + */ + public bool ResizeUninitialized(int newCount) + { + newCount = Mathf.Max(0, newCount); + bool realloc = EnsureCapacity(newCount); + m_Count = newCount; + return realloc; + } + + public bool ResizeInitialized(int newCount, T value = default(T)) + { + newCount = Mathf.Max(0, newCount); + + bool initialize = newCount >= m_Capacity || !isCreated; + bool realloc = EnsureCapacity(newCount); + + if (initialize) + { + void* sourceAddress = UnsafeUtility.AddressOf(ref value); + void* destAddress = AddressOfElement(m_Count); + UnsafeUtility.MemCpyReplicate(destAddress, sourceAddress, m_Stride, m_Capacity - m_Count); + } + + m_Count = newCount; + + return realloc; + } + + public bool EnsureCapacity(int min) + { + if (min >= m_Capacity || !isCreated) + { + ChangeCapacity(min * 2); + return true; + } + return false; + } + + public void WipeToZero() + { + unsafe + { + if (isCreated) + UnsafeUtility.MemClear(m_AlignedPtr, count * m_Stride); + } + } + + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append('['); + + for (int t = 0; t < m_Count; t++) + { + sb.Append(this[t].ToString()); + + if (t < (m_Count - 1)) sb.Append(','); + + } + sb.Append(']'); + return sb.ToString(); + } + + public void* AddressOfElement(int index) + { + // UnsafeUtility.AddressOf(ref UnsafeUtilityEx.ArrayElementAsRef(m_AlignedPtr, m_Count)); + return (void*) ((byte*)m_AlignedPtr + m_Stride * index); + } + + public IntPtr GetIntPtr() + { + if (isCreated) + return new IntPtr(m_AlignedPtr); + return IntPtr.Zero; + } + + public void Swap(int index1, int index2) + { + // check to avoid out of bounds access: + if (index1 >= 0 && index1 < count && index2 >= 0 && index2 < count) + { + var aux = this[index1]; + this[index1] = this[index2]; + this[index2] = aux; + } + } + + public IEnumerator GetEnumerator() + { + for (int i = 0; i < count; ++i) + { + yield return this[i]; + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + return this.GetEnumerator(); + } + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeList.cs.meta new file mode 100644 index 000000000..6bfb7bb8f --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: be1183504e86c409d97f706fcfcb0b3f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeMatrix4x4List.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeMatrix4x4List.cs new file mode 100644 index 000000000..32d189542 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeMatrix4x4List.cs @@ -0,0 +1,16 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeMatrix4x4List : ObiNativeList + { + public ObiNativeMatrix4x4List(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = Matrix4x4.identity; + } + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeMatrix4x4List.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeMatrix4x4List.cs.meta new file mode 100644 index 000000000..8e6aebecc --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeMatrix4x4List.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f6b7295a6ebb4475fb050c4c5b3770cc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQuaternionList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQuaternionList.cs new file mode 100644 index 000000000..c8552ff3e --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQuaternionList.cs @@ -0,0 +1,24 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeQuaternionList : ObiNativeList + { + public ObiNativeQuaternionList() { } + public ObiNativeQuaternionList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = Quaternion.identity; + } + + public ObiNativeQuaternionList(int capacity, int alignment, Quaternion defaultValue) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = defaultValue; + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQuaternionList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQuaternionList.cs.meta new file mode 100644 index 000000000..c60a0807b --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQuaternionList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6bad311b87fb6408793370e029c1d625 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQueryResultList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQueryResultList.cs new file mode 100644 index 000000000..d82e9de0a --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQueryResultList.cs @@ -0,0 +1,17 @@ +using System; + +namespace Obi +{ + [Serializable] + public class ObiNativeQueryResultList : ObiNativeList + { + + public ObiNativeQueryResultList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new QueryResult(); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQueryResultList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQueryResultList.cs.meta new file mode 100644 index 000000000..694b63a3d --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQueryResultList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 415658bfe3b0f45c285a26d383086a70 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQueryShapeList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQueryShapeList.cs new file mode 100644 index 000000000..c7aa54f7e --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQueryShapeList.cs @@ -0,0 +1,17 @@ +using System; + +namespace Obi +{ + [Serializable] + public class ObiNativeQueryShapeList : ObiNativeList + { + + public ObiNativeQueryShapeList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new QueryShape(); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQueryShapeList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQueryShapeList.cs.meta new file mode 100644 index 000000000..c148868c0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeQueryShapeList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a1b44ba5a49564f81bc8eeebbee71cf3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeRigidbodyList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeRigidbodyList.cs new file mode 100644 index 000000000..221ff10f2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeRigidbodyList.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeRigidbodyList : ObiNativeList + { + public ObiNativeRigidbodyList() { } + public ObiNativeRigidbodyList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new ColliderRigidbody(); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeRigidbodyList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeRigidbodyList.cs.meta new file mode 100644 index 000000000..d5811a353 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeRigidbodyList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 28ae021335a854c3eb91c500cd4c77b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeTriangleList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeTriangleList.cs new file mode 100644 index 000000000..6fd173aa1 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeTriangleList.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeTriangleList : ObiNativeList + { + public ObiNativeTriangleList() { } + public ObiNativeTriangleList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new Triangle(); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeTriangleList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeTriangleList.cs.meta new file mode 100644 index 000000000..6c43dfc5a --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeTriangleList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0eda4a24fce5949d284395fe3a782477 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeTriangleMeshHeaderList.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeTriangleMeshHeaderList.cs new file mode 100644 index 000000000..ed34c97bb --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeTriangleMeshHeaderList.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeTriangleMeshHeaderList : ObiNativeList + { + public ObiNativeTriangleMeshHeaderList() { } + public ObiNativeTriangleMeshHeaderList(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = new TriangleMeshHeader(); + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeTriangleMeshHeaderList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeTriangleMeshHeaderList.cs.meta new file mode 100644 index 000000000..f0ba2517e --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeTriangleMeshHeaderList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b7289725194bb4368a4ac8e6cd9a7062 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector2List.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector2List.cs new file mode 100644 index 000000000..94f9c6b5c --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector2List.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeVector2List : ObiNativeList + { + public ObiNativeVector2List() { } + public ObiNativeVector2List(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = Vector2.zero; + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector2List.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector2List.cs.meta new file mode 100644 index 000000000..f62d13ea0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector2List.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 097972b931df946398eb40913011ada0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector3List.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector3List.cs new file mode 100644 index 000000000..4fb3b0002 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector3List.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeVector3List : ObiNativeList + { + public ObiNativeVector3List() { } + public ObiNativeVector3List(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = Vector3.zero; + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector3List.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector3List.cs.meta new file mode 100644 index 000000000..c14bf94ed --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector3List.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fb8db19bcf3ce468786ed448ea6821d4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector4List.cs b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector4List.cs new file mode 100644 index 000000000..2f72c6381 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector4List.cs @@ -0,0 +1,36 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [Serializable] + public class ObiNativeVector4List : ObiNativeList + { + public ObiNativeVector4List() { } + public ObiNativeVector4List(int capacity = 8, int alignment = 16) : base(capacity, alignment) + { + for (int i = 0; i < capacity; ++i) + this[i] = Vector4.zero; + } + + + public Vector3 GetVector3(int index) + { + unsafe + { + byte* start = (byte*)m_AlignedPtr + index * sizeof(Vector4); + return *(Vector3*)start; + } + } + + public void SetVector3(int index, Vector3 value) + { + unsafe + { + byte* start = (byte*)m_AlignedPtr + index * sizeof(Vector4); + *(Vector3*)start = value; + } + } + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector4List.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector4List.cs.meta new file mode 100644 index 000000000..681b0b726 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeVector4List.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7a1016daf70074bd790b5a278c314263 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/ObiList.cs b/Assets/Obi/Scripts/Common/DataStructures/ObiList.cs new file mode 100644 index 000000000..0a44ef0d7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/ObiList.cs @@ -0,0 +1,165 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + /** + * Custom IList implementation that allows access to the underlying raw array, for efficient C++ interop. Also + * includes some auxiliar methods that make it easier and faster to send data back and forth between C# and C++, as + * well as deal with accesing the contents of the list directly without a copy. + */ + public class ObiList : IList + { + private T[] data = new T[16]; + private int count = 0; + + #region Implementation of IEnumerable + + public IEnumerator GetEnumerator() + { + for (int i = 0; i < count;++i) + yield return data[i]; + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + #endregion + + #region Implementation of ICollection + + public void Add(T item) + { + EnsureCapacity(count + 1); + data[count++] = item; + } + + public void Clear() + { + count = 0; + } + + public bool Contains(T item) + { + for (int i = 0; i < count; ++i) + if (data[i].Equals(item)) + return true; + return false; + } + + public void CopyTo(T[] array, int arrayIndex) + { + if (array == null) + throw new ArgumentNullException(); + + if (array.Length-arrayIndex < count) + throw new ArgumentException(); + + Array.Copy(data,0,array,arrayIndex,count); + } + + public bool Remove(T item) + { + bool found = false; + for (int i = 0; i < count; ++i) + { + // Look for the element, and mark it as found. + if (!found && data[i].Equals(item)) + found = true; + + //If we found the element and are not at the last element, displace the element 1 position backwards. + if (found && i < count-1) + { + data[i] = data[i+1]; + } + } + + // If we found and removed the element, reduce the element count by 1. + if (found) + count--; + + return found; + } + + public int Count + { + get { return count; } + } + + public bool IsReadOnly + { + get { return false; } + } + + #endregion + + #region Implementation of IList + + public int IndexOf(T item) + { + return Array.IndexOf(data,item); + } + + public void Insert(int index, T item) + { + if (index < 0 || index > count) + throw new ArgumentOutOfRangeException(); + + EnsureCapacity(++count); + + for (int i = count-1; i > index; ++i) + { + data[i] = data[i-1]; + } + + data[index] = item; + } + + public void RemoveAt(int index) + { + for (int i = index; i < count; ++i) + { + if (i < count-1) + { + data[i] = data[i+1]; + } + } + + count--; + } + + public T this[int index] + { + get { return data[index]; } + set { data[index] = value; } + } + + #endregion + + #region Added stuff + + public T[] Data{ + get{return data;} + } + + /** + * Ensures a minimal capacity of count elements, then sets the new count. Useful when passing the backing array to C++ + * for being filled with new data. + */ + public void SetCount(int count){ + EnsureCapacity(count); + this.count = count; + } + + public void EnsureCapacity(int capacity){ + if (capacity >= data.Length) + Array.Resize(ref data,capacity*2); + } + + #endregion + } +} + diff --git a/Assets/Obi/Scripts/Common/DataStructures/ObiList.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/ObiList.cs.meta new file mode 100644 index 000000000..c47f6adcd --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/ObiList.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d8100b324be8f46cc9578fd52193a876 +timeCreated: 1513467715 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/ParticlePair.cs b/Assets/Obi/Scripts/Common/DataStructures/ParticlePair.cs new file mode 100644 index 000000000..18ab9f1ff --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/ParticlePair.cs @@ -0,0 +1,24 @@ +using UnityEngine; +using System.Collections; + + +namespace Obi +{ + public struct ParticlePair + { + public int first; + public int second; + + public ParticlePair(int first, int second) + { + this.first = first; + this.second = second; + } + + public int this[int index] + { + get { return index == 0 ? first : second; } + set { if (index == 0) first = value; else second = value; } + } + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/ParticlePair.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/ParticlePair.cs.meta new file mode 100644 index 000000000..03bca0884 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/ParticlePair.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 248fe94c499654ccf8bee67c72942dde +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/Queries.meta b/Assets/Obi/Scripts/Common/DataStructures/Queries.meta new file mode 100644 index 000000000..a8d87e4f6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/Queries.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 10c69aca53bad420799af0abb9f185ea +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/Queries/QueryResult.cs b/Assets/Obi/Scripts/Common/DataStructures/Queries/QueryResult.cs new file mode 100644 index 000000000..d165b565c --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/Queries/QueryResult.cs @@ -0,0 +1,16 @@ +using UnityEngine; +using System.Runtime.InteropServices; + +namespace Obi +{ + [StructLayout(LayoutKind.Sequential, Size = 64)] + public struct QueryResult + { + public Vector4 simplexBary; /**< Barycentric coords of nearest point in simplex */ + public Vector4 queryPoint; /**< Nearest point in query shape*/ + public Vector4 normal; /**< Closest direction between simplex and query shape. */ + public float distance; /**< Distance between simplex and query shape.*/ + public int simplexIndex; /**< Index of the simplex in the solver.*/ + public int queryIndex; /**< Index of the query that spawned this result.*/ + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/Queries/QueryResult.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/Queries/QueryResult.cs.meta new file mode 100644 index 000000000..7420cabfb --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/Queries/QueryResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a2effdf7f81654462ac5af1735de92eb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/Queries/QueryShape.cs b/Assets/Obi/Scripts/Common/DataStructures/Queries/QueryShape.cs new file mode 100644 index 000000000..a035e46c0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/Queries/QueryShape.cs @@ -0,0 +1,36 @@ +using UnityEngine; + +namespace Obi +{ + public struct QueryShape + { + public enum QueryType + { + Sphere = 0, + Box = 1, + Ray = 2, + } + + public Vector4 center; /**< box: center of the box in solver space. + sphere: center of the sphere in solver space,. + ray: start of the ray in solver space.*/ + + public Vector4 size; /**< box: size of the box in each axis. + sphere: radius of sphere (x,y,z), + ray: end of the line segment in solver space.*/ + public QueryType type; + public float contactOffset; + public float maxDistance; // minimum distance around the shape to look for. + public int filter; + + public QueryShape(QueryType type, Vector3 center, Vector3 size, float contactOffset, float distance, int filter) + { + this.type = type; + this.center = center; + this.size = size; + this.contactOffset = contactOffset; + this.maxDistance = distance; + this.filter = filter; + } + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/Queries/QueryShape.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/Queries/QueryShape.cs.meta new file mode 100644 index 000000000..7276f4498 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/Queries/QueryShape.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6d126422956eb46eaa20e28b8d59122c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/SimplexCounts.cs b/Assets/Obi/Scripts/Common/DataStructures/SimplexCounts.cs new file mode 100644 index 000000000..c9b8e2be0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/SimplexCounts.cs @@ -0,0 +1,47 @@ +using UnityEngine; +using System.Collections; + + +namespace Obi +{ + public struct SimplexCounts + { + public int pointCount; + public int edgeCount; + public int triangleCount; + + public int simplexCount + { + get { return pointCount + edgeCount + triangleCount; } + } + + public SimplexCounts(int pointCount, int edgeCount, int triangleCount) + { + this.pointCount = pointCount; + this.edgeCount = edgeCount; + this.triangleCount = triangleCount; + } + + public int GetSimplexStartAndSize(int index, out int size) + { + if (index < pointCount) + { + size = 1; + return index; + } + else if (index < pointCount + edgeCount) + { + size = 2; + return pointCount + (index - pointCount) * 2; + } + else if (index < simplexCount) + { + size = 3; + int triStart = pointCount + edgeCount * 2; + return triStart + (index - pointCount - edgeCount) * 3; + } + size = 0; + return 0; + } + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/SimplexCounts.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/SimplexCounts.cs.meta new file mode 100644 index 000000000..f4cb67466 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/SimplexCounts.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a445a209f673411391c60adfe8b4766 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/VInt4.cs b/Assets/Obi/Scripts/Common/DataStructures/VInt4.cs new file mode 100644 index 000000000..49a11bdf7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/VInt4.cs @@ -0,0 +1,33 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Runtime.InteropServices; + +namespace Obi +{ + [Serializable] + [StructLayout(LayoutKind.Sequential)] + public struct VInt4 + { + public int x; + public int y; + public int z; + public int w; + + public VInt4(int x, int y, int z, int w) + { + this.x = x; + this.y = y; + this.z = z; + this.w = w; + } + + public VInt4(int x) + { + this.x = x; + this.y = x; + this.z = x; + this.w = x; + } + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/VInt4.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/VInt4.cs.meta new file mode 100644 index 000000000..b30848186 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/VInt4.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4509cf294c582479790fe1d6307b218c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/Voxelization.meta b/Assets/Obi/Scripts/Common/DataStructures/Voxelization.meta new file mode 100644 index 000000000..a9e8fd40b --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/Voxelization.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dfdbb639033814f7c94f5ad7f5bdb809 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/Voxelization/MeshVoxelizer.cs b/Assets/Obi/Scripts/Common/DataStructures/Voxelization/MeshVoxelizer.cs new file mode 100644 index 000000000..c8224bfe9 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/Voxelization/MeshVoxelizer.cs @@ -0,0 +1,429 @@ + +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Obi +{ + + /** + * Helper class that voxelizes a mesh. + */ + [Serializable] + public class MeshVoxelizer + { + [Flags] + public enum Voxel + { + Empty = 0, + Inside = 1 << 0, + Boundary = 1 << 1, + Outside = 1 << 2, + } + + public readonly static Vector3Int[] fullNeighborhood = + { + // face neighbors: + new Vector3Int(-1,0,0), + new Vector3Int(1,0,0), + new Vector3Int(0,-1,0), + new Vector3Int(0,1,0), + new Vector3Int(0,0,-1), + new Vector3Int(0,0,1), + + // edge neighbors: + new Vector3Int(-1,-1,0), + new Vector3Int(-1,0,-1), + new Vector3Int(-1,0,1), + new Vector3Int(-1,1,0), + new Vector3Int(0,-1,-1), + new Vector3Int(0,-1,1), + new Vector3Int(0,1,-1), + new Vector3Int(0,1,1), + new Vector3Int(1,-1,0), + new Vector3Int(1,0,-1), + new Vector3Int(1,0,1), + new Vector3Int(1,1,0), + + // vertex neighbors: + new Vector3Int(-1,-1,-1), + new Vector3Int(-1,-1,1), + new Vector3Int(-1,1,-1), + new Vector3Int(-1,1,1), + new Vector3Int(1,-1,-1), + new Vector3Int(1,-1,1), + new Vector3Int(1,1,-1), + new Vector3Int(1,1,1) + }; + + public readonly static Vector3Int[] edgefaceNeighborhood = + { + new Vector3Int(-1,-1,0), + new Vector3Int(-1,0,-1), + new Vector3Int(-1,0,0), + new Vector3Int(-1,0,1), + new Vector3Int(-1,1,0), + new Vector3Int(0,-1,-1), + new Vector3Int(0,-1,0), + new Vector3Int(0,-1,1), + new Vector3Int(0,0,-1), + new Vector3Int(0,0,1), + new Vector3Int(0,1,-1), + new Vector3Int(0,1,0), + new Vector3Int(0,1,1), + new Vector3Int(1,-1,0), + new Vector3Int(1,0,-1), + new Vector3Int(1,0,0), + new Vector3Int(1,0,1), + new Vector3Int(1,1,0) + }; + + public readonly static Vector3Int[] faceNeighborhood = +{ + new Vector3Int(-1,0,0), + new Vector3Int(1,0,0), + new Vector3Int(0,-1,0), + new Vector3Int(0,1,0), + new Vector3Int(0,0,-1), + new Vector3Int(0,0,1) + }; + + public readonly static Vector3Int[] edgeNeighborhood = + { + new Vector3Int(-1,-1,0), + new Vector3Int(-1,0,-1), + new Vector3Int(-1,0,1), + new Vector3Int(-1,1,0), + new Vector3Int(0,-1,-1), + new Vector3Int(0,-1,1), + new Vector3Int(0,1,-1), + new Vector3Int(0,1,1), + new Vector3Int(1,-1,0), + new Vector3Int(1,0,-1), + new Vector3Int(1,0,1), + new Vector3Int(1,1,0) + }; + + public readonly static Vector3Int[] vertexNeighborhood = + { + new Vector3Int(-1,-1,-1), + new Vector3Int(-1,-1,1), + new Vector3Int(-1,1,-1), + new Vector3Int(-1,1,1), + new Vector3Int(1,-1,-1), + new Vector3Int(1,-1,1), + new Vector3Int(1,1,-1), + new Vector3Int(1,1,1) + }; + + [NonSerialized] public Mesh input; + + [HideInInspector][SerializeField] private Voxel[] voxels; + public float voxelSize; + public Vector3Int resolution; + + private List[] triangleIndices; // temporary structure to hold triangles overlapping each voxel. + private Vector3Int origin; + + public Vector3Int Origin + { + get { return origin; } + } + + public int voxelCount + { + get { return resolution.x * resolution.y * resolution.z; } + } + + public MeshVoxelizer(Mesh input, float voxelSize) + { + this.input = input; + this.voxelSize = voxelSize; + } + + public Voxel this[int x, int y, int z] + { + get { return voxels[GetVoxelIndex(x, y, z)]; } + set { voxels[GetVoxelIndex(x, y, z)] = value; } + } + + public float GetDistanceToNeighbor(int i) + { + if (i > 17) return ObiUtils.sqrt3 * voxelSize; + if (i > 5) return ObiUtils.sqrt2 * voxelSize; + return voxelSize; + } + + public int GetVoxelIndex(int x, int y, int z) + { + return x + resolution.x * (y + resolution.y * z); + } + + public Vector3 GetVoxelCenter(in Vector3Int coords) + { + return new Vector3(Origin.x + coords.x + 0.5f, + Origin.y + coords.y + 0.5f, + Origin.z + coords.z + 0.5f) * voxelSize; + } + + private Bounds GetTriangleBounds(in Vector3 v1, in Vector3 v2, in Vector3 v3) + { + Bounds b = new Bounds(v1, Vector3.zero); + b.Encapsulate(v2); + b.Encapsulate(v3); + return b; + } + + public List GetTrianglesOverlappingVoxel(int voxelIndex) + { + if (voxelIndex >= 0 && voxelIndex < triangleIndices.Length) + return triangleIndices[voxelIndex]; + return null; + } + + public Vector3Int GetPointVoxel(in Vector3 point) + { + return new Vector3Int(Mathf.FloorToInt(point.x / voxelSize), + Mathf.FloorToInt(point.y / voxelSize), + Mathf.FloorToInt(point.z / voxelSize)); + } + + public bool VoxelExists(in Vector3Int coords) + { + return VoxelExists(coords.x, coords.y, coords.z); + } + + public bool VoxelExists(int x, int y, int z) + { + return x >= 0 && y >= 0 && z >= 0 && + x < resolution.x && + y < resolution.y && + z < resolution.z; + } + + private void AppendOverlappingVoxels(in Bounds bounds, in Vector3 v1, in Vector3 v2, in Vector3 v3, int triangleIndex) + { + + Vector3Int min = GetPointVoxel(bounds.min); + Vector3Int max = GetPointVoxel(bounds.max); + + for (int x = min.x; x <= max.x; ++x) + for (int y = min.y; y <= max.y; ++y) + for (int z = min.z; z <= max.z; ++z) + { + Bounds voxel = new Bounds(new Vector3(x + 0.5f, y + 0.5f, z + 0.5f) * voxelSize, Vector3.one * voxelSize); + + if (IsIntersecting(voxel, v1, v2, v3)) + { + int index = GetVoxelIndex(x - origin.x, y - origin.y, z - origin.z); + voxels[index] = Voxel.Boundary; + + if (triangleIndices != null) + triangleIndices[index].Add(triangleIndex); + } + } + } + + + public IEnumerator Voxelize(Matrix4x4 transform, bool generateTriangleIndices = false) + { + voxelSize = Mathf.Max(0.0001f, voxelSize); + + var xfBounds = input.bounds.Transform(transform); + + // Calculate min and max voxels, adding a 1-voxel margin. + origin = GetPointVoxel(xfBounds.min) - new Vector3Int(1, 1, 1); + Vector3Int max = GetPointVoxel(xfBounds.max) + new Vector3Int(1, 1, 1); + + resolution = new Vector3Int(max.x - origin.x + 1, max.y - origin.y + 1, max.z - origin.z + 1); + + // Allocate voxels array, and initialize them to "inside" the mesh: + voxels = new Voxel[resolution.x * resolution.y * resolution.z]; + + for (int x = 0; x < resolution.x; ++x) + for (int y = 0; y < resolution.y; ++y) + for (int z = 0; z < resolution.z; ++z) + this[x, y, z] = Voxel.Inside; + + // Allocate triangle lists: + if (generateTriangleIndices) + { + triangleIndices = new List[voxels.Length]; + for (int i = 0; i < triangleIndices.Length; ++i) + triangleIndices[i] = new List(4); + } + else + triangleIndices = null; + + // Get input triangles and vertices: + int[] triIndices = input.triangles; + Vector3[] vertices = input.vertices; + + // Generate surface voxels: + for (int i = 0; i < triIndices.Length; i += 3) + { + Vector3 v1 = transform.MultiplyPoint3x4(vertices[triIndices[i]]); + Vector3 v2 = transform.MultiplyPoint3x4(vertices[triIndices[i + 1]]); + Vector3 v3 = transform.MultiplyPoint3x4(vertices[triIndices[i + 2]]); + + Bounds triBounds = GetTriangleBounds(v1, v2, v3); + + AppendOverlappingVoxels(triBounds, v1, v2, v3, i/3); + + if (i % 150 == 0) + yield return new CoroutineJob.ProgressInfo("Voxelizing mesh...", i / (float)triIndices.Length); + } + + // Flood fill outside the mesh. This deals with multiple disjoint regions, and non-watertight models. + var fillCoroutine = FloodFill(); + while (fillCoroutine.MoveNext()) + yield return fillCoroutine.Current; + } + + public void BoundaryThinning() + { + for (int x = 0; x < resolution.x; ++x) + for (int y = 0; y < resolution.y; ++y) + for (int z = 0; z < resolution.z; ++z) + if (this[x, y, z] == Voxel.Boundary) + this[x, y, z] = Voxel.Inside; + + for (int x = 0; x < resolution.x; ++x) + for (int y = 0; y < resolution.y; ++y) + for (int z = 0; z < resolution.z; ++z) + { + int sum = 0; + for (int j = 0; j < faceNeighborhood.Length; ++j) + { + var index = faceNeighborhood[j]; + if (VoxelExists(index.x + x, index.y + y, index.z + z) && this[index.x + x, index.y + y, index.z + z] != Voxel.Outside) + { + sum++; + } + } + + if (sum % faceNeighborhood.Length != 0 && this[x, y, z] == Voxel.Inside) + this[x, y, z] = Voxel.Boundary; + } + } + + private IEnumerator FloodFill() + { + Queue queue = new Queue(); + queue.Enqueue(new Vector3Int(0, 0, 0)); + + this[0, 0, 0] = Voxel.Outside; + + int i = 0; + while (queue.Count > 0) + { + Vector3Int c = queue.Dequeue(); + Vector3Int v; + + if (c.x < resolution.x - 1 && this[c.x + 1, c.y, c.z] == Voxel.Inside) + { + v = new Vector3Int(c.x + 1, c.y, c.z); + this[v.x, v.y, v.z] = Voxel.Outside; + queue.Enqueue(v); + } + if (c.x > 0 && this[c.x - 1, c.y, c.z] == Voxel.Inside) + { + v = new Vector3Int(c.x - 1, c.y, c.z); + this[v.x, v.y, v.z] = Voxel.Outside; + queue.Enqueue(v); + } + if (c.y < resolution.y - 1 && this[c.x, c.y + 1, c.z] == Voxel.Inside) + { + v = new Vector3Int(c.x, c.y + 1, c.z); + this[v.x, v.y, v.z] = Voxel.Outside; + queue.Enqueue(v); + } + if (c.y > 0 && this[c.x, c.y - 1, c.z] == Voxel.Inside ) + { + v = new Vector3Int(c.x, c.y - 1, c.z); + this[v.x, v.y, v.z] = Voxel.Outside; + queue.Enqueue(v); + } + + if (c.z < resolution.z - 1 && this[c.x, c.y, c.z + 1] == Voxel.Inside) + { + v = new Vector3Int(c.x, c.y, c.z + 1); + this[v.x, v.y, v.z] = Voxel.Outside; + queue.Enqueue(v); + } + if (c.z > 0 && this[c.x, c.y, c.z - 1] == Voxel.Inside) + { + v = new Vector3Int(c.x, c.y, c.z - 1); + this[v.x, v.y, v.z] = Voxel.Outside; + queue.Enqueue(v); + } + + if (++i % 150 == 0) + yield return new CoroutineJob.ProgressInfo("Filling mesh...", i / (float)voxels.Length); + } + } + + public static bool IsIntersecting(in Bounds box, Vector3 v1, Vector3 v2, Vector3 v3) + { + v1 -= box.center; + v2 -= box.center; + v3 -= box.center; + + var ab = v2 - v1; + var bc = v3 - v2; + var ca = v1 - v3; + + //cross with (1, 0, 0) + var a00 = new Vector3(0, -ab.z, ab.y); + var a01 = new Vector3(0, -bc.z, bc.y); + var a02 = new Vector3(0, -ca.z, ca.y); + + //cross with (0, 1, 0) + var a10 = new Vector3(ab.z, 0, -ab.x); + var a11 = new Vector3(bc.z, 0, -bc.x); + var a12 = new Vector3(ca.z, 0, -ca.x); + + //cross with (0, 0, 1) + var a20 = new Vector3(-ab.y, ab.x, 0); + var a21 = new Vector3(-bc.y, bc.x, 0); + var a22 = new Vector3(-ca.y, ca.x, 0); + + if ( + !TriangleAabbSATTest(v1, v2, v3, box.extents, a00) || + !TriangleAabbSATTest(v1, v2, v3, box.extents, a01) || + !TriangleAabbSATTest(v1, v2, v3, box.extents, a02) || + !TriangleAabbSATTest(v1, v2, v3, box.extents, a10) || + !TriangleAabbSATTest(v1, v2, v3, box.extents, a11) || + !TriangleAabbSATTest(v1, v2, v3, box.extents, a12) || + !TriangleAabbSATTest(v1, v2, v3, box.extents, a20) || + !TriangleAabbSATTest(v1, v2, v3, box.extents, a21) || + !TriangleAabbSATTest(v1, v2, v3, box.extents, a22) || + !TriangleAabbSATTest(v1, v2, v3, box.extents, Vector3.right) || + !TriangleAabbSATTest(v1, v2, v3, box.extents, Vector3.up) || + !TriangleAabbSATTest(v1, v2, v3, box.extents, Vector3.forward) || + !TriangleAabbSATTest(v1, v2, v3, box.extents, Vector3.Cross(ab, bc)) + ) + return false; + + return true; + } + + static bool TriangleAabbSATTest(in Vector3 v0, in Vector3 v1, in Vector3 v2, in Vector3 aabbExtents, in Vector3 axis) + { + float p0 = Vector3.Dot(v0, axis); + float p1 = Vector3.Dot(v1, axis); + float p2 = Vector3.Dot(v2, axis); + + float r = aabbExtents.x * Mathf.Abs(axis.x) + + aabbExtents.y * Mathf.Abs(axis.y) + + aabbExtents.z * Mathf.Abs(axis.z); + + float maxP = Mathf.Max(p0, Mathf.Max(p1, p2)); + float minP = Mathf.Min(p0, Mathf.Min(p1, p2)); + + return !(Mathf.Max(-maxP, minP) > r); + } + + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/DataStructures/Voxelization/MeshVoxelizer.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/Voxelization/MeshVoxelizer.cs.meta new file mode 100644 index 000000000..3feb9ced1 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/Voxelization/MeshVoxelizer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d719a609a88a842d8b4a10db447a627c +timeCreated: 1521796043 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/Voxelization/PriorityQueue.cs b/Assets/Obi/Scripts/Common/DataStructures/Voxelization/PriorityQueue.cs new file mode 100644 index 000000000..63c1b3dc6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/Voxelization/PriorityQueue.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections.Generic; + +namespace Obi +{ + + // From https://visualstudiomagazine.com/articles/2012/11/01/priority-queues-with-c.aspx + public class PriorityQueue where T : IComparable + { + public List data; + + public PriorityQueue() + { + this.data = new List(); + } + + public void Enqueue(T item) + { + data.Add(item); + int ci = data.Count - 1; // child index; start at end + while (ci > 0) + { + int pi = (ci - 1) / 2; // parent index + if (data[ci].CompareTo(data[pi]) >= 0) break; // child item is larger than (or equal) parent so we're done + T tmp = data[ci]; data[ci] = data[pi]; data[pi] = tmp; + ci = pi; + } + } + + public T Dequeue() + { + // assumes pq is not empty; up to calling code + int li = data.Count - 1; // last index (before removal) + T frontItem = data[0]; // fetch the front + data[0] = data[li]; + data.RemoveAt(li); + + --li; // last index (after removal) + int pi = 0; // parent index. start at front of pq + while (true) + { + int ci = pi * 2 + 1; // left child index of parent + if (ci > li) break; // no children so done + int rc = ci + 1; // right child + if (rc <= li && data[rc].CompareTo(data[ci]) < 0) // if there is a rc (ci + 1), and it is smaller than left child, use the rc instead + ci = rc; + if (data[pi].CompareTo(data[ci]) <= 0) break; // parent is smaller than (or equal to) smallest child so done + T tmp = data[pi]; data[pi] = data[ci]; data[ci] = tmp; // swap parent and child + pi = ci; + } + return frontItem; + } + + public T Peek() + { + T frontItem = data[0]; + return frontItem; + } + + public IEnumerable GetEnumerator() + { + for (int i = 0; i < data.Count; ++i) + yield return data[i]; + } + + public void Clear() + { + data.Clear(); + } + + public int Count() + { + return data.Count; + } + + public override string ToString() + { + string s = ""; + for (int i = 0; i < data.Count; ++i) + s += data[i].ToString() + " "; + s += "count = " + data.Count; + return s; + } + + public bool IsConsistent() + { + // is the heap property true for all data? + if (data.Count == 0) return true; + int li = data.Count - 1; // last index + for (int pi = 0; pi < data.Count; ++pi) // each parent index + { + int lci = 2 * pi + 1; // left child index + int rci = 2 * pi + 2; // right child index + + if (lci <= li && data[pi].CompareTo(data[lci]) > 0) return false; // if lc exists and it's greater than parent then bad. + if (rci <= li && data[pi].CompareTo(data[rci]) > 0) return false; // check the right child too. + } + return true; // passed all checks + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/DataStructures/Voxelization/PriorityQueue.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/Voxelization/PriorityQueue.cs.meta new file mode 100644 index 000000000..5b691875d --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/Voxelization/PriorityQueue.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: df456c360bde341bca8e2bfd472e9bcb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/Voxelization/VoxelDistanceField.cs b/Assets/Obi/Scripts/Common/DataStructures/Voxelization/VoxelDistanceField.cs new file mode 100644 index 000000000..8484fbfd8 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/Voxelization/VoxelDistanceField.cs @@ -0,0 +1,190 @@ +using System.Collections; +using UnityEngine; + +namespace Obi +{ + + /** + * Generates a sparse distance field from a voxel representation of a mesh. + */ + public class VoxelDistanceField + { + public Vector3Int[,,] distanceField; // for each coordinate, stores coordinates of closest surface voxel. + + private MeshVoxelizer voxelizer; + + public VoxelDistanceField(MeshVoxelizer voxelizer) + { + this.voxelizer = voxelizer; + } + + public float SampleUnfiltered(int x, int y, int z) + { + if (!voxelizer.VoxelExists(x, y, z)) return float.PositiveInfinity; + + float dist = Vector3.Distance(voxelizer.GetVoxelCenter(distanceField[x, y, z]), + voxelizer.GetVoxelCenter(new Vector3Int(x, y, z))); + + if (voxelizer[x, y, z] == MeshVoxelizer.Voxel.Inside) + return -dist; + return dist; + } + + public Vector4 SampleFiltered(float x, float y, float z) + { + var pos = new Vector3(x, y, z); + + // clamp position inside the distance field: + var min = voxelizer.GetVoxelCenter(new Vector3Int(0, 0, 0)); + var max = voxelizer.GetVoxelCenter(new Vector3Int(voxelizer.resolution.x - 1, voxelizer.resolution.y - 1, voxelizer.resolution.z - 1)); + pos.x = Mathf.Clamp(pos.x, min.x, max.x - voxelizer.voxelSize * 0.05f); + pos.y = Mathf.Clamp(pos.y, min.y, max.y - voxelizer.voxelSize * 0.05f); + pos.z = Mathf.Clamp(pos.z, min.z, max.z - voxelizer.voxelSize * 0.05f); + + var voxel = voxelizer.GetPointVoxel(pos - Vector3.one * voxelizer.voxelSize * 0.5f) - voxelizer.Origin; + + var voxelCenter = voxelizer.GetVoxelCenter(voxel); + var norm = (pos - voxelCenter) / voxelizer.voxelSize; + + float xz00 = SampleUnfiltered(voxel.x, voxel.y, voxel.z); + float xz01 = SampleUnfiltered(voxel.x, voxel.y, voxel.z + 1); + float xz10 = SampleUnfiltered(voxel.x + 1, voxel.y, voxel.z); + float xz11 = SampleUnfiltered(voxel.x + 1, voxel.y, voxel.z + 1); + + float yz00 = SampleUnfiltered(voxel.x, voxel.y + 1, voxel.z); + float yz01 = SampleUnfiltered(voxel.x, voxel.y + 1, voxel.z + 1); + float yz10 = SampleUnfiltered(voxel.x + 1, voxel.y + 1, voxel.z); + float yz11 = SampleUnfiltered(voxel.x + 1, voxel.y + 1, voxel.z + 1); + + float X1 = Mathf.Lerp(xz00, xz10, norm.x); + float X2 = Mathf.Lerp(xz01, xz11, norm.x); + float X3 = Mathf.Lerp(yz00, yz10, norm.x); + float X4 = Mathf.Lerp(yz01, yz11, norm.x); + + float Y1 = Mathf.Lerp(X1, X2, norm.z); + float Y2 = Mathf.Lerp(X3, X4, norm.z); + + float R = Mathf.Lerp(Mathf.Lerp(xz10, xz11, norm.z), Mathf.Lerp(yz10, yz11, norm.z), norm.y); + float L = Mathf.Lerp(Mathf.Lerp(xz00, xz01, norm.z), Mathf.Lerp(yz00, yz01, norm.z), norm.y); + + float F = Mathf.Lerp(X2, X4, norm.y); + float B = Mathf.Lerp(X1, X3, norm.y); + + return new Vector4((R - L) / voxelizer.voxelSize, + (Y2 - Y1) / voxelizer.voxelSize, + (F - B) / voxelizer.voxelSize, + Mathf.Lerp(Y1, Y2, norm.y)); + } + + public IEnumerator JumpFlood() + { + + // create and initialize distance field: + distanceField = new Vector3Int[voxelizer.resolution.x, + voxelizer.resolution.y, + voxelizer.resolution.z]; + + // create auxiliar buffer for ping-pong. + Vector3Int[,,] auxBuffer = new Vector3Int[voxelizer.resolution.x, + voxelizer.resolution.y, + voxelizer.resolution.z]; + + // initialize distance field: + for (int x = 0; x < distanceField.GetLength(0); ++x) + for (int y = 0; y < distanceField.GetLength(1); ++y) + for (int z = 0; z < distanceField.GetLength(2); ++z) + { + if (voxelizer[x, y, z] == MeshVoxelizer.Voxel.Boundary) + distanceField[x, y, z] = new Vector3Int(x, y, z); + else + distanceField[x, y, z] = new Vector3Int(-1, -1, -1); + } + + // calculate the maximum size of the buffer: + int size = Mathf.Max(distanceField.GetLength(0), + distanceField.GetLength(1), + distanceField.GetLength(2)); + int step = (int)(size / 2.0f); + + yield return new CoroutineJob.ProgressInfo("Generating voxel distance field...",0); + + float numPasses = (int) Mathf.Log(size, 2); + int i = 0; + + // jump flood passes: + while (step >= 1) + { + JumpFloodPass(step, distanceField, auxBuffer); + + // halve step: + step /= 2; + + // swap buffers: + Vector3Int[,,] temp = distanceField; + distanceField = auxBuffer; + auxBuffer = temp; + + yield return new CoroutineJob.ProgressInfo("Generating voxel distance field...", ++i / numPasses); + } + + } + + private void JumpFloodPass(int stride, Vector3Int[,,] input, Vector3Int[,,] output) + { + // for each voxel: + for (int x = 0; x < input.GetLength(0); ++x) + for (int y = 0; y < input.GetLength(1); ++y) + for (int z = 0; z < input.GetLength(2); ++z) + { + // our position: + Vector3Int p = new Vector3Int(x, y, z); + + // our seed: + Vector3Int s = input[x, y, z]; + + // copy the closest seed to the output, in case we do not update it this pass: + output[x, y, z] = s; + + // this voxel is a seed, skip it. + if (s.x == x && s.y == y && s.z == z) + continue; + + // distance to our closest seed: + float dist = float.MaxValue; + if (s.x >= 0) + dist = (s - p).sqrMagnitude; + + // for each neighbor voxel: + for (int nx = -1; nx <= 1; ++nx) + for (int ny = -1; ny <= 1; ++ny) + for (int nz = -1; nz <= 1; ++nz) + { + // neighbor's position: + int px = x + nx * stride; + int py = y + ny * stride; + int pz = z + nz * stride; + + if (voxelizer.VoxelExists(px,py,pz)) + { + // neighbors' closest seed. + Vector3Int n = input[px,py,pz]; + + if (n.x >= 0) + { + // distance to neighbor's closest seed: + float newDist = (n - p).sqrMagnitude; + + // if the distance to the neighbor's closest seed is smaller than the distance to ours: + if (newDist < dist) + { + output[x, y, z] = n; + dist = newDist; + } + } + } + } + } + + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/DataStructures/Voxelization/VoxelDistanceField.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/Voxelization/VoxelDistanceField.cs.meta new file mode 100644 index 000000000..84c75c21a --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/Voxelization/VoxelDistanceField.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c65cc27d2e30248c5afce6392f782c11 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/DataStructures/Voxelization/VoxelPathFinder.cs b/Assets/Obi/Scripts/Common/DataStructures/Voxelization/VoxelPathFinder.cs new file mode 100644 index 000000000..8ac2788b7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/Voxelization/VoxelPathFinder.cs @@ -0,0 +1,135 @@ +using System; +using UnityEngine; + +namespace Obi +{ + public class VoxelPathFinder + { + private MeshVoxelizer voxelizer = null; + private bool[,,] closed; + private PriorityQueue open; + + public struct TargetVoxel : IEquatable, IComparable + { + public Vector3Int coordinates; + public float distance; + public float heuristic; + //public TargetVoxel parent; + + public float cost + { + get { return distance + heuristic; } + } + + public TargetVoxel(Vector3Int coordinates, float distance, float heuristic) + { + this.coordinates = coordinates; + this.distance = distance; + this.heuristic = heuristic; + } + + public bool Equals(TargetVoxel other) + { + return this.coordinates.Equals(other.coordinates); + } + + public int CompareTo(TargetVoxel other) + { + return this.cost.CompareTo(other.cost); + } + } + + public VoxelPathFinder(MeshVoxelizer voxelizer) + { + this.voxelizer = voxelizer; + closed = new bool[voxelizer.resolution.x, voxelizer.resolution.y, voxelizer.resolution.z]; + open = new PriorityQueue(); + } + + private TargetVoxel AStar(in Vector3Int start, Func termination, Func heuristic) + { + Array.Clear(closed, 0, closed.Length); + + // A* algorithm: + open.Clear(); + open.Enqueue(new TargetVoxel(start, 0, 0)); + + while (open.Count() != 0) + { + var current = open.Dequeue(); + + if (termination(current)) + return current; + + closed[current.coordinates.x, current.coordinates.y, current.coordinates.z] = true; + + for (int i = 0; i < MeshVoxelizer.fullNeighborhood.Length; ++i) + { + var successorCoords = current.coordinates + MeshVoxelizer.fullNeighborhood[i]; + + if (voxelizer.VoxelExists(successorCoords) && + voxelizer[successorCoords.x, successorCoords.y, successorCoords.z] != MeshVoxelizer.Voxel.Outside && + !closed[successorCoords.x, successorCoords.y, successorCoords.z]) + { + var successor = new TargetVoxel(successorCoords, current.distance + voxelizer.GetDistanceToNeighbor(i), + heuristic(successorCoords)); + //successor.parent = current; + + int index = -1; + for (int j = 0; j < open.Count(); ++j) + if (open.data[j].coordinates == successorCoords) + { index = j; break; } + + if (index < 0) + open.Enqueue(successor); + else if (successor.distance < open.data[index].distance) + open.data[index] = successor; + } + } + } + + return new TargetVoxel(Vector3Int.zero, -1, -1); + } + + public TargetVoxel FindClosestNonEmptyVoxel(in Vector3Int start) + { + if (voxelizer == null) return new TargetVoxel(Vector3Int.zero, -1, -1); + + if (!voxelizer.VoxelExists(start)) + return new TargetVoxel(Vector3Int.zero, -1, -1); + + if (voxelizer[start.x, start.y, start.z] != MeshVoxelizer.Voxel.Outside) + return new TargetVoxel(start, 0, 0); + + Array.Clear(closed, 0, closed.Length); + + return AStar(start, + (TargetVoxel v) => { + return voxelizer[v.coordinates.x, v.coordinates.y, v.coordinates.z] != MeshVoxelizer.Voxel.Outside; + }, + (Vector3Int c) => { + return 0; + }); + } + + public TargetVoxel FindPath(in Vector3Int start, Vector3Int end) + { + if (voxelizer == null) return new TargetVoxel(Vector3Int.zero,-1, -1); + + if (!voxelizer.VoxelExists(start) || !voxelizer.VoxelExists(end)) + return new TargetVoxel(Vector3Int.zero, -1, -1); + + if (voxelizer[start.x, start.y, start.z] == MeshVoxelizer.Voxel.Outside || + voxelizer[end.x, end.y, end.z] == MeshVoxelizer.Voxel.Outside) + return new TargetVoxel(Vector3Int.zero, -1, -1); + + return AStar(start, + (TargetVoxel v) => { + return v.coordinates == end; + }, + (Vector3Int c) => { + return Vector3.Distance(c, end) * voxelizer.voxelSize; + }); + } + } +} diff --git a/Assets/Obi/Scripts/Common/DataStructures/Voxelization/VoxelPathFinder.cs.meta b/Assets/Obi/Scripts/Common/DataStructures/Voxelization/VoxelPathFinder.cs.meta new file mode 100644 index 000000000..a41bf458c --- /dev/null +++ b/Assets/Obi/Scripts/Common/DataStructures/Voxelization/VoxelPathFinder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2e4d304562b1140b8a161652aaf4f122 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Rendering.meta b/Assets/Obi/Scripts/Common/Rendering.meta new file mode 100644 index 000000000..750a354b2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Rendering.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 01dd4c104c0244e66a3ed4b9824df2b3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Rendering/ObiDistanceFieldRenderer.cs b/Assets/Obi/Scripts/Common/Rendering/ObiDistanceFieldRenderer.cs new file mode 100644 index 000000000..8f39af505 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Rendering/ObiDistanceFieldRenderer.cs @@ -0,0 +1,166 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [AddComponentMenu("Physics/Obi/Obi Distance Field Renderer", 1003)] + [ExecuteInEditMode] + [RequireComponent(typeof(ObiCollider))] + public class ObiDistanceFieldRenderer : MonoBehaviour + { + public enum Axis + { + X = 0, + Y = 1, + Z = 2, + } + + public Axis axis; + [Range(0, 1)] + public float slice = 0.25f; + public float maxDistance = 0.5f; + + private ObiCollider unityCollider; + private Material material; + private Mesh planeMesh; + private Texture2D cutawayTexture; + + private float sampleSize; + private int sampleCount; + + private Color boundsColor = new Color(1, 1, 1, 0.5f); + + public void Awake() + { + unityCollider = GetComponent(); + } + + public void OnEnable() + { + material = GameObject.Instantiate(Resources.Load("ObiMaterials/DistanceFieldRendering")); + material.hideFlags = HideFlags.HideAndDontSave; + } + + public void OnDisable() + { + Cleanup(); + } + + private void Cleanup() + { + GameObject.DestroyImmediate(cutawayTexture); + GameObject.DestroyImmediate(planeMesh); + GameObject.DestroyImmediate(material); + } + + private void ResizeTexture() + { + + if (cutawayTexture == null) + { + cutawayTexture = new Texture2D(sampleCount, sampleCount, TextureFormat.RHalf, false); + cutawayTexture.wrapMode = TextureWrapMode.Clamp; + cutawayTexture.hideFlags = HideFlags.HideAndDontSave; + } + else + cutawayTexture.Reinitialize(sampleCount, sampleCount); + } + + private void CreatePlaneMesh(ObiDistanceField field) + { + + if (field != null && planeMesh == null) + { + + float uvBorder = (1 - field.FieldBounds.size[0] / (sampleSize * sampleCount)) * 0.5f; + + planeMesh = new Mesh(); + + planeMesh.vertices = new Vector3[]{new Vector3(-0.5f,-0.5f,0), + new Vector3(0.5f,-0.5f,0), + new Vector3(-0.5f,0.5f,0), + new Vector3(0.5f,0.5f,0)}; + + planeMesh.uv = new Vector2[]{new Vector2(uvBorder,uvBorder), + new Vector2(1-uvBorder,uvBorder), + new Vector2(uvBorder,1-uvBorder), + new Vector2(1-uvBorder,1-uvBorder)}; + + planeMesh.normals = new Vector3[] { -Vector3.forward, -Vector3.forward, -Vector3.forward, -Vector3.forward }; + planeMesh.triangles = new int[] { 0, 2, 1, 2, 3, 1 }; + } + } + + private void RefreshCutawayTexture(ObiDistanceField field) + { + if (field == null) + return; + + Bounds b = field.FieldBounds; + sampleSize = field.EffectiveSampleSize; + sampleCount = (int)(b.size[0] / sampleSize) + 1; + + CreatePlaneMesh(field); + ResizeTexture(); + + float sweep = (sampleCount * slice) * sampleSize; + Vector3 origin = b.center - b.extents; + + for (int x = 0; x < sampleCount; ++x) + for (int y = 0; y < sampleCount; ++y) + { + Vector3 offset = Vector3.zero; + switch (axis) + { + case Axis.X: offset = new Vector3(sweep, y * sampleSize, x * sampleSize); break; + case Axis.Y: offset = new Vector3(x * sampleSize, sweep, y * sampleSize); break; + case Axis.Z: offset = new Vector3(x * sampleSize, y * sampleSize, sweep); break; + } + + float distance = ASDF.Sample(field.nodes, origin + offset); + + float value = ObiUtils.Remap(distance, -maxDistance, maxDistance, 0, 1); + + cutawayTexture.SetPixel(x, y, new Color(value, 0, 0)); + } + cutawayTexture.Apply(); + } + + private void DrawCutawayPlane(ObiDistanceField field, Matrix4x4 matrix) + { + + if (field == null) + return; + + RefreshCutawayTexture(field); + + material.mainTexture = cutawayTexture; + material.SetPass(0); + + Quaternion rotation = Quaternion.identity; + Vector3 offset = Vector3.zero; + offset[(int)axis] = field.FieldBounds.size[0]; + + if (axis == Axis.Y) + rotation = Quaternion.Euler(90, 0, 0); + else if (axis == Axis.X) + rotation = Quaternion.Euler(0, -90, 0); + + Matrix4x4 sc = Matrix4x4.TRS(field.FieldBounds.center + offset * (slice - 0.5f), rotation, Vector3.one * field.FieldBounds.size[0]); + Graphics.DrawMeshNow(planeMesh, matrix * sc); + + } + + public void OnDrawGizmos() + { + if (unityCollider != null && unityCollider.distanceField != null && unityCollider.distanceField.Initialized && material != null) + { + DrawCutawayPlane(unityCollider.distanceField, transform.localToWorldMatrix); + Gizmos.color = boundsColor; + Gizmos.DrawWireCube(unityCollider.distanceField.FieldBounds.center, unityCollider.distanceField.FieldBounds.size); + } + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/Rendering/ObiDistanceFieldRenderer.cs.meta b/Assets/Obi/Scripts/Common/Rendering/ObiDistanceFieldRenderer.cs.meta new file mode 100644 index 000000000..daf2292b3 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Rendering/ObiDistanceFieldRenderer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 382f1f06ad1a84a9f8fb3a60b50dd9b7 +timeCreated: 1516041863 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 41cb9d55de5b24458b45e5465606249a, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Rendering/ObiInstancedParticleRenderer.cs b/Assets/Obi/Scripts/Common/Rendering/ObiInstancedParticleRenderer.cs new file mode 100644 index 000000000..90be3a496 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Rendering/ObiInstancedParticleRenderer.cs @@ -0,0 +1,92 @@ +using UnityEngine; +using Unity.Profiling; +using System; +using System.Threading; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + + [AddComponentMenu("Physics/Obi/Obi Instanced Particle Renderer", 1001)] + [ExecuteInEditMode] + [RequireComponent(typeof(ObiActor))] + public class ObiInstancedParticleRenderer : MonoBehaviour + { + static ProfilerMarker m_DrawParticlesPerfMarker = new ProfilerMarker("DrawParticles"); + + public bool render = true; + public Mesh mesh; + public Material material; + public Vector3 instanceScale = Vector3.one; + + private List matrices = new List(); + private List colors = new List(); + private MaterialPropertyBlock mpb; + + int meshesPerBatch = 0; + int batchCount; + + public void OnEnable() + { + GetComponent().OnInterpolate += DrawParticles; + } + + public void OnDisable() + { + GetComponent().OnInterpolate -= DrawParticles; + } + + void DrawParticles(ObiActor actor) + { + using (m_DrawParticlesPerfMarker.Auto()) + { + + if (mesh == null || material == null || !render || !isActiveAndEnabled || !actor.isActiveAndEnabled || actor.solver == null) + { + return; + } + + ObiSolver solver = actor.solver; + + // figure out the size of our instance batches: + meshesPerBatch = Constants.maxInstancesPerBatch; + batchCount = actor.particleCount / meshesPerBatch + 1; + meshesPerBatch = Mathf.Min(meshesPerBatch, actor.particleCount); + + Vector4 basis1 = new Vector4(1, 0, 0, 0); + Vector4 basis2 = new Vector4(0, 1, 0, 0); + Vector4 basis3 = new Vector4(0, 0, 1, 0); + + //Convert particle data to mesh instances: + for (int i = 0; i < batchCount; i++) + { + + matrices.Clear(); + colors.Clear(); + mpb = new MaterialPropertyBlock(); + int limit = Mathf.Min((i + 1) * meshesPerBatch, actor.activeParticleCount); + + for (int j = i * meshesPerBatch; j < limit; ++j) + { + int solverIndex = actor.solverIndices[j]; + actor.GetParticleAnisotropy(solverIndex, ref basis1, ref basis2, ref basis3); + matrices.Add(Matrix4x4.TRS(actor.GetParticlePosition(solverIndex), + actor.GetParticleOrientation(solverIndex), + Vector3.Scale(new Vector3(basis1[3], basis2[3], basis3[3]), instanceScale))); + colors.Add(actor.GetParticleColor(solverIndex)); + } + + if (colors.Count > 0) + mpb.SetVectorArray("_Color", colors); + + // Send the meshes to be drawn: + Graphics.DrawMeshInstanced(mesh, 0, material, matrices, mpb); + } + } + + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/Rendering/ObiInstancedParticleRenderer.cs.meta b/Assets/Obi/Scripts/Common/Rendering/ObiInstancedParticleRenderer.cs.meta new file mode 100644 index 000000000..028428626 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Rendering/ObiInstancedParticleRenderer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 356b834afda224f73a26e39580b330f1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: + - mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} + - material: {fileID: 2100000, guid: 2b7dfa8ebb76247318ce5b7df4b97484, type: 2} + executionOrder: 0 + icon: {fileID: 2800000, guid: f424a87c9f03240c2870a664731ac9aa, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Rendering/ObiParticleRenderer.cs b/Assets/Obi/Scripts/Common/Rendering/ObiParticleRenderer.cs new file mode 100644 index 000000000..e85ed0f87 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Rendering/ObiParticleRenderer.cs @@ -0,0 +1,110 @@ +using UnityEngine; +using Unity.Profiling; +using System; +using System.Threading; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + [AddComponentMenu("Physics/Obi/Obi Particle Renderer", 1000)] + [ExecuteInEditMode] + [RequireComponent(typeof(ObiActor))] + public class ObiParticleRenderer : MonoBehaviour + { + static ProfilerMarker m_DrawParticlesPerfMarker = new ProfilerMarker("DrawParticles"); + + public bool render = true; + public Shader shader; + public Color particleColor = Color.white; + public float radiusScale = 1; + private ParticleImpostorRendering m_Impostors; + + public IEnumerable ParticleMeshes + { + get { return impostors.Meshes; } + } + + public ParticleImpostorRendering impostors + { + get { + if (m_Impostors == null) + m_Impostors = new ParticleImpostorRendering(); + return m_Impostors; + } + } + + public Material ParticleMaterial { get; private set; } + + public void OnEnable() + { + GetComponent().OnInterpolate += DrawParticles; + } + + public void OnDisable() + { + GetComponent().OnInterpolate -= DrawParticles; + + if (m_Impostors != null) + m_Impostors.ClearMeshes(); + + DestroyImmediate(ParticleMaterial); + } + + void CreateMaterialIfNeeded() + { + + if (shader != null) + { + if (!shader.isSupported) + Debug.LogWarning("Particle rendering shader not suported."); + + if (ParticleMaterial == null || ParticleMaterial.shader != shader) + { + DestroyImmediate(ParticleMaterial); + ParticleMaterial = new Material(shader); + ParticleMaterial.hideFlags = HideFlags.HideAndDontSave; + } + } + } + + void DrawParticles(ObiActor actor) + { + using (m_DrawParticlesPerfMarker.Auto()) + { + if (!isActiveAndEnabled || !actor.isActiveAndEnabled || actor.solver == null) + { + impostors.ClearMeshes(); + return; + } + + CreateMaterialIfNeeded(); + + impostors.UpdateMeshes(actor); + + DrawParticles(); + } + } + + private void DrawParticles() + { + if (ParticleMaterial != null) + { + + ParticleMaterial.SetFloat("_RadiusScale", radiusScale); + ParticleMaterial.SetColor("_Color", particleColor); + + // Send the meshes to be drawn: + if (render) + { + var meshes = ParticleMeshes; + foreach (Mesh mesh in meshes) + Graphics.DrawMesh(mesh, Matrix4x4.identity, ParticleMaterial, gameObject.layer); + } + } + + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/Rendering/ObiParticleRenderer.cs.meta b/Assets/Obi/Scripts/Common/Rendering/ObiParticleRenderer.cs.meta new file mode 100644 index 000000000..3d6569971 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Rendering/ObiParticleRenderer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: c8b45ebbf86be4df6b0e6cd933812af2 +timeCreated: 1521054123 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: + - shader: {fileID: 4800000, guid: 801733041f66b49e1b3c2101471db877, type: 3} + executionOrder: 0 + icon: {fileID: 2800000, guid: f424a87c9f03240c2870a664731ac9aa, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Rendering/ParticleImpostorRendering.cs b/Assets/Obi/Scripts/Common/Rendering/ParticleImpostorRendering.cs new file mode 100644 index 000000000..5a90e2774 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Rendering/ParticleImpostorRendering.cs @@ -0,0 +1,164 @@ +using UnityEngine; +using Unity.Profiling; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + public class ParticleImpostorRendering + { + static ProfilerMarker m_ParticlesToMeshPerfMarker = new ProfilerMarker("ParticlesToMesh"); + + private List meshes = new List(); + + private List vertices = new List(4000); + private List normals = new List(4000); + private List colors = new List(4000); + private List triangles = new List(6000); + + private List anisotropy1 = new List(4000); + private List anisotropy2 = new List(4000); + private List anisotropy3 = new List(4000); + + int particlesPerDrawcall = 0; + int drawcallCount; + + private Vector3 particleOffset0 = new Vector3(1, 1, 0); + private Vector3 particleOffset1 = new Vector3(-1, 1, 0); + private Vector3 particleOffset2 = new Vector3(-1, -1, 0); + private Vector3 particleOffset3 = new Vector3(1, -1, 0); + + public IEnumerable Meshes + { + get { return meshes.AsReadOnly(); } + } + + private void Apply(Mesh mesh) + { + mesh.Clear(); + mesh.SetVertices(vertices); + mesh.SetNormals(normals); + mesh.SetColors(colors); + mesh.SetUVs(0, anisotropy1); + mesh.SetUVs(1, anisotropy2); + mesh.SetUVs(2, anisotropy3); + mesh.SetTriangles(triangles, 0, true); + } + + public void ClearMeshes() + { + foreach (Mesh mesh in meshes) + GameObject.DestroyImmediate(mesh); + meshes.Clear(); + } + + public void UpdateMeshes(IObiParticleCollection collection, bool[] visible = null, Color[] tint = null) + { + using (m_ParticlesToMeshPerfMarker.Auto()) + { + + // figure out the size of our drawcall arrays: + particlesPerDrawcall = Constants.maxVertsPerMesh / 4; + drawcallCount = collection.activeParticleCount / particlesPerDrawcall + 1; + particlesPerDrawcall = Mathf.Min(particlesPerDrawcall, collection.activeParticleCount); + + // If the amount of meshes we need to draw the particles has changed: + if (drawcallCount != meshes.Count) + { + + // Re-generate meshes: + ClearMeshes(); + for (int i = 0; i < drawcallCount; i++) + { + Mesh mesh = new Mesh(); + mesh.name = "Particle impostors"; + mesh.hideFlags = HideFlags.HideAndDontSave; + meshes.Add(mesh); + } + + } + + Vector3 position; + Vector4 basis1 = new Vector4(1, 0, 0, 0); + Vector4 basis2 = new Vector4(0, 1, 0, 0); + Vector4 basis3 = new Vector4(0, 0, 1, 0); + Color color; + + int visibleLength = visible != null ? visible.Length : 0; + int tintLength = tint != null ? tint.Length : 0; + + //Convert particle data to mesh geometry: + for (int i = 0; i < drawcallCount; i++) + { + + // Clear all arrays + vertices.Clear(); + normals.Clear(); + colors.Clear(); + triangles.Clear(); + anisotropy1.Clear(); + anisotropy2.Clear(); + anisotropy3.Clear(); + + int index = 0; + int limit = Mathf.Min((i + 1) * particlesPerDrawcall, collection.activeParticleCount); + + for (int j = i * particlesPerDrawcall; j < limit; ++j) + { + if (j < visibleLength && !visible[j]) + continue; + + int runtimeIndex = collection.GetParticleRuntimeIndex(j); + position = collection.GetParticlePosition(runtimeIndex); + collection.GetParticleAnisotropy(runtimeIndex, ref basis1, ref basis2, ref basis3); + color = collection.GetParticleColor(runtimeIndex); + + if (j < tintLength) + color *= tint[j]; + + vertices.Add(position); + vertices.Add(position); + vertices.Add(position); + vertices.Add(position); + + normals.Add(particleOffset0); + normals.Add(particleOffset1); + normals.Add(particleOffset2); + normals.Add(particleOffset3); + + colors.Add(color); + colors.Add(color); + colors.Add(color); + colors.Add(color); + + anisotropy1.Add(basis1); + anisotropy1.Add(basis1); + anisotropy1.Add(basis1); + anisotropy1.Add(basis1); + + anisotropy2.Add(basis2); + anisotropy2.Add(basis2); + anisotropy2.Add(basis2); + anisotropy2.Add(basis2); + + anisotropy3.Add(basis3); + anisotropy3.Add(basis3); + anisotropy3.Add(basis3); + anisotropy3.Add(basis3); + + triangles.Add(index + 2); + triangles.Add(index + 1); + triangles.Add(index); + triangles.Add(index + 3); + triangles.Add(index + 2); + triangles.Add(index); + + index += 4; + } + + Apply(meshes[i]); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Rendering/ParticleImpostorRendering.cs.meta b/Assets/Obi/Scripts/Common/Rendering/ParticleImpostorRendering.cs.meta new file mode 100644 index 000000000..2ee95bbf2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Rendering/ParticleImpostorRendering.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bf17f48345c0f42a9a419ec65398dcd8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Rendering/ShadowmapExposer.cs b/Assets/Obi/Scripts/Common/Rendering/ShadowmapExposer.cs new file mode 100644 index 000000000..096b0dcc1 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Rendering/ShadowmapExposer.cs @@ -0,0 +1,70 @@ +using System; +using UnityEngine; +using UnityEngine.Rendering; + +namespace Obi{ +public class ShadowmapExposer : MonoBehaviour +{ + Light unityLight; + CommandBuffer afterShadow = null; + public ObiParticleRenderer[] particleRenderers; + + public void Awake(){ + unityLight = GetComponent(); + } + + public void OnEnable(){ + Cleanup(); + + afterShadow = new CommandBuffer(); + afterShadow.name = "FluidShadows"; + unityLight.AddCommandBuffer (LightEvent.AfterShadowMapPass, afterShadow); + } + + public void OnDisable(){ + Cleanup(); + } + + private void Cleanup(){ + + if (afterShadow != null){ + unityLight.RemoveCommandBuffer (LightEvent.AfterShadowMapPass,afterShadow); + afterShadow = null; + } + } + + + public void SetupFluidShadowsCommandBuffer() + { + afterShadow.Clear(); + + if (particleRenderers == null) + return; + + foreach(ObiParticleRenderer renderer in particleRenderers){ + if (renderer != null){ + foreach(Mesh mesh in renderer.ParticleMeshes) + afterShadow.DrawMesh(mesh,Matrix4x4.identity,renderer.ParticleMaterial,0,1); + } + } + + afterShadow.SetGlobalTexture ("_MyShadowMap", new RenderTargetIdentifier(BuiltinRenderTextureType.CurrentActive)); + } + + // Use this for initialization + void Update() + { + bool act = gameObject.activeInHierarchy && enabled; + if (!act || particleRenderers == null || particleRenderers.Length == 0) + { + Cleanup(); + return; + } + + if (afterShadow != null) + { + SetupFluidShadowsCommandBuffer(); + } + } +} +} diff --git a/Assets/Obi/Scripts/Common/Rendering/ShadowmapExposer.cs.meta b/Assets/Obi/Scripts/Common/Rendering/ShadowmapExposer.cs.meta new file mode 100644 index 000000000..229f80dcb --- /dev/null +++ b/Assets/Obi/Scripts/Common/Rendering/ShadowmapExposer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: dbf7247281ef14860853fa0ee2cb4829 +timeCreated: 1463174681 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Solver.meta b/Assets/Obi/Scripts/Common/Solver.meta new file mode 100644 index 000000000..be27f8436 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Solver.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9b70354c2a8424c0d85f24922c2fd48d +folderAsset: yes +timeCreated: 1448942583 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Solver/ObiSolver.cs b/Assets/Obi/Scripts/Common/Solver/ObiSolver.cs new file mode 100644 index 000000000..e1a5ff765 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Solver/ObiSolver.cs @@ -0,0 +1,1834 @@ +/** +\mainpage Obi documentation + +Introduction: +------------- + +Obi is a position-based dynamics framework for unity. It enables the simulation of cloth, ropes and fluid in realtime, complete with two-way +rigidbody interaction. + +Features: +------------------- + +- Particles can be pinned both in local space and to rigidbodies (kinematic or not). +- Realistic wind forces. +- Rigidbodies react to particle dynamics, and particles reach to each other and to rigidbodies too. +- Easy prefab instantiation, particle-based actors can be translated, scaled and rotated. +- Custom editor tools. + +*/ + +using UnityEngine; +using Unity.Profiling; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Obi +{ + + /** + * ObiSolver simulates particles and constraints, provided by a list of ObiActor. Particles belonging to different solvers won't interact with each other in any way. + */ + [AddComponentMenu("Physics/Obi/Obi Solver", 800)] + [ExecuteInEditMode] + [DisallowMultipleComponent] + public sealed class ObiSolver : MonoBehaviour + { + static ProfilerMarker m_StateInterpolationPerfMarker = new ProfilerMarker("ApplyStateInterpolation"); + static ProfilerMarker m_UpdateVisibilityPerfMarker = new ProfilerMarker("UpdateVisibility"); + static ProfilerMarker m_GetSolverBoundsPerfMarker = new ProfilerMarker("GetSolverBounds"); + static ProfilerMarker m_TestBoundsPerfMarker = new ProfilerMarker("TestBoundsAgainstCameras"); + static ProfilerMarker m_GetAllCamerasPerfMarker = new ProfilerMarker("GetAllCameras"); + + public enum BackendType + { + Oni, + Burst + } + + public class ObiCollisionEventArgs : System.EventArgs + { + public ObiList contacts = new ObiList(); /**< collision contacts.*/ + } + + [Serializable] + public class ParticleInActor + { + public ObiActor actor; + public int indexInActor; + + public ParticleInActor() + { + this.actor = null; + this.indexInActor = -1; + } + + public ParticleInActor(ObiActor actor, int indexInActor) + { + this.actor = actor; + this.indexInActor = indexInActor; + } + } + + public delegate void SolverCallback(ObiSolver solver); + public delegate void SolverStepCallback(ObiSolver solver, float stepTime); + public delegate void CollisionCallback(ObiSolver solver, ObiCollisionEventArgs contacts); + + public event CollisionCallback OnCollision; + public event CollisionCallback OnParticleCollision; + public event SolverCallback OnUpdateParameters; + + public event SolverCallback OnPrepareFrame; + public event SolverStepCallback OnPrepareStep; + public event SolverStepCallback OnBeginStep; + public event SolverStepCallback OnSubstep; + public event SolverCallback OnEndStep; + public event SolverCallback OnInterpolate; + + [Tooltip("If enabled, will force the solver to keep simulating even when not visible from any camera.")] + public bool simulateWhenInvisible = true; /**< Whether to keep simulating the cloth when its not visible by any camera.*/ + + private ISolverImpl m_SolverImpl; + + private IObiBackend m_SimulationBackend = +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) + new BurstBackend(); +#elif (OBI_ONI_SUPPORTED) + new OniBackend(); +#else + new NullBackend(); +#endif + + [SerializeField] private BackendType m_Backend = BackendType.Burst; + + public Oni.SolverParameters parameters = new Oni.SolverParameters(Oni.SolverParameters.Interpolation.None, + new Vector4(0, -9.81f, 0, 0)); + + public Vector3 gravity = new Vector3(0, -9.81f, 0); + public Space gravitySpace = Space.Self; + + [Range(0, 1)] + public float worldLinearInertiaScale = 0; /**< how much does world-space linear inertia affect the actor. This only applies when the solver has "simulateInLocalSpace" enabled.*/ + + [Range(0, 1)] + public float worldAngularInertiaScale = 0; /**< how much does world-space angular inertia affect the actor. This only applies when the solver has "simulateInLocalSpace" enabled.*/ + + [HideInInspector] [NonSerialized] public List actors = new List(); + [HideInInspector] [NonSerialized] public ParticleInActor[] m_ParticleToActor; + + private ObiNativeIntList freeList; + + private List points = new List(); /**< 0-simplices*/ + private List edges = new List(); /**< 1-simplices*/ + private List triangles = new List(); /**< 2-simplices*/ + private SimplexCounts m_SimplexCounts; + + [HideInInspector][NonSerialized] public bool dirtySimplices = true; + [HideInInspector][NonSerialized] public int dirtyConstraints = 0; + + private bool m_dirtyActiveParticles = true; + public bool dirtyActiveParticles + { + set + { + // make sure anytime active particles need to be updated, simplices will be updated too: + m_dirtyActiveParticles = value; + dirtySimplices |= m_dirtyActiveParticles; + } + get { return m_dirtyActiveParticles; } + } + + private ObiCollisionEventArgs collisionArgs = new ObiCollisionEventArgs(); + private ObiCollisionEventArgs particleCollisionArgs = new ObiCollisionEventArgs(); + + private int m_contactCount; + private int m_particleContactCount; + private float m_MaxScale = 1; + private UnityEngine.Bounds bounds = new UnityEngine.Bounds(); + private Plane[] planes = new Plane[6]; + private Camera[] sceneCameras = new Camera[1]; + private bool isVisible = true; + + // constraints: + [NonSerialized] private IObiConstraints[] m_Constraints = new IObiConstraints[Oni.ConstraintTypeCount]; + + // constraint parameters: + public Oni.ConstraintParameters distanceConstraintParameters = new Oni.ConstraintParameters(true, Oni.ConstraintParameters.EvaluationOrder.Sequential, 1); + public Oni.ConstraintParameters bendingConstraintParameters = new Oni.ConstraintParameters(true, Oni.ConstraintParameters.EvaluationOrder.Parallel, 1); + public Oni.ConstraintParameters particleCollisionConstraintParameters = new Oni.ConstraintParameters(true, Oni.ConstraintParameters.EvaluationOrder.Sequential, 1); + public Oni.ConstraintParameters particleFrictionConstraintParameters = new Oni.ConstraintParameters(true, Oni.ConstraintParameters.EvaluationOrder.Parallel, 1); + public Oni.ConstraintParameters collisionConstraintParameters = new Oni.ConstraintParameters(true, Oni.ConstraintParameters.EvaluationOrder.Sequential, 1); + public Oni.ConstraintParameters frictionConstraintParameters = new Oni.ConstraintParameters(true, Oni.ConstraintParameters.EvaluationOrder.Parallel, 1); + public Oni.ConstraintParameters skinConstraintParameters = new Oni.ConstraintParameters(true, Oni.ConstraintParameters.EvaluationOrder.Sequential, 1); + public Oni.ConstraintParameters volumeConstraintParameters = new Oni.ConstraintParameters(true, Oni.ConstraintParameters.EvaluationOrder.Parallel, 1); + public Oni.ConstraintParameters shapeMatchingConstraintParameters = new Oni.ConstraintParameters(true, Oni.ConstraintParameters.EvaluationOrder.Parallel, 1); + public Oni.ConstraintParameters tetherConstraintParameters = new Oni.ConstraintParameters(true, Oni.ConstraintParameters.EvaluationOrder.Parallel, 1); + public Oni.ConstraintParameters pinConstraintParameters = new Oni.ConstraintParameters(true, Oni.ConstraintParameters.EvaluationOrder.Parallel, 1); + public Oni.ConstraintParameters stitchConstraintParameters = new Oni.ConstraintParameters(true, Oni.ConstraintParameters.EvaluationOrder.Parallel, 1); + public Oni.ConstraintParameters densityConstraintParameters = new Oni.ConstraintParameters(true, Oni.ConstraintParameters.EvaluationOrder.Parallel, 1); + public Oni.ConstraintParameters stretchShearConstraintParameters = new Oni.ConstraintParameters(true, Oni.ConstraintParameters.EvaluationOrder.Sequential, 1); + public Oni.ConstraintParameters bendTwistConstraintParameters = new Oni.ConstraintParameters(true, Oni.ConstraintParameters.EvaluationOrder.Sequential, 1); + public Oni.ConstraintParameters chainConstraintParameters = new Oni.ConstraintParameters(false, Oni.ConstraintParameters.EvaluationOrder.Sequential, 1); + + // rigidbodies + ObiNativeVector4List m_RigidbodyLinearVelocities; + ObiNativeVector4List m_RigidbodyAngularVelocities; + + // colors + [NonSerialized] private ObiNativeColorList m_Colors; + + // cell indices + [NonSerialized] private ObiNativeInt4List m_CellCoords; + + // status: + [NonSerialized] private ObiNativeIntList m_ActiveParticles; + [NonSerialized] private ObiNativeIntList m_Simplices; + + // positions + [NonSerialized] private ObiNativeVector4List m_Positions; + [NonSerialized] private ObiNativeVector4List m_RestPositions; + [NonSerialized] private ObiNativeVector4List m_PrevPositions; + [NonSerialized] private ObiNativeVector4List m_StartPositions; + [NonSerialized] private ObiNativeVector4List m_RenderablePositions; + + // orientations + [NonSerialized] private ObiNativeQuaternionList m_Orientations; + [NonSerialized] private ObiNativeQuaternionList m_RestOrientations; + [NonSerialized] private ObiNativeQuaternionList m_PrevOrientations; + [NonSerialized] private ObiNativeQuaternionList m_StartOrientations; + [NonSerialized] private ObiNativeQuaternionList m_RenderableOrientations; /**< renderable particle orientations.*/ + + // velocities + [NonSerialized] private ObiNativeVector4List m_Velocities; + [NonSerialized] private ObiNativeVector4List m_AngularVelocities; + + // masses/inertia tensors + [NonSerialized] private ObiNativeFloatList m_InvMasses; + [NonSerialized] private ObiNativeFloatList m_InvRotationalMasses; + [NonSerialized] private ObiNativeVector4List m_InvInertiaTensors; + + // external forces + [NonSerialized] private ObiNativeVector4List m_ExternalForces; + [NonSerialized] private ObiNativeVector4List m_ExternalTorques; + [NonSerialized] private ObiNativeVector4List m_Wind; + + // deltas + [NonSerialized] private ObiNativeVector4List m_PositionDeltas; + [NonSerialized] private ObiNativeQuaternionList m_OrientationDeltas; + [NonSerialized] private ObiNativeIntList m_PositionConstraintCounts; + [NonSerialized] private ObiNativeIntList m_OrientationConstraintCounts; + + // particle collisions: + [NonSerialized] private ObiNativeIntList m_CollisionMaterials; + [NonSerialized] private ObiNativeIntList m_Phases; + [NonSerialized] private ObiNativeIntList m_Filters; + + // particle shape: + [NonSerialized] private ObiNativeVector4List m_Anisotropies; + [NonSerialized] private ObiNativeVector4List m_PrincipalRadii; + [NonSerialized] private ObiNativeVector4List m_Normals; + + // fluids + [NonSerialized] private ObiNativeVector4List m_Vorticities; + [NonSerialized] private ObiNativeVector4List m_FluidData; + [NonSerialized] private ObiNativeVector4List m_UserData; + [NonSerialized] private ObiNativeFloatList m_SmoothingRadii; + [NonSerialized] private ObiNativeFloatList m_Buoyancies; + [NonSerialized] private ObiNativeFloatList m_RestDensities; + [NonSerialized] private ObiNativeFloatList m_Viscosities; + [NonSerialized] private ObiNativeFloatList m_SurfaceTension; + [NonSerialized] private ObiNativeFloatList m_VortConfinement; + [NonSerialized] private ObiNativeFloatList m_AtmosphericDrag; + [NonSerialized] private ObiNativeFloatList m_AtmosphericPressure; + [NonSerialized] private ObiNativeFloatList m_Diffusion; + + public ISolverImpl implementation + { + get { return m_SolverImpl; } + } + + public bool initialized + { + get { return m_SolverImpl != null; } + } + + public IObiBackend simulationBackend + { + get { return m_SimulationBackend; } + } + + public BackendType backendType + { + set + { + if (m_Backend != value) + { + m_Backend = value; + UpdateBackend(); + } + } + get { return m_Backend; } + } + + public SimplexCounts simplexCounts + { + get { return m_SimplexCounts; } + } + + public UnityEngine.Bounds Bounds + { + get { return bounds; } + } + + public bool IsVisible + { + get { return isVisible; } + } + + public float maxScale + { + get { return m_MaxScale; } + } + + public int allocParticleCount + { + get { return particleToActor.Count(s => s != null && s.actor != null); } + } + + public int contactCount + { + get { return m_contactCount; } + } + + public int particleContactCount + { + get { return m_particleContactCount; } + } + + public ParticleInActor[] particleToActor + { + get + { + if (m_ParticleToActor == null) + m_ParticleToActor = new ParticleInActor[0]; + + return m_ParticleToActor; + } + } + + public ObiNativeIntList activeParticles + { + get + { + if (m_ActiveParticles == null) + m_ActiveParticles = new ObiNativeIntList(); + + return m_ActiveParticles; + } + } + + public ObiNativeIntList simplices + { + get + { + if (m_Simplices == null) + m_Simplices = new ObiNativeIntList(); + + return m_Simplices; + } + } + + public ObiNativeVector4List rigidbodyLinearDeltas + { + get + { + if (m_RigidbodyLinearVelocities == null) + { + m_RigidbodyLinearVelocities = new ObiNativeVector4List(); + } + return m_RigidbodyLinearVelocities; + } + } + + public ObiNativeVector4List rigidbodyAngularDeltas + { + get + { + if (m_RigidbodyAngularVelocities == null) + { + m_RigidbodyAngularVelocities = new ObiNativeVector4List(); + } + return m_RigidbodyAngularVelocities; + } + } + + public ObiNativeColorList colors + { + get + { + if (m_Colors == null) + { + m_Colors = new ObiNativeColorList(); + } + return m_Colors; + } + } + + public ObiNativeInt4List cellCoords + { + get + { + if (m_CellCoords == null) + { + m_CellCoords = new ObiNativeInt4List(8, 16, new VInt4(int.MaxValue)); + } + return m_CellCoords; + } + } + + #region Position arrays + + public ObiNativeVector4List positions + { + get + { + if (m_Positions == null) + m_Positions = new ObiNativeVector4List(); + return m_Positions; + } + } + + public ObiNativeVector4List restPositions + { + get + { + if (m_RestPositions == null) + m_RestPositions = new ObiNativeVector4List(); + return m_RestPositions; + } + } + + public ObiNativeVector4List prevPositions + { + get + { + if (m_PrevPositions == null) + m_PrevPositions = new ObiNativeVector4List(); + return m_PrevPositions; + } + } + + public ObiNativeVector4List startPositions + { + get + { + if (m_StartPositions == null) + m_StartPositions = new ObiNativeVector4List(); + return m_StartPositions; + } + } + + public ObiNativeVector4List renderablePositions + { + get + { + if (m_RenderablePositions == null) + m_RenderablePositions = new ObiNativeVector4List(); + return m_RenderablePositions; + } + } + + #endregion + + #region Orientation arrays + + public ObiNativeQuaternionList orientations + { + get + { + if (m_Orientations == null) + m_Orientations = new ObiNativeQuaternionList(); + return m_Orientations; + } + } + + public ObiNativeQuaternionList restOrientations + { + get + { + if (m_RestOrientations == null) + m_RestOrientations = new ObiNativeQuaternionList(); + return m_RestOrientations; + } + } + + public ObiNativeQuaternionList prevOrientations + { + get + { + if (m_PrevOrientations == null) + m_PrevOrientations = new ObiNativeQuaternionList(); + return m_PrevOrientations; + } + } + + public ObiNativeQuaternionList startOrientations + { + get + { + if (m_StartOrientations == null) + m_StartOrientations = new ObiNativeQuaternionList(); + return m_StartOrientations; + } + } + + public ObiNativeQuaternionList renderableOrientations + { + get + { + if (m_RenderableOrientations == null) + m_RenderableOrientations = new ObiNativeQuaternionList(); + return m_RenderableOrientations; + } + } + + #endregion + + #region Velocity arrays + + public ObiNativeVector4List velocities + { + get + { + if (m_Velocities == null) + m_Velocities = new ObiNativeVector4List(); + return m_Velocities; + } + } + + public ObiNativeVector4List angularVelocities + { + get + { + if (m_AngularVelocities == null) + m_AngularVelocities = new ObiNativeVector4List(); + return m_AngularVelocities; + } + } + + #endregion + + #region Mass arrays + + public ObiNativeFloatList invMasses + { + get + { + if (m_InvMasses == null) + m_InvMasses = new ObiNativeFloatList(); + return m_InvMasses; + } + } + + public ObiNativeFloatList invRotationalMasses + { + get + { + if (m_InvRotationalMasses == null) + m_InvRotationalMasses = new ObiNativeFloatList(); + return m_InvRotationalMasses; + } + } + + public ObiNativeVector4List invInertiaTensors + { + get + { + if (m_InvInertiaTensors == null) + m_InvInertiaTensors = new ObiNativeVector4List(); + return m_InvInertiaTensors; + } + } + + #endregion + + #region External forces + + public ObiNativeVector4List externalForces + { + get + { + if (m_ExternalForces == null) + m_ExternalForces = new ObiNativeVector4List(); + return m_ExternalForces; + } + } + + public ObiNativeVector4List externalTorques + { + get + { + if (m_ExternalTorques == null) + m_ExternalTorques = new ObiNativeVector4List(); + return m_ExternalTorques; + } + } + + public ObiNativeVector4List wind + { + get + { + if (m_Wind == null) + m_Wind = new ObiNativeVector4List(); + return m_Wind; + } + } + + #endregion + + #region Deltas + + public ObiNativeVector4List positionDeltas + { + get + { + if (m_PositionDeltas == null) + m_PositionDeltas = new ObiNativeVector4List(); + return m_PositionDeltas; + } + } + + public ObiNativeQuaternionList orientationDeltas + { + get + { + if (m_OrientationDeltas == null) + m_OrientationDeltas = new ObiNativeQuaternionList(8, 16, new Quaternion(0, 0, 0, 0)); + return m_OrientationDeltas; + } + } + + public ObiNativeIntList positionConstraintCounts + { + get + { + if (m_PositionConstraintCounts == null) + m_PositionConstraintCounts = new ObiNativeIntList(); + return m_PositionConstraintCounts; + } + } + + public ObiNativeIntList orientationConstraintCounts + { + get + { + if (m_OrientationConstraintCounts == null) + m_OrientationConstraintCounts = new ObiNativeIntList(); + return m_OrientationConstraintCounts; + } + } + + #endregion + + #region Shape and phase + + public ObiNativeIntList collisionMaterials + { + get + { + if (m_CollisionMaterials == null) + m_CollisionMaterials = new ObiNativeIntList(); + return m_CollisionMaterials; + } + } + + public ObiNativeIntList phases + { + get + { + if (m_Phases == null) + m_Phases = new ObiNativeIntList(); + return m_Phases; + } + } + + public ObiNativeIntList filters + { + get + { + if (m_Filters == null) + m_Filters = new ObiNativeIntList(); + return m_Filters; + } + } + + public ObiNativeVector4List anisotropies + { + get + { + if (m_Anisotropies == null) + m_Anisotropies = new ObiNativeVector4List(); + return m_Anisotropies; + } + } + + public ObiNativeVector4List principalRadii + { + get + { + if (m_PrincipalRadii == null) + m_PrincipalRadii = new ObiNativeVector4List(); + return m_PrincipalRadii; + } + } + + public ObiNativeVector4List normals + { + get + { + if (m_Normals == null) + m_Normals = new ObiNativeVector4List(); + return m_Normals; + } + } + + #endregion + + #region Fluid properties + + public ObiNativeVector4List vorticities + { + get + { + if (m_Vorticities == null) + m_Vorticities = new ObiNativeVector4List(); + return m_Vorticities; + } + } + + public ObiNativeVector4List fluidData + { + get + { + if (m_FluidData == null) + m_FluidData = new ObiNativeVector4List(); + return m_FluidData; + } + } + + public ObiNativeVector4List userData + { + get + { + if (m_UserData == null) + m_UserData = new ObiNativeVector4List(); + return m_UserData; + } + } + + public ObiNativeFloatList smoothingRadii + { + get + { + if (m_SmoothingRadii == null) + m_SmoothingRadii = new ObiNativeFloatList(); + return m_SmoothingRadii; + } + } + + public ObiNativeFloatList buoyancies + { + get + { + if (m_Buoyancies == null) + m_Buoyancies = new ObiNativeFloatList(); + return m_Buoyancies; + } + } + + public ObiNativeFloatList restDensities + { + get + { + if (m_RestDensities == null) + m_RestDensities = new ObiNativeFloatList(); + return m_RestDensities; + } + } + + public ObiNativeFloatList viscosities + { + get + { + if (m_Viscosities == null) + m_Viscosities = new ObiNativeFloatList(); + return m_Viscosities; + } + } + + public ObiNativeFloatList surfaceTension + { + get + { + if (m_SurfaceTension == null) + m_SurfaceTension = new ObiNativeFloatList(); + return m_SurfaceTension; + } + } + + public ObiNativeFloatList vortConfinement + { + get + { + if (m_VortConfinement == null) + m_VortConfinement = new ObiNativeFloatList(); + return m_VortConfinement; + } + } + + public ObiNativeFloatList atmosphericDrag + { + get + { + if (m_AtmosphericDrag == null) + m_AtmosphericDrag = new ObiNativeFloatList(); + return m_AtmosphericDrag; + } + } + + public ObiNativeFloatList atmosphericPressure + { + get + { + if (m_AtmosphericPressure == null) + m_AtmosphericPressure = new ObiNativeFloatList(); + return m_AtmosphericPressure; + } + } + + public ObiNativeFloatList diffusion + { + get + { + if (m_Diffusion == null) + m_Diffusion = new ObiNativeFloatList(); + return m_Diffusion; + } + } + + #endregion + + + void Update() + { + var scale = transform.lossyScale; + m_MaxScale = Mathf.Max(Mathf.Max(scale.x, scale.y), scale.z); + } + + private void OnDestroy() + { + // Remove all actors from the solver. This will trigger Teardown() when the last actor is removed. + while (actors.Count > 0) + RemoveActor(actors[actors.Count - 1]); + } + + private void CreateBackend() + { + switch (m_Backend) + { + +#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) + case BackendType.Burst: m_SimulationBackend = new BurstBackend(); break; +#endif +#if (OBI_ONI_SUPPORTED) + case BackendType.Oni: m_SimulationBackend = new OniBackend(); break; +#endif + + default: +#if (OBI_ONI_SUPPORTED) + m_SimulationBackend = new OniBackend(); +#else + m_SimulationBackend = new NullBackend(); +#endif + break; + } + } + + public void Initialize() + { + if (!initialized) + { + CreateBackend(); + + // Set up local actor and particle buffers: + actors = new List(); + freeList = new ObiNativeIntList(); + m_ParticleToActor = new ParticleInActor[0]; + + // Create constraints: + m_Constraints[(int)Oni.ConstraintType.Distance] = new ObiDistanceConstraintsData(); + m_Constraints[(int)Oni.ConstraintType.Bending] = new ObiBendConstraintsData(); + m_Constraints[(int)Oni.ConstraintType.Aerodynamics] = new ObiAerodynamicConstraintsData(); + m_Constraints[(int)Oni.ConstraintType.StretchShear] = new ObiStretchShearConstraintsData(); + m_Constraints[(int)Oni.ConstraintType.BendTwist] = new ObiBendTwistConstraintsData(); + m_Constraints[(int)Oni.ConstraintType.Chain] = new ObiChainConstraintsData(); + m_Constraints[(int)Oni.ConstraintType.ShapeMatching] = new ObiShapeMatchingConstraintsData(); + m_Constraints[(int)Oni.ConstraintType.Volume] = new ObiVolumeConstraintsData(); + m_Constraints[(int)Oni.ConstraintType.Tether] = new ObiTetherConstraintsData(); + m_Constraints[(int)Oni.ConstraintType.Skin] = new ObiSkinConstraintsData(); + m_Constraints[(int)Oni.ConstraintType.Pin] = new ObiPinConstraintsData(); + + // Create the solver: + m_SolverImpl = m_SimulationBackend.CreateSolver(this, 0); + + // Set data arrays: + m_SolverImpl.ParticleCountChanged(this); + m_SolverImpl.SetRigidbodyArrays(this); + + // Initialize moving transform: + InitializeTransformFrame(); + + // Set initial parameter values: + PushSolverParameters(); + } + } + + public void Teardown() + { + if (initialized) + { + // Clear all constraints: + PushConstraints(); + + // Destroy the Oni solver: + m_SimulationBackend.DestroySolver(m_SolverImpl); + m_SolverImpl = null; + + // Free particle / rigidbody memory: + FreeParticleArrays(); + FreeRigidbodyArrays(); + + freeList.Dispose(); + } + } + + public void UpdateBackend() + { + // remove all actors, this will trigger a teardown: + List temp = new List(actors); + foreach (ObiActor actor in temp) + actor.RemoveFromSolver(); + + // re-add all actors. + foreach (ObiActor actor in temp) + actor.AddToSolver(); + } + + private void FreeRigidbodyArrays() + { + rigidbodyLinearDeltas.Dispose(); + rigidbodyAngularDeltas.Dispose(); + + m_RigidbodyLinearVelocities = null; + m_RigidbodyAngularVelocities = null; + } + + public void EnsureRigidbodyArraysCapacity(int count) + { + if (initialized && count >= rigidbodyLinearDeltas.count) + { + rigidbodyLinearDeltas.ResizeInitialized(count); + rigidbodyAngularDeltas.ResizeInitialized(count); + + m_SolverImpl.SetRigidbodyArrays(this); + } + } + + private void FreeParticleArrays() + { + activeParticles.Dispose(); + simplices.Dispose(); + colors.Dispose(); + cellCoords.Dispose(); + startPositions.Dispose(); + startOrientations.Dispose(); + positions.Dispose(); + prevPositions.Dispose(); + restPositions.Dispose(); + velocities.Dispose(); + orientations.Dispose(); + prevOrientations.Dispose(); + restOrientations.Dispose(); + angularVelocities.Dispose(); + invMasses.Dispose(); + invRotationalMasses.Dispose(); + principalRadii.Dispose(); + collisionMaterials.Dispose(); + phases.Dispose(); + filters.Dispose(); + renderablePositions.Dispose(); + renderableOrientations.Dispose(); + anisotropies.Dispose(); + smoothingRadii.Dispose(); + buoyancies.Dispose(); + restDensities.Dispose(); + viscosities.Dispose(); + surfaceTension.Dispose(); + vortConfinement.Dispose(); + atmosphericDrag.Dispose(); + atmosphericPressure.Dispose(); + diffusion.Dispose(); + vorticities.Dispose(); + fluidData.Dispose(); + userData.Dispose(); + externalForces.Dispose(); + externalTorques.Dispose(); + wind.Dispose(); + positionDeltas.Dispose(); + orientationDeltas.Dispose(); + positionConstraintCounts.Dispose(); + orientationConstraintCounts.Dispose(); + normals.Dispose(); + invInertiaTensors.Dispose(); + + m_ActiveParticles = null; + m_Simplices = null; + m_Colors = null; + m_CellCoords = null; + m_Positions = null; + m_RestPositions = null; + m_PrevPositions = null; + m_StartPositions = null; + m_RenderablePositions = null; + m_Orientations = null; + m_RestOrientations = null; + m_PrevOrientations = null; + m_StartOrientations = null; + m_RenderableOrientations = null; + m_Velocities = null; + m_AngularVelocities = null; + m_InvMasses = null; + m_InvRotationalMasses = null; + m_InvInertiaTensors = null; + m_ExternalForces = null; + m_ExternalTorques = null; + m_Wind = null; + m_PositionDeltas = null; + m_OrientationDeltas = null; + m_PositionConstraintCounts = null; + m_OrientationConstraintCounts = null; + m_CollisionMaterials = null; + m_Phases = null; + m_Filters = null; + m_Anisotropies = null; + m_PrincipalRadii = null; + m_Normals = null; + m_Vorticities = null; + m_FluidData = null; + m_UserData = null; + m_SmoothingRadii = null; + m_Buoyancies = null; + m_RestDensities = null; + m_Viscosities = null; + m_SurfaceTension = null; + m_VortConfinement = null; + m_AtmosphericDrag = null; + m_AtmosphericPressure = null; + m_Diffusion = null; + } + + private void EnsureParticleArraysCapacity(int count) + { + // only resize if the count is larger than the current amount of particles: + if (count >= positions.count) + { + colors.ResizeInitialized(count); + startPositions.ResizeInitialized(count); + positions.ResizeInitialized(count); + prevPositions.ResizeInitialized(count); + restPositions.ResizeInitialized(count); + startOrientations.ResizeInitialized(count, Quaternion.identity); + orientations.ResizeInitialized(count, Quaternion.identity); + prevOrientations.ResizeInitialized(count, Quaternion.identity); + restOrientations.ResizeInitialized(count, Quaternion.identity); + renderablePositions.ResizeInitialized(count); + renderableOrientations.ResizeInitialized(count, Quaternion.identity); + velocities.ResizeInitialized(count); + angularVelocities.ResizeInitialized(count); + invMasses.ResizeInitialized(count); + invRotationalMasses.ResizeInitialized(count); + principalRadii.ResizeInitialized(count); + collisionMaterials.ResizeInitialized(count); + phases.ResizeInitialized(count); + filters.ResizeInitialized(count); + anisotropies.ResizeInitialized(count * 3); + smoothingRadii.ResizeInitialized(count); + buoyancies.ResizeInitialized(count); + restDensities.ResizeInitialized(count); + viscosities.ResizeInitialized(count); + surfaceTension.ResizeInitialized(count); + vortConfinement.ResizeInitialized(count); + atmosphericDrag.ResizeInitialized(count); + atmosphericPressure.ResizeInitialized(count); + diffusion.ResizeInitialized(count); + vorticities.ResizeInitialized(count); + fluidData.ResizeInitialized(count); + userData.ResizeInitialized(count); + externalForces.ResizeInitialized(count); + externalTorques.ResizeInitialized(count); + wind.ResizeInitialized(count); + positionDeltas.ResizeInitialized(count); + orientationDeltas.ResizeInitialized(count, new Quaternion(0, 0, 0, 0)); + positionConstraintCounts.ResizeInitialized(count); + orientationConstraintCounts.ResizeInitialized(count); + normals.ResizeInitialized(count); + invInertiaTensors.ResizeInitialized(count); + + m_SolverImpl.ParticleCountChanged(this); + } + + if (count >= m_ParticleToActor.Length) + { + Array.Resize(ref m_ParticleToActor, count * 2); + } + } + + private void AllocateParticles(int[] particleIndices) + { + + // If attempting to allocate more particles than we have: + if (particleIndices.Length > freeList.count) + { + int grow = particleIndices.Length - freeList.count; + + // append new free indices: + for (int i = 0; i < grow; ++i) + freeList.Add(positions.count + i); + + // grow particle arrays: + EnsureParticleArraysCapacity(positions.count + particleIndices.Length); + } + + // determine first particle in the free list to use: + int first = freeList.count - particleIndices.Length; + + // copy free indices to the input array: + freeList.CopyTo(particleIndices, first, particleIndices.Length); + + // shorten the free list: + freeList.ResizeUninitialized(first); + + } + + private void FreeParticles(int[] particleIndices) + { + freeList.AddRange(particleIndices); + } + + + /// + /// Adds an actor to the solver. + /// + /// Attemps to add the actor to this solver returning whether this was successful or not. In case the actor was already added, or had no reference to a blueprint, this operation will return false. + /// If this was the first actor added to the solver, will attempt to initialize the solver. + /// While in play mode, if the actor is sucessfully added to the solver, will also call actor.LoadBlueprint(). + /// An actor. + /// + /// Whether the actor was sucessfully added. + /// + public bool AddActor(ObiActor actor) + { + if (actor == null) + return false; + + if ((actors == null || !actors.Contains(actor)) && actor.sourceBlueprint != null) + { + // If the solver is not initialized yet, do so: + Initialize(); + + actor.solverIndices = new int[actor.sourceBlueprint.particleCount]; + + AllocateParticles(actor.solverIndices); + + for (int i = 0; i < actor.solverIndices.Length; ++i) + particleToActor[actor.solverIndices[i]] = new ObiSolver.ParticleInActor(actor, i); + + actors.Add(actor); + + actor.LoadBlueprint(this); + } + + return true; + + } + + /// + /// Attempts to remove an actor from this solver, and returns whether this was sucessful or not. + /// + /// Will only reurn true if the actor had been previously added successfully to this solver. + /// If the actor is sucessfully removed from the solver, will also call actor.UnloadBlueprint(). Once the last actor is removed from the solver, + /// this method will attempt to tear down the solver. + /// An actor. + /// + /// Whether the actor was sucessfully removed. + /// + public bool RemoveActor(ObiActor actor) + { + + if (actor == null) + return false; + + // Find actor index in our actors array: + int index = actors.IndexOf(actor); + + // If we are in charge of this actor indeed, perform all steps necessary to release it. + if (index >= 0) + { + actor.UnloadBlueprint(this); + + for (int i = 0; i < actor.solverIndices.Length; ++i) + particleToActor[actor.solverIndices[i]] = null; + + FreeParticles(actor.solverIndices); + + actors.RemoveAt(index); + + actor.solverIndices = null; + + // If this was the last actor in the solver, tear it down: + if (actors.Count == 0) + Teardown(); + + return true; + } + + return false; + } + + /// + /// Updates solver parameters. + /// + /// Call this after modifying solver or constraint parameters. + public void PushSolverParameters() + { + if (!initialized) + return; + + m_SolverImpl.SetParameters(parameters); + + m_SolverImpl.SetConstraintGroupParameters(Oni.ConstraintType.Distance, ref distanceConstraintParameters); + + m_SolverImpl.SetConstraintGroupParameters(Oni.ConstraintType.Bending, ref bendingConstraintParameters); + + m_SolverImpl.SetConstraintGroupParameters(Oni.ConstraintType.ParticleCollision, ref particleCollisionConstraintParameters); + + m_SolverImpl.SetConstraintGroupParameters(Oni.ConstraintType.ParticleFriction, ref particleFrictionConstraintParameters); + + m_SolverImpl.SetConstraintGroupParameters(Oni.ConstraintType.Collision, ref collisionConstraintParameters); + + m_SolverImpl.SetConstraintGroupParameters(Oni.ConstraintType.Friction, ref frictionConstraintParameters); + + m_SolverImpl.SetConstraintGroupParameters(Oni.ConstraintType.Density, ref densityConstraintParameters); + + m_SolverImpl.SetConstraintGroupParameters(Oni.ConstraintType.Skin, ref skinConstraintParameters); + + m_SolverImpl.SetConstraintGroupParameters(Oni.ConstraintType.Volume, ref volumeConstraintParameters); + + m_SolverImpl.SetConstraintGroupParameters(Oni.ConstraintType.ShapeMatching, ref shapeMatchingConstraintParameters); + + m_SolverImpl.SetConstraintGroupParameters(Oni.ConstraintType.Tether, ref tetherConstraintParameters); + + m_SolverImpl.SetConstraintGroupParameters(Oni.ConstraintType.Pin, ref pinConstraintParameters); + + m_SolverImpl.SetConstraintGroupParameters(Oni.ConstraintType.Stitch, ref stitchConstraintParameters); + + m_SolverImpl.SetConstraintGroupParameters(Oni.ConstraintType.StretchShear, ref stretchShearConstraintParameters); + + m_SolverImpl.SetConstraintGroupParameters(Oni.ConstraintType.BendTwist, ref bendTwistConstraintParameters); + + m_SolverImpl.SetConstraintGroupParameters(Oni.ConstraintType.Chain, ref chainConstraintParameters); + + if (OnUpdateParameters != null) + OnUpdateParameters(this); + + } + + /// + /// Returns the parameters used by a given constraint type. + /// + /// If you know the type of the constraints at runtime, + /// this is the same as directly accessing the appropiate public Oni.ConstraintParameters struct in the solver. + /// Type of the constraints whose parameters will be returned by this method. + /// + /// Parameters for the constraints of the specified type. + /// + public Oni.ConstraintParameters GetConstraintParameters(Oni.ConstraintType constraintType) + { + switch (constraintType) + { + case Oni.ConstraintType.Distance: return distanceConstraintParameters; + case Oni.ConstraintType.Bending: return bendingConstraintParameters; + case Oni.ConstraintType.ParticleCollision: return particleCollisionConstraintParameters; + case Oni.ConstraintType.ParticleFriction: return particleFrictionConstraintParameters; + case Oni.ConstraintType.Collision: return collisionConstraintParameters; + case Oni.ConstraintType.Friction: return frictionConstraintParameters; + case Oni.ConstraintType.Skin: return skinConstraintParameters; + case Oni.ConstraintType.Volume: return volumeConstraintParameters; + case Oni.ConstraintType.ShapeMatching: return shapeMatchingConstraintParameters; + case Oni.ConstraintType.Tether: return tetherConstraintParameters; + case Oni.ConstraintType.Pin: return pinConstraintParameters; + case Oni.ConstraintType.Stitch: return stitchConstraintParameters; + case Oni.ConstraintType.Density: return densityConstraintParameters; + case Oni.ConstraintType.StretchShear: return stretchShearConstraintParameters; + case Oni.ConstraintType.BendTwist: return bendTwistConstraintParameters; + case Oni.ConstraintType.Chain: return chainConstraintParameters; + + default: return new Oni.ConstraintParameters(true, Oni.ConstraintParameters.EvaluationOrder.Sequential, 1); + } + } + + /// + /// Returns the runtime representation of constraints of a given type being simulated by this solver. + /// + /// Type of the constraints that will be returned by this method. + /// + /// The runtime constraints of the type speficied. + /// + public IObiConstraints GetConstraintsByType(Oni.ConstraintType type) + { + int index = (int)type; + if (m_Constraints != null && index >= 0 && index < m_Constraints.Length) + return m_Constraints[index]; + return null; + } + + private void PushActiveParticles() + { + activeParticles.Clear(); + for (int i = 0; i < actors.Count; ++i) + { + ObiActor currentActor = actors[i]; + + if (currentActor.isActiveAndEnabled) + { + for (int j = 0; j < currentActor.activeParticleCount; ++j) + activeParticles.Add(currentActor.solverIndices[j]); + } + } + + implementation.SetActiveParticles(activeParticles); + dirtyActiveParticles = false; + } + + private void PushSimplices() + { + simplices.Clear(); + points.Clear(); + edges.Clear(); + triangles.Clear(); + + for (int i = 0; i < actors.Count; ++i) + { + ObiActor currentActor = actors[i]; + + if (currentActor.isActiveAndEnabled && currentActor.isLoaded) + { + //simplex based contacts + if (currentActor.surfaceCollisions) + { + if (currentActor.blueprint.points != null) + for (int j = 0; j < currentActor.blueprint.points.Length; ++j) + { + int actorIndex = currentActor.blueprint.points[j]; + + if (actorIndex < currentActor.activeParticleCount) + points.Add(currentActor.solverIndices[actorIndex]); + } + + if (currentActor.blueprint.edges != null) + for (int j = 0; j < currentActor.blueprint.edges.Length / 2; ++j) + { + int actorIndex1 = currentActor.blueprint.edges[j * 2]; + int actorIndex2 = currentActor.blueprint.edges[j * 2 + 1]; + + if (actorIndex1 < currentActor.activeParticleCount && actorIndex2 < currentActor.activeParticleCount) + { + edges.Add(currentActor.solverIndices[actorIndex1]); + edges.Add(currentActor.solverIndices[actorIndex2]); + } + } + + if (currentActor.blueprint.triangles != null) + for (int j = 0; j < currentActor.blueprint.triangles.Length / 3; ++j) + { + int actorIndex1 = currentActor.blueprint.triangles[j * 3]; + int actorIndex2 = currentActor.blueprint.triangles[j * 3 + 1]; + int actorIndex3 = currentActor.blueprint.triangles[j * 3 + 2]; // TODO: +1: degenerate triangles. check out! + + if (actorIndex1 < currentActor.activeParticleCount && + actorIndex2 < currentActor.activeParticleCount && + actorIndex3 < currentActor.activeParticleCount) + { + triangles.Add(currentActor.solverIndices[actorIndex1]); + triangles.Add(currentActor.solverIndices[actorIndex2]); + triangles.Add(currentActor.solverIndices[actorIndex3]); + } + } + } + // particle based contacts + else + { + // generate a point simplex out of each active particle: + for (int j = 0; j < currentActor.activeParticleCount; ++j) + points.Add(currentActor.solverIndices[j]); + } + } + } + + simplices.capacity = points.Count + edges.Count + triangles.Count; + simplices.AddRange(points); + simplices.AddRange(edges); + simplices.AddRange(triangles); + + m_SimplexCounts = new SimplexCounts(points.Count, edges.Count / 2, triangles.Count / 3); + cellCoords.ResizeInitialized(m_SimplexCounts.simplexCount); + + m_SolverImpl.SetSimplices(simplices, m_SimplexCounts); + dirtySimplices = false; + + } + + private void PushConstraints() + { + // Clear all dirty constraints: + for (int i = 0; i < Oni.ConstraintTypeCount; ++i) + if (m_Constraints[i] != null && ((1 << i) & dirtyConstraints) != 0) + m_Constraints[i].Clear(); + + // Iterate over all actors, merging their batches together: + for (int k = 0; k < actors.Count; ++k) + { + if (actors[k].isLoaded) + { + for (int i = 0; i < Oni.ConstraintTypeCount; ++i) + if (m_Constraints[i] != null && ((1 << i) & dirtyConstraints) != 0) + { + var constraints = actors[k].GetConstraintsByType((Oni.ConstraintType)i); + m_Constraints[i].Merge(actors[k], constraints); + } + } + } + + // Readd the constraints to the solver: + for (int i = 0; i < Oni.ConstraintTypeCount; ++i) + if (m_Constraints[i] != null && ((1 << i) & dirtyConstraints) != 0) + m_Constraints[i].AddToSolver(this); + + // Reset the dirty flag: + dirtyConstraints = 0; + } + + /** + * Checks if any particle in the solver is visible from at least one camera. If so, sets isVisible to true, false otherwise. + */ + private void UpdateVisibility() + { + + using (m_UpdateVisibilityPerfMarker.Auto()) + { + + using (m_GetSolverBoundsPerfMarker.Auto()) + { + // get bounds in solver space: + Vector3 min = Vector3.zero, max = Vector3.zero; + m_SolverImpl.GetBounds(ref min, ref max); + bounds.SetMinMax(min, max); + } + + if (bounds.AreValid()) + { + using (m_TestBoundsPerfMarker.Auto()) + { + // transform bounds to world space: + bounds = bounds.Transform(transform.localToWorldMatrix); + + using (m_GetAllCamerasPerfMarker.Auto()) + { + Array.Resize(ref sceneCameras, Camera.allCamerasCount); + Camera.GetAllCameras(sceneCameras); + } + + foreach (Camera cam in sceneCameras) + { + GeometryUtility.CalculateFrustumPlanes(cam, planes); + if (GeometryUtility.TestPlanesAABB(planes, bounds)) + { + if (!isVisible) + { + isVisible = true; + foreach (ObiActor actor in actors) + actor.OnSolverVisibilityChanged(isVisible); + } + return; + } + } + } + } + + if (isVisible) + { + isVisible = false; + foreach (ObiActor actor in actors) + actor.OnSolverVisibilityChanged(isVisible); + } + } + } + + private void InitializeTransformFrame() + { + Vector4 translation = transform.position; + Vector4 scale = transform.lossyScale; + Quaternion rotation = transform.rotation; + + m_SolverImpl.InitializeFrame(translation, scale, rotation); + } + + private void UpdateTransformFrame(float dt) + { + Vector4 translation = transform.position; + Vector4 scale = transform.lossyScale; + Quaternion rotation = transform.rotation; + + m_SolverImpl.UpdateFrame(translation, scale, rotation, dt); + m_SolverImpl.ApplyFrame(worldLinearInertiaScale, worldAngularInertiaScale, dt); + } + + public void PrepareFrame() + { + if (OnPrepareFrame != null) + OnPrepareFrame(this); + + foreach (ObiActor actor in actors) + actor.PrepareFrame(); + } + + /// + /// Signals the start of a new time step. + /// + /// Pushes active particles (if dirtyActiveParticles is true), and runtime constraints (if dirtyConstraints != 0). + /// Updates the solver's nertial reference frame. Calls begin step callbacks. + /// Finally, it schedules execution of simulation tasks at the beginng on a physics step (most notably, collision detection), and returns a handle to the job that will perform them. + /// Duration of the entire time step (in seconds). + /// + /// A handle to the job. + /// + public IObiJobHandle BeginStep(float stepTime) + { + if (!isActiveAndEnabled || !initialized) + return null; + + if (OnPrepareStep != null) + OnPrepareStep(this, stepTime); + + foreach (ObiActor actor in actors) + actor.PrepareStep(stepTime); + + // Update the active particles array: + if (dirtyActiveParticles) + PushActiveParticles(); + + // Update the simplices array: + if (dirtySimplices) + PushSimplices(); + + // Update constraint batches: + if (dirtyConstraints != 0) + PushConstraints(); + + // Update inertial frame: + UpdateTransformFrame(stepTime); + + // Update gravity: + parameters.gravity = gravitySpace == Space.World ? transform.InverseTransformVector(gravity) : gravity; + if (initialized) + m_SolverImpl.SetParameters(parameters); + + // Copy positions / orientations at the start of the step, for interpolation: + startPositions.CopyFrom(positions); + startOrientations.CopyFrom(orientations); + + if (OnBeginStep != null) + OnBeginStep(this, stepTime); + + foreach (ObiActor actor in actors) + actor.BeginStep(stepTime); + + // Perform collision detection: + if (simulateWhenInvisible || isVisible) + return m_SolverImpl.CollisionDetection(stepTime); + + return null; + } + + /// + /// Schedules the job to advance the simulation a given amount of time, then returns a handle to this job. + /// + /// Amount of time to advance (in seconds). + /// + /// A handle to the job. + /// + public IObiJobHandle Substep(float stepTime, float substepTime, int index) + { + + // Only update the solver if it is visible, or if we must simulate even when invisible. + if (isActiveAndEnabled && (simulateWhenInvisible || isVisible) && initialized) + { + if (OnSubstep != null) + OnSubstep(this, substepTime); + + foreach (ObiActor actor in actors) + actor.Substep(substepTime); + + // Update the solver (this is internally split in tasks so multiple solvers can be updated in parallel) + return m_SolverImpl.Substep(stepTime, substepTime, index); + } + + return null; + } + + /// + /// Wraps up a simulation step: resets external forces and calls collision callbacks. + /// + /// Size of the last substep performed this step (in seconds). + public void EndStep(float substepTime) + { + if (!initialized) + return; + + m_contactCount = implementation.GetConstraintCount(Oni.ConstraintType.Collision); + m_particleContactCount = implementation.GetConstraintCount(Oni.ConstraintType.ParticleCollision); + + if (OnCollision != null) + { + collisionArgs.contacts.SetCount(m_contactCount); + + if (m_contactCount > 0) + implementation.GetCollisionContacts(collisionArgs.contacts.Data, m_contactCount); + + OnCollision(this, collisionArgs); + + } + + if (OnParticleCollision != null) + { + particleCollisionArgs.contacts.SetCount(m_particleContactCount); + + if (m_particleContactCount > 0) + implementation.GetParticleCollisionContacts(particleCollisionArgs.contacts.Data, m_particleContactCount); + + OnParticleCollision(this, particleCollisionArgs); + + } + + m_SolverImpl.ResetForces(); + + if (OnEndStep != null) + OnEndStep(this); + + foreach (ObiActor actor in actors) + actor.EndStep(substepTime); + } + + /// + /// Finalizes the frame by performing physics state interpolation. + /// + /// This is usually used for mesh generation, rendering setup and other tasks that must take place after all physics steps for this frame are done. + /// Duration of this time step (in seconds). Note this is the entire timestep, not just the ast substep. + /// Remaining time that could not be simulated during this step (in seconds). This is used to interpolate physics state. + public void Interpolate(float stepTime, float unsimulatedTime) + { + if (!isActiveAndEnabled || !initialized) + return; + + // Only perform interpolation if the solver is visible, or if we must simulate even when invisible. + if (simulateWhenInvisible || isVisible) + { + using (m_StateInterpolationPerfMarker.Auto()) + { + // interpolate physics state: + m_SolverImpl.ApplyInterpolation(startPositions, startOrientations, stepTime, unsimulatedTime); + } + } + + UpdateVisibility(); + + if (OnInterpolate != null) + OnInterpolate(this); + + foreach (ObiActor actor in actors) + actor.Interpolate(); + + } + + public void ReleaseJobHandles() + { + if (!initialized) + return; + + m_SolverImpl.ReleaseJobHandles(); + } + + /// + /// Performs multiple spatial queries in parallel against all simplices in the solver, and returns a list of results. + /// + /// All other query/raycast methods are built on top of this one. Use it when you need maximum flexibility/performance. + /// List of query shapes to test against all simplices in the solver. + /// List of transforms, must have the same size as the shapes list. + /// + /// This list will contain results for all queries, in no specific order. + /// Use the queryIndex member of each query result to correlate each result to the query that spawned it. For instance: + /// a query result with queryIndex 5, belongs to the query shape at index 5 in the input shapes list. + /// + public void SpatialQuery(ObiNativeQueryShapeList shapes, ObiNativeAffineTransformList transforms, ObiNativeQueryResultList results) + { + if (!initialized || shapes == null || transforms == null || results == null || shapes.count != transforms.count) + return; + + m_SolverImpl.SpatialQuery(shapes, transforms, results); + } + + /// + /// Performs a single spatial queries against all simplices in the solver, and returns a list of results. + /// + /// Query shape to test against all simplices in the solver. + /// Transform applied to the query shape. + /// + /// An array that contains the query results. + /// + public QueryResult[] SpatialQuery(QueryShape shape, AffineTransform transform) + { + if (!initialized) + return null; + + var queries = new ObiNativeQueryShapeList(); + var transforms = new ObiNativeAffineTransformList(); + var results = new ObiNativeQueryResultList(); + + queries.Add(shape); + transforms.Add(transform); + + m_SolverImpl.SpatialQuery(queries, transforms, results); + + var resultsArray = results.ToArray(); + + queries.Dispose(); + transforms.Dispose(); + results.Dispose(); + + return resultsArray; + } + + /// + /// Performs a single raycast against all simplices in the solver, and returns the result. + /// + /// Ray to cast against all simplices in the solver. Expressed in world space. + /// Struct containing hit info, if any. + /// Filter (mask, category) used to filter out collisions against certain simplices. + /// Ray length. + /// + /// Ray thickness. If the ray hits a simplex, hitInfo will contain a point on the simplex. + /// If it merely passes near the simplex (within its thickness distance, but no actual hit), it will contain the point on the ray closest to the simplex surface. + /// + /// Whether the ray hit anything. If the ray did not hit, the hitInfo will contain a simplexIndex of -1 and a distance equal to maxDistance. + /// + public bool Raycast(Ray ray, out QueryResult hitInfo, int filter, float maxDistance = 100, float rayThickness = 0) + { + var result = Raycast(new List { ray }, filter, maxDistance, rayThickness); + if (result != null && result.Length > 0 && result[0].simplexIndex >= 0) + { + hitInfo = result[0]; + return true; + } + else + { + hitInfo = new QueryResult() { distance = maxDistance }; + return false; + } + } + + /// + /// Performs multiple raycasts in parallel against all simplices in the solver, and returns the results. + /// + /// List of rays to cast against all simplices in the solver. Expressed in world space. + /// Filter (mask, category) used to filter out collisions against certain simplices. + /// Ray length. + /// + /// Ray thickness. If the ray hits a simplex, hitInfo will contain a point on the simplex. + /// If it merely passes near the simplex (within its thickness distance, but no actual hit), it will contain the point on the ray closest to the simplex surface. + /// + /// This list will contain results for all raycasts, in no specific order. + /// Use the queryIndex member of each query result to correlate each result to the raycast that spawned it. For instance: + /// a query result with queryIndex 5, belongs to the raycast at index 5 in the input rays list. + /// + public QueryResult[] Raycast(List rays, int filter, float maxDistance = 100, float rayThickness = 0) + { + if (!initialized) + return null; + + var queries = new ObiNativeQueryShapeList(); + var transforms = new ObiNativeAffineTransformList(); + var results = new ObiNativeQueryResultList(); + var resultArray = new QueryResult[rays.Count]; + + for (int i = 0; i < rays.Count; ++i) + { + queries.Add(new QueryShape() + { + type = QueryShape.QueryType.Ray, + center = rays[i].origin, + size = rays[i].origin + rays[i].direction * maxDistance, + contactOffset = rayThickness, + maxDistance = 0.0005f, + filter = filter + }); + + transforms.Add(new AffineTransform(Vector4.zero, Quaternion.identity, Vector4.one)); + + resultArray[i] = new QueryResult { distance = maxDistance, simplexIndex = -1, queryIndex = -1 }; + } + + m_SolverImpl.SpatialQuery(queries, transforms, results); + + Matrix4x4 solver2World = transform.localToWorldMatrix; + for (int i = 0; i < results.count; ++i) + { + int rayIndex = results[i].queryIndex; + var pointWS = solver2World.MultiplyPoint3x4(results[i].queryPoint + results[i].normal * results[i].distance); + + if (results[i].distance <= 0.001f) + { + // project the hit on the ray: + float rayDistance = (pointWS.x - rays[rayIndex].origin.x) * rays[rayIndex].direction.x + + (pointWS.y - rays[rayIndex].origin.y) * rays[rayIndex].direction.y + + (pointWS.z - rays[rayIndex].origin.z) * rays[rayIndex].direction.z; + + // keep the closest hit: + if (rayDistance < resultArray[rayIndex].distance) + { + resultArray[rayIndex] = results[i]; + resultArray[rayIndex].distance = rayDistance; + resultArray[rayIndex].queryPoint = rays[rayIndex].origin + rays[rayIndex].direction * rayDistance; + } + } + } + + queries.Dispose(); + transforms.Dispose(); + results.Dispose(); + + return resultArray; + } + } + +} diff --git a/Assets/Obi/Scripts/Common/Solver/ObiSolver.cs.meta b/Assets/Obi/Scripts/Common/Solver/ObiSolver.cs.meta new file mode 100644 index 000000000..3ba5ee78f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Solver/ObiSolver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9d174fab52f0c4b8399f25d5c3ea524c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 4bb17fa3a0a95413a817e60391d26010, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Updaters.meta b/Assets/Obi/Scripts/Common/Updaters.meta new file mode 100644 index 000000000..3f65456b0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Updaters.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cefe4e650f12d45c2bc73c7e1996aee7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Updaters/ObiFixedUpdater.cs b/Assets/Obi/Scripts/Common/Updaters/ObiFixedUpdater.cs new file mode 100644 index 000000000..35cb5f99d --- /dev/null +++ b/Assets/Obi/Scripts/Common/Updaters/ObiFixedUpdater.cs @@ -0,0 +1,70 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; + +namespace Obi +{ + /// + /// Updater class that will perform simulation during FixedUpdate(). This is the most physically correct updater, + /// and the one to be used in most cases. Also allows to perform substepping, greatly improving convergence. + + [AddComponentMenu("Physics/Obi/Obi Fixed Updater", 801)] + [ExecuteInEditMode] + public class ObiFixedUpdater : ObiUpdater + { + /// + /// Each FixedUpdate() call will be divided into several substeps. Performing more substeps will greatly improve the accuracy/convergence speed of the simulation. + /// Increasing the amount of substeps is more effective than increasing the amount of constraint iterations. + /// + [Tooltip("Amount of substeps performed per FixedUpdate. Increasing the amount of substeps greatly improves accuracy and convergence speed.")] + public int substeps = 4; + + [NonSerialized] private float accumulatedTime; + + private void OnValidate() + { + substeps = Mathf.Max(1, substeps); + } + + private void OnEnable() + { + accumulatedTime = 0; + } + + private void OnDisable() + { + Physics.autoSimulation = true; + } + + private void FixedUpdate() + { + ObiProfiler.EnableProfiler(); + + PrepareFrame(); + + BeginStep(Time.fixedDeltaTime); + + float substepDelta = Time.fixedDeltaTime / (float)substeps; + + // Divide the step into multiple smaller substeps: + for (int i = 0; i < substeps; ++i) + Substep(Time.fixedDeltaTime, substepDelta, substeps-i); + + EndStep(substepDelta); + + ObiProfiler.DisableProfiler(); + + accumulatedTime -= Time.fixedDeltaTime; + } + + private void Update() + { + accumulatedTime += Time.deltaTime; + + ObiProfiler.EnableProfiler(); + Interpolate(Time.fixedDeltaTime, accumulatedTime); + ObiProfiler.DisableProfiler(); + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Updaters/ObiFixedUpdater.cs.meta b/Assets/Obi/Scripts/Common/Updaters/ObiFixedUpdater.cs.meta new file mode 100644 index 000000000..cac670221 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Updaters/ObiFixedUpdater.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1d9704d540ac448439a425526f6b2986 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 4e2c952f509ae40bdaf836136058d487, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Updaters/ObiLateFixedUpdater.cs b/Assets/Obi/Scripts/Common/Updaters/ObiLateFixedUpdater.cs new file mode 100644 index 000000000..1a482cb96 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Updaters/ObiLateFixedUpdater.cs @@ -0,0 +1,84 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; + +namespace Obi +{ + /// + /// Updater class that will perform simulation after WaitForFixedUpdate. Use this for simulations that require animation data as input, such as character clothing. + /// Make sure to set the Animator update mode to "Animate Physics". + + [AddComponentMenu("Physics/Obi/Obi Late Fixed Updater", 802)] + [ExecuteInEditMode] + public class ObiLateFixedUpdater : ObiUpdater + { + + /// + /// Each LateFixedUpdate() call will be divided into several substeps. Performing more substeps will greatly improve the accuracy/convergence speed of the simulation. + /// Increasing the amount of substeps is more effective than increasing the amount of constraint iterations. + /// + [Tooltip("Amount of substeps performed per FixedUpdate. Increasing the amount of substeps greatly improves accuracy and convergence speed.")] + public int substeps = 4; + + [NonSerialized] private float accumulatedTime; + + private void OnValidate() + { + substeps = Mathf.Max(1, substeps); + } + + private void OnEnable() + { + accumulatedTime = 0; + StartCoroutine(RunLateFixedUpdate()); + } + private void OnDisable() + { + StopCoroutine(RunLateFixedUpdate()); + } + + private void FixedUpdate() + { + PrepareFrame(); + } + + private IEnumerator RunLateFixedUpdate() + { + while (true) + { + yield return new WaitForFixedUpdate(); + if (Application.isPlaying) + LateFixedUpdate(); + } + } + + private void LateFixedUpdate() + { + ObiProfiler.EnableProfiler(); + + BeginStep(Time.fixedDeltaTime); + + float substepDelta = Time.fixedDeltaTime / (float)substeps; + + // Divide the step into multiple smaller substeps: + for (int i = 0; i < substeps; ++i) + Substep(Time.fixedDeltaTime, substepDelta, substeps - i); + + EndStep(substepDelta); + + ObiProfiler.DisableProfiler(); + + accumulatedTime -= Time.fixedDeltaTime; + } + + private void Update() + { + accumulatedTime += Time.deltaTime; + + ObiProfiler.EnableProfiler(); + Interpolate(Time.fixedDeltaTime, accumulatedTime); + ObiProfiler.DisableProfiler(); + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Updaters/ObiLateFixedUpdater.cs.meta b/Assets/Obi/Scripts/Common/Updaters/ObiLateFixedUpdater.cs.meta new file mode 100644 index 000000000..3982fd1ef --- /dev/null +++ b/Assets/Obi/Scripts/Common/Updaters/ObiLateFixedUpdater.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 434ec3c1822e84ae79a7f64f950b1bf9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 4e2c952f509ae40bdaf836136058d487, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Updaters/ObiLateUpdater.cs b/Assets/Obi/Scripts/Common/Updaters/ObiLateUpdater.cs new file mode 100644 index 000000000..71d42a1a7 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Updaters/ObiLateUpdater.cs @@ -0,0 +1,72 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; + +namespace Obi +{ + /// + /// Updater class that will perform simulation during LateUpdate(). This is highly unphysical and should be avoided whenever possible. + /// This updater does not make any accuracy guarantees when it comes to two-way coupling with rigidbodies. + /// It is only provided for the odd case when there's no way to perform simulation with a fixed timestep. + /// If in doubt, use the ObiFixedUpdater component instead. + /// + [AddComponentMenu("Physics/Obi/Obi Late Updater", 802)] + public class ObiLateUpdater : ObiUpdater + { + /// + /// Smoothing factor fo the timestep (smoothDelta). Values closer to 1 will yield stabler simulation, but it will be off-sync with rendering. + /// + [Tooltip("Smoothing factor fo the timestep (smoothDelta). Values closer to 1 will yield stabler simulation, but it will be off-sync with rendering.")] + [Range(0,1)] + public float deltaSmoothing = 0.95f; + + /// + /// Target timestep used to advance the simulation. The updater will interpolate this value with Time.deltaTime to find the actual timestep used for each frame. + /// + [Tooltip("Target timestep used to advance the simulation. The updater will interpolate this value with Time.deltaTime to find the actual timestep used for each frame.")] + private float smoothDelta = 0.02f; + + /// + /// Each FixedUpdate() call will be divided into several substeps. Performing more substeps will greatly improve the accuracy/convergence speed of the simulation. + /// Increasing the amount of substeps is more effective than increasing the amount of constraint iterations. + /// + [Tooltip("Amount of substeps performed per FixedUpdate. Increasing the amount of substeps greatly improves accuracy and convergence speed.")] + public int substeps = 4; + + private void OnValidate() + { + smoothDelta = Mathf.Max(0.0001f, smoothDelta); + substeps = Mathf.Max(1, substeps); + } + + private void Update() + { + PrepareFrame(); + } + + private void LateUpdate() + { + if (Time.deltaTime > 0) + { + if (Application.isPlaying) + { + // smooth out timestep: + smoothDelta = Mathf.Lerp(Time.deltaTime, smoothDelta, deltaSmoothing); + + BeginStep(smoothDelta); + + float substepDelta = smoothDelta / (float)substeps; + + // Divide the step into multiple smaller substeps: + for (int i = 0; i < substeps; ++i) + Substep(smoothDelta, substepDelta, substeps - i); + + EndStep(substepDelta); + } + + Interpolate(smoothDelta, smoothDelta); + } + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Updaters/ObiLateUpdater.cs.meta b/Assets/Obi/Scripts/Common/Updaters/ObiLateUpdater.cs.meta new file mode 100644 index 000000000..41bbce652 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Updaters/ObiLateUpdater.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 434d88f9b3534406382ff56c0e74bd9a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 4e2c952f509ae40bdaf836136058d487, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Updaters/ObiUpdater.cs b/Assets/Obi/Scripts/Common/Updaters/ObiUpdater.cs new file mode 100644 index 000000000..0fa3c60d0 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Updaters/ObiUpdater.cs @@ -0,0 +1,136 @@ +using UnityEngine; +using Unity.Profiling; +using System.Collections; +using System.Collections.Generic; +using System; + +using Unity.Jobs; +using Unity.Collections; + +namespace Obi +{ + /// + /// Base class for updating multiple solvers in parallel. + /// Derive from this class to write your onw updater. This grants you precise control over execution order, + /// as you can choose to update solvers at any point during Unity's update cycle. + /// + [ExecuteInEditMode] + public abstract class ObiUpdater : MonoBehaviour + { + static ProfilerMarker m_BeginStepPerfMarker = new ProfilerMarker("BeginStep"); + static ProfilerMarker m_SubstepPerfMarker = new ProfilerMarker("Substep"); + static ProfilerMarker m_EndStepPerfMarker = new ProfilerMarker("EndStep"); + static ProfilerMarker m_InterpolatePerfMarker = new ProfilerMarker("Interpolate"); + + /// + /// List of solvers updated by this updater. + /// + public List solvers = new List(); + + private List handles = new List(); + + + /// + /// Prepares all solvers to begin simulating a new frame. This should be called as soon as possible in the frame, + /// and guaranteed to be called every frame that will step physics. + /// + protected void PrepareFrame() + { + foreach (ObiSolver solver in solvers) + if (solver != null) + solver.PrepareFrame(); + } + + /// + /// Prepares all solvers to begin simulating a new physics step. This involves + /// caching some particle data for interpolation, performing collision detection, among other things. + /// + /// Duration (in seconds) of the next step. + protected void BeginStep(float stepDeltaTime) + { + using (m_BeginStepPerfMarker.Auto()) + { + // Update colliders right before collision detection: + ObiColliderWorld.GetInstance().UpdateColliders(); + ObiColliderWorld.GetInstance().UpdateRigidbodies(solvers,stepDeltaTime); + ObiColliderWorld.GetInstance().UpdateWorld(stepDeltaTime); + + handles.Clear(); + + // Kick off all solver jobs: + foreach (ObiSolver solver in solvers) + if (solver != null) + handles.Add(solver.BeginStep(stepDeltaTime)); + + // wait for all solver jobs to complete: + foreach (IObiJobHandle handle in handles) + if (handle != null) + handle.Complete(); + + foreach (ObiSolver solver in solvers) + if (solver != null) + solver.ReleaseJobHandles(); + } + } + + + /// + /// Advances the simulation a given amount of time. Note that once BeginStep has been called, + /// Substep can be called multiple times. + /// + /// Duration (in seconds) of the substep. + protected void Substep(float stepDeltaTime, float substepDeltaTime, int index) + { + using (m_SubstepPerfMarker.Auto()) + { + handles.Clear(); + + // Kick off all solver jobs: + foreach (ObiSolver solver in solvers) + if (solver != null) + handles.Add(solver.Substep(stepDeltaTime, substepDeltaTime, index)); + + // wait for all solver jobs to complete: + foreach (IObiJobHandle handle in handles) + if (handle != null) + handle.Complete(); + + foreach (ObiSolver solver in solvers) + if (solver != null) + solver.ReleaseJobHandles(); + } + } + + /// + /// Wraps up the current simulation step. This will trigger contact callbacks. + /// + protected void EndStep(float substepDeltaTime) + { + using (m_EndStepPerfMarker.Auto()) + { + // End step: Invokes collision callbacks and notifies actors that the solver step has ended. + foreach (ObiSolver solver in solvers) + if (solver != null) + solver.EndStep(substepDeltaTime); + } + + // Write back rigidbody velocity deltas: + ObiColliderWorld.GetInstance().UpdateRigidbodyVelocities(solvers); + } + + /// + /// Interpolates the previous and current physics states. Should be called right before rendering the current frame. + /// + /// Duration (in seconds) of the last step taken. + /// Amount of accumulated (not yet simulated) time. + protected void Interpolate(float stepDeltaTime, float accumulatedTime) + { + using (m_InterpolatePerfMarker.Auto()) + { + foreach (ObiSolver solver in solvers) + if (solver != null) + solver.Interpolate(stepDeltaTime, accumulatedTime); + } + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Updaters/ObiUpdater.cs.meta b/Assets/Obi/Scripts/Common/Updaters/ObiUpdater.cs.meta new file mode 100644 index 000000000..14db883fd --- /dev/null +++ b/Assets/Obi/Scripts/Common/Updaters/ObiUpdater.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4b1bfb6ce01f944a78a3761b5b77d359 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils.meta b/Assets/Obi/Scripts/Common/Utils.meta new file mode 100644 index 000000000..7aa03e408 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8114c2ae03b5c4118a326bc9805a3362 +folderAsset: yes +timeCreated: 1454882590 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes.meta b/Assets/Obi/Scripts/Common/Utils/Attributes.meta new file mode 100644 index 000000000..6222b7a09 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b8154151b8aa747e3870dae448f70d4b +folderAsset: yes +timeCreated: 1511453393 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/ChildrenOnly.cs b/Assets/Obi/Scripts/Common/Utils/Attributes/ChildrenOnly.cs new file mode 100644 index 000000000..e8cecb044 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/ChildrenOnly.cs @@ -0,0 +1,45 @@ +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace Obi{ + + + [System.AttributeUsage(System.AttributeTargets.Field)] + public class ChildrenOnly : MultiPropertyAttribute + { + #if UNITY_EDITOR + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + + float height = 0; + SerializedProperty it = property; + int depth = it.depth; + it.NextVisible(true); + do + { + EditorGUI.PropertyField(new Rect(position.x,position.y+height,position.width,EditorGUIUtility.singleLineHeight),it,true); + height += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + }while (it.NextVisible(false) && it.depth != depth); + + } + + internal override float? GetPropertyHeight(SerializedProperty property, GUIContent label) + { + + float height = -EditorGUIUtility.standardVerticalSpacing; + SerializedProperty it = property; + int depth = it.depth; + it.NextVisible(true); + do + { + height += EditorGUI.GetPropertyHeight(it, label) + EditorGUIUtility.standardVerticalSpacing; + }while (it.NextVisible(false) && it.depth != depth); + return height; + + } + #endif + } + +} diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/ChildrenOnly.cs.meta b/Assets/Obi/Scripts/Common/Utils/Attributes/ChildrenOnly.cs.meta new file mode 100644 index 000000000..4217d036a --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/ChildrenOnly.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 37995b0258e3041208a4b13bd6feb31c +timeCreated: 1511965883 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/DisplayAs.cs b/Assets/Obi/Scripts/Common/Utils/Attributes/DisplayAs.cs new file mode 100644 index 000000000..113dfa1f3 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/DisplayAs.cs @@ -0,0 +1,26 @@ +using System; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace Obi{ + + #if UNITY_EDITOR + [System.AttributeUsage(System.AttributeTargets.Field)] + public class DisplayAs : MultiPropertyAttribute + { + string name; + public DisplayAs(string name) + { + this.name = name; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.PropertyField(position,property,new GUIContent(name),true); + } + } + #endif +} + diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/DisplayAs.cs.meta b/Assets/Obi/Scripts/Common/Utils/Attributes/DisplayAs.cs.meta new file mode 100644 index 000000000..4d1363d5f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/DisplayAs.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: dd2e6690a4e514f0b93596b416ea6e1a +timeCreated: 1515069828 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/Indent.cs b/Assets/Obi/Scripts/Common/Utils/Attributes/Indent.cs new file mode 100644 index 000000000..6454939d4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/Indent.cs @@ -0,0 +1,25 @@ +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace Obi{ + + + [System.AttributeUsage(System.AttributeTargets.Field)] + public class Indent : MultiPropertyAttribute + { + #if UNITY_EDITOR + internal override void OnPreGUI(Rect position, SerializedProperty property) + { + EditorGUI.indentLevel++; + } + internal override void OnPostGUI(Rect position, SerializedProperty property) + { + EditorGUI.indentLevel--; + } + #endif + } + +} + diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/Indent.cs.meta b/Assets/Obi/Scripts/Common/Utils/Attributes/Indent.cs.meta new file mode 100644 index 000000000..ccaf4a244 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/Indent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a02d36b0684b3461fad08bed56e9798c +timeCreated: 1511529530 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/InspectorButtonAttribute.cs b/Assets/Obi/Scripts/Common/Utils/Attributes/InspectorButtonAttribute.cs new file mode 100644 index 000000000..9378ce37f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/InspectorButtonAttribute.cs @@ -0,0 +1,56 @@ +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif +using System.Reflection; + +namespace Obi{ + +[System.AttributeUsage(System.AttributeTargets.Field)] +public class InspectorButtonAttribute : PropertyAttribute +{ + public static float kDefaultButtonWidth = 80; + + public readonly string MethodName; + + private float _buttonWidth = kDefaultButtonWidth; + public float ButtonWidth + { + get { return _buttonWidth; } + set { _buttonWidth = value; } + } + + public InspectorButtonAttribute(string MethodName) + { + this.MethodName = MethodName; + } +} + +#if UNITY_EDITOR +[CustomPropertyDrawer(typeof(InspectorButtonAttribute))] +public class InspectorButtonPropertyDrawer : PropertyDrawer +{ + private MethodInfo _eventMethodInfo = null; + + public override void OnGUI(Rect position, SerializedProperty prop, GUIContent label) + { + InspectorButtonAttribute inspectorButtonAttribute = (InspectorButtonAttribute)attribute; + Rect buttonRect = new Rect(position.x + (position.width - inspectorButtonAttribute.ButtonWidth) * 0.5f, position.y, inspectorButtonAttribute.ButtonWidth, position.height); + if (GUI.Button(buttonRect, label.text)) + { + System.Type eventOwnerType = prop.serializedObject.targetObject.GetType(); + string eventName = inspectorButtonAttribute.MethodName; + + if (_eventMethodInfo == null) + _eventMethodInfo = eventOwnerType.GetMethod(eventName, BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); + + if (_eventMethodInfo != null) + _eventMethodInfo.Invoke(prop.serializedObject.targetObject, null); + else + Debug.LogWarning(string.Format("InspectorButton: Unable to find method {0} in {1}", eventName, eventOwnerType)); + } + } +} +#endif + +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/InspectorButtonAttribute.cs.meta b/Assets/Obi/Scripts/Common/Utils/Attributes/InspectorButtonAttribute.cs.meta new file mode 100644 index 000000000..cc768a2eb --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/InspectorButtonAttribute.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bada34fec41c44b4b90af1fe27ca7a95 +timeCreated: 1440029519 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/MinMaxAttribute.cs b/Assets/Obi/Scripts/Common/Utils/Attributes/MinMaxAttribute.cs new file mode 100644 index 000000000..1de1f01b6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/MinMaxAttribute.cs @@ -0,0 +1,41 @@ +using System; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace Obi{ + + [System.AttributeUsage(System.AttributeTargets.Field)] + public class MinMaxAttribute : MultiPropertyAttribute + { + float min; + float max; + public MinMaxAttribute(float min, float max) + { + this.min = min; + this.max = max; + } + #if UNITY_EDITOR + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + if (property.propertyType == SerializedPropertyType.Vector2){ + float minValue = property.vector2Value.x; + float maxValue = property.vector2Value.y; + + EditorGUI.MinMaxSlider(position, label, ref minValue, ref maxValue, min, max); + + var vec = Vector2.zero; + vec.x = minValue; + vec.y = maxValue; + + property.vector2Value = vec; + }else{ + EditorGUI.LabelField(position, label.text, "Use MinMaxAttribute with Vector2."); + } + } + #endif + } + +} + diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/MinMaxAttribute.cs.meta b/Assets/Obi/Scripts/Common/Utils/Attributes/MinMaxAttribute.cs.meta new file mode 100644 index 000000000..9fce93301 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/MinMaxAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ac8601bd46d146168b508598e8a4f8c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/MultiDelayed.cs b/Assets/Obi/Scripts/Common/Utils/Attributes/MultiDelayed.cs new file mode 100644 index 000000000..8942696d6 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/MultiDelayed.cs @@ -0,0 +1,29 @@ +using System; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace Obi{ + + [System.AttributeUsage(System.AttributeTargets.Field)] + public class MultiDelayed : MultiPropertyAttribute + { + #if UNITY_EDITOR + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + // Now draw the property as a Slider or an IntSlider based on whether it's a float or integer. + if (property.propertyType == SerializedPropertyType.Float) + EditorGUI.DelayedFloatField(position, property, label); + else if (property.propertyType == SerializedPropertyType.Integer) + EditorGUI.DelayedIntField(position, property, label); + else if (property.propertyType == SerializedPropertyType.String) + EditorGUI.DelayedTextField(position, property, label); + else + EditorGUI.LabelField(position, label.text, "Use MultiRange with float or int."); + } + #endif + } + +} + diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/MultiDelayed.cs.meta b/Assets/Obi/Scripts/Common/Utils/Attributes/MultiDelayed.cs.meta new file mode 100644 index 000000000..7c1281814 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/MultiDelayed.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 17d0e7e43f7f844aba84497d6385c920 +timeCreated: 1511969575 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/MultiPropertyAttribute.cs b/Assets/Obi/Scripts/Common/Utils/Attributes/MultiPropertyAttribute.cs new file mode 100644 index 000000000..f1face328 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/MultiPropertyAttribute.cs @@ -0,0 +1,96 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace Obi{ + + [System.AttributeUsage(System.AttributeTargets.Field)] + public abstract class MultiPropertyAttribute : PropertyAttribute + { + #if UNITY_EDITOR + public IOrderedEnumerable stored = null; + + public virtual void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.PropertyField(position,property,label); + } + + internal virtual void OnPreGUI(Rect position, SerializedProperty property){} + internal virtual void OnPostGUI(Rect position, SerializedProperty property){} + + internal virtual bool IsVisible(SerializedProperty property){return true;} + internal virtual float? GetPropertyHeight( SerializedProperty property, GUIContent label){return null;} + #endif + } + + #if UNITY_EDITOR + [CustomPropertyDrawer(typeof(MultiPropertyAttribute),true)] + public class MultiPropertyDrawer : PropertyDrawer + { + private MultiPropertyAttribute RetrieveAttributes() + { + MultiPropertyAttribute mAttribute = attribute as MultiPropertyAttribute; + + // Get the attribute list, sorted by "order". + if (mAttribute.stored == null) + { + mAttribute.stored = fieldInfo.GetCustomAttributes(typeof(MultiPropertyAttribute), false).OrderBy(s => ((PropertyAttribute)s).order); + } + + return mAttribute; + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + MultiPropertyAttribute mAttribute = RetrieveAttributes(); + + // If the attribute is invisible, regain the standard vertical spacing. + foreach (MultiPropertyAttribute attr in mAttribute.stored) + if (!attr.IsVisible(property)) + return -EditorGUIUtility.standardVerticalSpacing; + + // In case no attribute returns a modified height, return the property's default one: + float height = base.GetPropertyHeight(property, label); + + // Check if any of the attributes wants to modify height: + foreach (object atr in mAttribute.stored) + { + if (atr as MultiPropertyAttribute != null) + { + var tempheight = ((MultiPropertyAttribute)atr).GetPropertyHeight(property, label); + if (tempheight.HasValue) + { + height = tempheight.Value; + break; + } + } + } + return height; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + MultiPropertyAttribute mAttribute = RetrieveAttributes(); + + // Calls to IsVisible. If it returns false for any attribute, the property will not be rendered. + foreach (MultiPropertyAttribute attr in mAttribute.stored) + if (!attr.IsVisible(property)) return; + + // Calls to OnPreRender before the last attribute draws the UI. + foreach (MultiPropertyAttribute attr in mAttribute.stored) + attr.OnPreGUI(position,property); + + // The last attribute is in charge of actually drawing something: + ((MultiPropertyAttribute)mAttribute.stored.Last()).OnGUI(position,property,label); + + // Calls to OnPostRender after the last attribute draws the UI. These are called in inverse order. + foreach (MultiPropertyAttribute attr in mAttribute.stored.Reverse()) + attr.OnPostGUI(position,property); + } + } + #endif +} diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/MultiPropertyAttribute.cs.meta b/Assets/Obi/Scripts/Common/Utils/Attributes/MultiPropertyAttribute.cs.meta new file mode 100644 index 000000000..9bda2a26b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/MultiPropertyAttribute.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 71f4de68ec5de40edbf3e4f24c49ba18 +timeCreated: 1511952779 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/MultiRange.cs b/Assets/Obi/Scripts/Common/Utils/Attributes/MultiRange.cs new file mode 100644 index 000000000..dfb5a4c11 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/MultiRange.cs @@ -0,0 +1,34 @@ +using System; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace Obi{ + + [System.AttributeUsage(System.AttributeTargets.Field)] + public class MultiRange : MultiPropertyAttribute + { + float min; + float max; + public MultiRange(float min, float max) + { + this.min = min; + this.max = max; + } + #if UNITY_EDITOR + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + // Now draw the property as a Slider or an IntSlider based on whether it's a float or integer. + if (property.propertyType == SerializedPropertyType.Float) + EditorGUI.Slider(position, property, min, max, label); + else if (property.propertyType == SerializedPropertyType.Integer) + EditorGUI.IntSlider(position, property, (int)min, (int)max, label); + else + EditorGUI.LabelField(position, label.text, "Use MultiRange with float or int."); + } + #endif + } + +} + diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/MultiRange.cs.meta b/Assets/Obi/Scripts/Common/Utils/Attributes/MultiRange.cs.meta new file mode 100644 index 000000000..946d7f260 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/MultiRange.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ab2178abf0a6343e19742febdd9784e3 +timeCreated: 1511954360 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/SerializeProperty.cs b/Assets/Obi/Scripts/Common/Utils/Attributes/SerializeProperty.cs new file mode 100644 index 000000000..ad7ffae98 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/SerializeProperty.cs @@ -0,0 +1,126 @@ +using System; +using System.Reflection; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace Obi{ + + [System.AttributeUsage(System.AttributeTargets.Field)] + public class SerializeProperty : PropertyAttribute + { + public string PropertyName { get; private set; } + + public SerializeProperty(string propertyName) + { + PropertyName = propertyName; + } + } + + #if UNITY_EDITOR + [CustomPropertyDrawer(typeof(SerializeProperty))] + public class SerializePropertyAttributeDrawer : PropertyDrawer + { + private PropertyInfo propertyFieldInfo = null; + private object target = null; + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + if (target == null) + target = GetSource(property); + + // Find the property field using reflection, in order to get access to its getter/setter. + if (propertyFieldInfo == null) + propertyFieldInfo = target.GetType().GetProperty(((SerializeProperty)attribute).PropertyName, + BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + + if (propertyFieldInfo != null) + { + // Retrieve the value using the property getter: + object value = propertyFieldInfo.GetValue(target,null); + + // Draw the property: + EditorGUI.BeginProperty(position,label,property); + EditorGUI.BeginChangeCheck(); + value = DrawProperty(position,property.propertyType,propertyFieldInfo.PropertyType,value,label); + + // If any changes were detected, call the property setter: + if (EditorGUI.EndChangeCheck() && propertyFieldInfo != null) + { + + // Record object state for undo: + Undo.RecordObject(property.serializedObject.targetObject, "Inspector"); + + // Call property setter: + propertyFieldInfo.SetValue(target,value,null); + + // Record prefab modification: + PrefabUtility.RecordPrefabInstancePropertyModifications(property.serializedObject.targetObject); + } + EditorGUI.EndProperty(); + + }else + { + EditorGUI.LabelField(position,"Error: could not retrieve property."); + } + } + + private object GetSource(SerializedProperty property) + { + object target = property.serializedObject.targetObject; + string[] data = property.propertyPath.Split('.'); + + if (data.Length == 1) + return target; + else{ + for (int i = 0; i < data.Length-1;++i){ + target = target.GetType().GetField(data[i]).GetValue(target); + } + } + + return target; + } + + private object DrawProperty(Rect position, SerializedPropertyType propertyType, Type type, object value, GUIContent label) + { + switch (propertyType) + { + case SerializedPropertyType.Integer: + return EditorGUI.IntField(position,label,(int)value); + case SerializedPropertyType.Boolean: + return EditorGUI.Toggle(position,label,(bool)value); + case SerializedPropertyType.Float: + return EditorGUI.FloatField(position,label,(float)value); + case SerializedPropertyType.String: + return EditorGUI.TextField(position,label,(string)value); + case SerializedPropertyType.Color: + return EditorGUI.ColorField(position,label,(Color)value); + case SerializedPropertyType.ObjectReference: + return EditorGUI.ObjectField(position,label,(UnityEngine.Object)value,type,true); + case SerializedPropertyType.ExposedReference: + return EditorGUI.ObjectField(position,label,(UnityEngine.Object)value,type,true); + case SerializedPropertyType.LayerMask: + return EditorGUI.LayerField(position,label,(int)value); + case SerializedPropertyType.Enum: + return EditorGUI.EnumPopup(position,label,(Enum)value); + case SerializedPropertyType.Vector2: + return EditorGUI.Vector2Field(position,label,(Vector2)value); + case SerializedPropertyType.Vector3: + return EditorGUI.Vector3Field(position,label,(Vector3)value); + case SerializedPropertyType.Vector4: + return EditorGUI.Vector4Field(position,label,(Vector4)value); + case SerializedPropertyType.Rect: + return EditorGUI.RectField(position,label,(Rect)value); + case SerializedPropertyType.AnimationCurve: + return EditorGUI.CurveField(position,label,(AnimationCurve)value); + case SerializedPropertyType.Bounds: + return EditorGUI.BoundsField(position,label,(Bounds)value); + default: + throw new NotImplementedException("Unimplemented propertyType "+propertyType+"."); + } + } + + } + #endif +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/SerializeProperty.cs.meta b/Assets/Obi/Scripts/Common/Utils/Attributes/SerializeProperty.cs.meta new file mode 100644 index 000000000..ce59fb050 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/SerializeProperty.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9b22b3eff389444b1b4ab3bc2d6402b6 +timeCreated: 1511456560 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/VisibleIf.cs b/Assets/Obi/Scripts/Common/Utils/Attributes/VisibleIf.cs new file mode 100644 index 000000000..1d0244b87 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/VisibleIf.cs @@ -0,0 +1,56 @@ +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif +using System.Reflection; + +namespace Obi{ + + [System.AttributeUsage(System.AttributeTargets.Field)] + public class VisibleIf : MultiPropertyAttribute + { + public string MethodName { get; private set; } + public bool Negate {get; private set;} + + private MethodInfo eventMethodInfo = null; + private FieldInfo fieldInfo = null; + + public VisibleIf(string methodName, bool negate = false) + { + this.MethodName = methodName; + this.Negate = negate; + } + + #if UNITY_EDITOR + internal override bool IsVisible(SerializedProperty property) + { + return Visibility(property) == !Negate; + } + + private bool Visibility(SerializedProperty property) + { + System.Type eventOwnerType = property.serializedObject.targetObject.GetType(); + string eventName = MethodName; + + // Try finding a method with the name provided: + if (eventMethodInfo == null) + eventMethodInfo = eventOwnerType.GetMethod(eventName, BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); + + // If we could not find a method with that name, look for a field: + if (eventMethodInfo == null && fieldInfo == null) + fieldInfo = eventOwnerType.GetField(eventName, BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); + + if (eventMethodInfo != null) + return (bool)eventMethodInfo.Invoke(property.serializedObject.targetObject, null); + else if (fieldInfo != null) + return (bool)fieldInfo.GetValue(property.serializedObject.targetObject); + else + Debug.LogWarning(string.Format("VisibleIf: Unable to find method or field {0} in {1}", eventName, eventOwnerType)); + + return true; + } + #endif + } + + +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Utils/Attributes/VisibleIf.cs.meta b/Assets/Obi/Scripts/Common/Utils/Attributes/VisibleIf.cs.meta new file mode 100644 index 000000000..c89b2e179 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Attributes/VisibleIf.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e52da649989a94da8b1a5d1e1fe5ff8a +timeCreated: 1511456085 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Coroutines.meta b/Assets/Obi/Scripts/Common/Utils/Coroutines.meta new file mode 100644 index 000000000..3ceb9d3e4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Coroutines.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 232dbc8dfe1624cc3ac35594884d0edd +folderAsset: yes +timeCreated: 1438097540 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Coroutines/CoroutineJob.cs b/Assets/Obi/Scripts/Common/Utils/Coroutines/CoroutineJob.cs new file mode 100644 index 000000000..c4c5aa21d --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Coroutines/CoroutineJob.cs @@ -0,0 +1,130 @@ +using UnityEngine; +using System; +using System.Diagnostics; +using System.Collections; +using System.Collections.Generic; + +namespace Obi{ + +/** + * Implementation of asynchronous jobs that can return data, throw exceptions, and have a duration threshold + * below which they are run synchronously. + */ +public class CoroutineJob{ + + public class ProgressInfo{ + public string userReadableInfo; + public float progress; + public ProgressInfo(string userReadableInfo,float progress){ + this.userReadableInfo = userReadableInfo; + this.progress = progress; + } + } + + public object Result { + get{ + if(e != null){ + throw e; + } + return result; + } + } + + public bool IsDone{ + get{ + return isDone; + } + } + + public bool RaisedException{ + get{ + return raisedException; + } + } + + private object result; + private bool isDone; + private bool raisedException; + private bool stop; + private Exception e; + + public int asyncThreshold = 0; //Time in milliseconds that must pass before job switches to async mode. By default, the job is asynchronous from the start. + + private void Init(){ + isDone = false; + raisedException = false; + stop = false; + result = null; + } + + /** + * Runs the provided coroutine in a completely syncrhonous way, just like it would if it wasn't a coroutine, and + * returns a list of all coroutine results, in the order they were yielded. Will immediately rethrow any exceptions thrown by the coroutine. + */ + public static object RunSynchronously(IEnumerator coroutine){ + + List results = new List(); + + if (coroutine == null){ + return results; + } + + try{ + while(coroutine.MoveNext()){ + results.Add(coroutine.Current); + } + }catch(Exception e){ + throw e; + } + + return results; + + } + + public IEnumerator Start(IEnumerator coroutine){ + + Init(); + + if (coroutine == null){ + isDone = true; + yield break; + } + + Stopwatch sw = new Stopwatch(); + sw.Start(); + + while(!stop){ + + try{ + if(!coroutine.MoveNext()){ + isDone = true; + sw.Stop(); + yield break; + } + } + catch(Exception e){ + this.e = e; + raisedException = true; + UnityEngine.Debug.LogException(e); + isDone = true; + sw.Stop(); + yield break; + } + + result = coroutine.Current; + + //If too much time has passed sine job start, switch to async mode: + if (sw.ElapsedMilliseconds > asyncThreshold){ + yield return result; + } + } + + } + + public void Stop(){ + stop = true; + } + +} +} + diff --git a/Assets/Obi/Scripts/Common/Utils/Coroutines/CoroutineJob.cs.meta b/Assets/Obi/Scripts/Common/Utils/Coroutines/CoroutineJob.cs.meta new file mode 100644 index 000000000..ec16b06f3 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Coroutines/CoroutineJob.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b34adb10b4f264b629f464bfc872d515 +timeCreated: 1438097545 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Coroutines/EditorCoroutine.cs b/Assets/Obi/Scripts/Common/Utils/Coroutines/EditorCoroutine.cs new file mode 100644 index 000000000..b000bcd80 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Coroutines/EditorCoroutine.cs @@ -0,0 +1,43 @@ +using UnityEngine; +#if (UNITY_EDITOR) + using UnityEditor; +#endif +using System.Collections; + +namespace Obi +{ + +public class EditorCoroutine +{ + + public static void ShowCoroutineProgressBar(string title, ref IEnumerator coroutine){ + + #if (UNITY_EDITOR) + if (coroutine != null){ + + CoroutineJob.ProgressInfo progressInfo; + + do{ + if (!coroutine.MoveNext()) + progressInfo = null; + else + progressInfo = coroutine.Current as CoroutineJob.ProgressInfo; + + if (progressInfo != null && EditorUtility.DisplayCancelableProgressBar(title, progressInfo.userReadableInfo, progressInfo.progress)){ + progressInfo = null; + } + }while (progressInfo != null); + + // once finished, clear progress bar and set coroutine to null. + coroutine = null; + + // Unity bug here: https://issuetracker.unity3d.com/issues/unity-throws-nullreferenceexception-or-endlayoutgroup-errors-when-editorutility-dot-clearprogressbar-is-called + EditorUtility.ClearProgressBar(); + + } + #endif + + } + +} +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Utils/Coroutines/EditorCoroutine.cs.meta b/Assets/Obi/Scripts/Common/Utils/Coroutines/EditorCoroutine.cs.meta new file mode 100644 index 000000000..023fca34b --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Coroutines/EditorCoroutine.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 65c4fa737e0dc4ac8acb314d96b75115 +timeCreated: 1440488659 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Forces.meta b/Assets/Obi/Scripts/Common/Utils/Forces.meta new file mode 100644 index 000000000..bce277fbc --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Forces.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 57e51b62adcc84dc19a301be9ebf0e51 +folderAsset: yes +timeCreated: 1480348631 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Forces/ObiAmbientForceZone.cs b/Assets/Obi/Scripts/Common/Utils/Forces/ObiAmbientForceZone.cs new file mode 100644 index 000000000..6a9dbde3d --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Forces/ObiAmbientForceZone.cs @@ -0,0 +1,39 @@ +using UnityEngine; +using System; + +namespace Obi +{ + public class ObiAmbientForceZone : ObiExternalForce + { + + public override void ApplyForcesToActor(ObiActor actor) + { + + Matrix4x4 l2sTransform = actor.solver.transform.worldToLocalMatrix * transform.localToWorldMatrix; + + Vector4 force = l2sTransform.MultiplyVector(Vector3.forward * (intensity + GetTurbulence(turbulence))); + + if (actor.usesCustomExternalForces) + { + for (int i = 0; i < actor.activeParticleCount; ++i) + actor.solver.wind[actor.solverIndices[i]] += force; + } + else + { + for (int i = 0; i < actor.activeParticleCount; ++i) + actor.solver.externalForces[actor.solverIndices[i]] += force; + } + } + + public void OnDrawGizmosSelected() + { + + Gizmos.matrix = transform.localToWorldMatrix; + Gizmos.color = new Color(0,0.7f,1,1); + + // arrow body: + ObiUtils.DrawArrowGizmo(0.5f + GetTurbulence(1),0.2f,0.3f,0.2f); + } + } +} + diff --git a/Assets/Obi/Scripts/Common/Utils/Forces/ObiAmbientForceZone.cs.meta b/Assets/Obi/Scripts/Common/Utils/Forces/ObiAmbientForceZone.cs.meta new file mode 100644 index 000000000..32645ed8d --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Forces/ObiAmbientForceZone.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f33b658b41e945e0bae1d3f0af0830e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 092f06332c018434b8c8ea86164ef4fd, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Forces/ObiExternalForce.cs b/Assets/Obi/Scripts/Common/Utils/Forces/ObiExternalForce.cs new file mode 100644 index 000000000..41089fd0c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Forces/ObiExternalForce.cs @@ -0,0 +1,50 @@ +using UnityEngine; +using System; + +namespace Obi +{ + public abstract class ObiExternalForce : MonoBehaviour + { + + public float intensity = 0; + public float turbulence = 0; + public float turbulenceFrequency = 1; + public float turbulenceSeed = 0; + public ObiSolver[] affectedSolvers; + + public void OnEnable() + { + foreach (ObiSolver solver in affectedSolvers) + { + if (solver != null) + solver.OnBeginStep += Solver_OnStepBegin; + } + } + + public void OnDisable() + { + foreach (ObiSolver solver in affectedSolvers) + { + if (solver != null) + solver.OnBeginStep -= Solver_OnStepBegin; + } + } + + void Solver_OnStepBegin(ObiSolver solver, float stepTime) + { + foreach (ObiActor actor in solver.actors) + { + if (actor != null) + ApplyForcesToActor(actor); + } + } + + protected float GetTurbulence(float turbulenceIntensity){ + return Mathf.PerlinNoise(Time.fixedTime * turbulenceFrequency,turbulenceSeed) * turbulenceIntensity; + } + + public abstract void ApplyForcesToActor(ObiActor actor); + + } +} + diff --git a/Assets/Obi/Scripts/Common/Utils/Forces/ObiExternalForce.cs.meta b/Assets/Obi/Scripts/Common/Utils/Forces/ObiExternalForce.cs.meta new file mode 100644 index 000000000..adabe4f4f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Forces/ObiExternalForce.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4978a525b6164476d96f5d28d8b309f8 +timeCreated: 1480349422 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/Forces/ObiSphericalForceZone.cs b/Assets/Obi/Scripts/Common/Utils/Forces/ObiSphericalForceZone.cs new file mode 100644 index 000000000..7e7bb03bd --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Forces/ObiSphericalForceZone.cs @@ -0,0 +1,63 @@ +using UnityEngine; +using System; + +namespace Obi +{ + public class ObiSphericalForceZone : ObiExternalForce + { + + public float radius = 5; + public bool radial = true; + + public override void ApplyForcesToActor(ObiActor actor) + { + + float sqrRadius = radius * radius; + float finalIntensity = intensity + GetTurbulence(turbulence); + + Matrix4x4 l2sTransform = actor.solver.transform.worldToLocalMatrix * transform.localToWorldMatrix; + + Vector4 center = l2sTransform.MultiplyPoint3x4(Vector4.zero); + Vector4 forward = l2sTransform.MultiplyVector(Vector3.forward); + + // Calculate force intensity for each actor particle: + for (int i = 0; i < actor.activeParticleCount; ++i){ + + Vector4 distanceVector = actor.solver.positions[actor.solverIndices[i]] - center; + + float sqrMag = distanceVector.sqrMagnitude; + float falloff = Mathf.Clamp01((sqrRadius - sqrMag) / sqrRadius); + + Vector4 force; + if (radial) + force = distanceVector/(Mathf.Sqrt(sqrMag) + float.Epsilon) * falloff * finalIntensity; + else + force = forward * falloff * finalIntensity; + + if (actor.usesCustomExternalForces) + actor.solver.wind[actor.solverIndices[i]] += force; + else + actor.solver.externalForces[actor.solverIndices[i]] += force; + } + + } + + public void OnDrawGizmosSelected() + { + Gizmos.matrix = transform.localToWorldMatrix; + Gizmos.color = new Color(0,0.7f,1,1); + Gizmos.DrawWireSphere(Vector3.zero,radius); + + float turb = GetTurbulence(1); + + if (!radial){ + ObiUtils.DrawArrowGizmo(radius + turb,radius*0.2f,radius*0.3f,radius*0.2f); + }else{ + Gizmos.DrawLine(new Vector3(0,0,-radius*0.5f)*turb,new Vector3(0,0,radius*0.5f)*turb); + Gizmos.DrawLine(new Vector3(0,-radius*0.5f,0)*turb,new Vector3(0,radius*0.5f,0)*turb); + Gizmos.DrawLine(new Vector3(-radius*0.5f,0,0)*turb,new Vector3(radius*0.5f,0,0)*turb); + } + } + } +} + diff --git a/Assets/Obi/Scripts/Common/Utils/Forces/ObiSphericalForceZone.cs.meta b/Assets/Obi/Scripts/Common/Utils/Forces/ObiSphericalForceZone.cs.meta new file mode 100644 index 000000000..56ae827cd --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/Forces/ObiSphericalForceZone.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f05961933f21f46a683fc5d5beec4061 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: d7b67d3b64785476bb7520aa3190fee3, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/ObiContactEventDispatcher.cs b/Assets/Obi/Scripts/Common/Utils/ObiContactEventDispatcher.cs new file mode 100644 index 000000000..c8c1315ef --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiContactEventDispatcher.cs @@ -0,0 +1,154 @@ +using UnityEngine; +using UnityEngine.Events; +using System; +using System.Collections.Generic; + +namespace Obi +{ + [RequireComponent(typeof(ObiSolver))] + public class ObiContactEventDispatcher : MonoBehaviour + { + private ObiSolver solver; + private Oni.Contact[] prevData; + private int prevCount; + private ContactComparer comparer; + + private class ContactComparer : IComparer + { + ObiSolver solver; + + public ContactComparer(ObiSolver solver) + { + this.solver = solver; + } + + public int Compare(Oni.Contact x, Oni.Contact y) + { + return CompareByRef(ref x, ref y, solver); + } + } + + private static int CompareByRef(ref Oni.Contact a, ref Oni.Contact b, ObiSolver solver) + { + if (a.bodyB == b.bodyB) + { + int hashA = solver.particleToActor[a.bodyA].actor.GetInstanceID(); + int hashB = solver.particleToActor[b.bodyA].actor.GetInstanceID(); + return hashA.CompareTo(hashB); + } + return a.bodyB.CompareTo(b.bodyB); + } + + [System.Serializable] + public class ContactCallback : UnityEvent { } + + public float distanceThreshold = 0.01f; + public ContactCallback onContactEnter = new ContactCallback(); + public ContactCallback onContactStay = new ContactCallback(); + public ContactCallback onContactExit = new ContactCallback(); + + void Awake() + { + solver = GetComponent(); + comparer = new ContactComparer(solver); + prevData = new Oni.Contact[0]; + } + + void OnEnable() + { + solver.OnCollision += Solver_OnCollision; + } + + void OnDisable() + { + solver.OnCollision -= Solver_OnCollision; + } + + private int FilterOutDistantContacts(Oni.Contact[] data, int count) + { + int filteredCount = count; + + // simply iterate trough all contacts, + // moving the ones above the threshold to the end of the array: + for (int i = count - 1; i >= 0; --i) + if (data[i].distance > distanceThreshold) + ObiUtils.Swap(ref data[i], ref data[--filteredCount]); + + return filteredCount; + } + + private int RemoveDuplicates(Oni.Contact[] data, int count) + { + if (count == 0) + return 0; + + // assuming the array is sorted, iterate trough the array + // replacing duplicates by the first contact that's different: + int i = 0, r = 0; + while (++i != count) + if (CompareByRef(ref data[i], ref data[r], solver) != 0 && ++r != i) + data[r] = data[i]; + + return ++r; + } + + private void InvokeCallbacks(Oni.Contact[] data, int count) + { + int a = 0, b = 0; + int lengthA = count, lengthB = prevCount; + + // while we haven't reached the end of either array: + while (a < lengthA && b < lengthB) + { + // compare both contacts: + int compare = CompareByRef(ref data[a], ref prevData[b], solver); + + // call the appropiate event depending on the comparison result: + if (compare < 0) + onContactEnter.Invoke(solver, data[a++]); + else if (compare > 0) + onContactExit.Invoke(solver, prevData[b++]); + else + { + onContactStay.Invoke(solver, data[a++]); b++; + } + } + + // finish iterating trough both lists: + while (a < lengthA) + onContactEnter.Invoke(solver, data[a++]); + + while (b < lengthB) + onContactExit.Invoke(solver, prevData[b++]); + } + + void Solver_OnCollision(object sender, ObiSolver.ObiCollisionEventArgs args) + { + // here we access the internal backing array (Data) directly, + // instead of using the accessor property. This slightly improves performance. + // note: the backing array length is the lists' capacity, so we + // need to use args.contacts.Count to get the actual number of contacts. + + // skip all contacts above the distance threshold by moving them to the end of the array: + int filteredCount = FilterOutDistantContacts(args.contacts.Data, args.contacts.Count); + + // sort the remaining contacts by collider, then by actor: + Array.Sort(args.contacts.Data, 0, filteredCount, comparer); + + // remove duplicates: + filteredCount = RemoveDuplicates(args.contacts.Data, filteredCount); + + // zip trough the current and previous contact lists once, invoking events when appropiate. + InvokeCallbacks(args.contacts.Data, filteredCount); + + // store current contact list/count for next frame. + // could get better performance by double buffering instead of copying: + if (filteredCount > prevData.Length) + Array.Resize(ref prevData, filteredCount); + Array.Copy(args.contacts.Data, prevData, filteredCount); + + prevCount = filteredCount; + } + + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Utils/ObiContactEventDispatcher.cs.meta b/Assets/Obi/Scripts/Common/Utils/ObiContactEventDispatcher.cs.meta new file mode 100644 index 000000000..35dc302ef --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiContactEventDispatcher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e94f08d8fe9ed4bdcbc71dde235e0ac1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/ObiContactGrabber.cs b/Assets/Obi/Scripts/Common/Utils/ObiContactGrabber.cs new file mode 100644 index 000000000..bdd58b078 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiContactGrabber.cs @@ -0,0 +1,178 @@ +using UnityEngine; +using System.Collections.Generic; +using Obi; + +/** + * Sample component that makes a collider "grab" any particle it touches (regardless of which Actor it belongs to). + */ +[RequireComponent(typeof(ObiCollider))] +public class ObiContactGrabber : MonoBehaviour +{ + + public ObiSolver[] solvers = { }; + + public bool grabbed + { + get { return grabbedActors.Count > 0; } + } + + /** + * Helper class that stores the index of a particle in the solver, its position in the grabber's local space, and its inverse mass previous to being grabbed. + * This makes it easy to tell if a particle has been grabbed, update its position while grabbing, and restore its mass after being released. + */ + private class GrabbedParticle : IEqualityComparer + { + public int index; + public float invMass; + public Vector3 localPosition; + public ObiSolver solver; + + public GrabbedParticle(ObiSolver solver, int index, float invMass) + { + this.solver = solver; + this.index = index; + this.invMass = invMass; + } + + public bool Equals(GrabbedParticle x, GrabbedParticle y) + { + return x.index == y.index; + } + + public int GetHashCode(GrabbedParticle obj) + { + return index; + } + } + + private Dictionary collisionEvents = new Dictionary(); /**< store the current collision event*/ + private ObiCollider localCollider; /**< the collider on this gameObject.*/ + private HashSet grabbedParticles = new HashSet(); /**< set to store all currently grabbed particles.*/ + private HashSet grabbedActors = new HashSet(); /**< set of softbodies grabbed during this step.*/ + + private void Awake() + { + localCollider = GetComponent(); + } + + private void OnEnable() + { + if (solvers != null) + foreach (ObiSolver solver in solvers) + solver.OnCollision += Solver_OnCollision; + } + + private void OnDisable() + { + if (solvers != null) + foreach (ObiSolver solver in solvers) + solver.OnCollision -= Solver_OnCollision; + } + + private void Solver_OnCollision(object sender, Obi.ObiSolver.ObiCollisionEventArgs e) + { + collisionEvents[(ObiSolver)sender] = e; + } + + private void UpdateParticleProperties() + { + // Update rest shape matching of all grabbed softbodies: + foreach (ObiActor actor in grabbedActors) + { + actor.UpdateParticleProperties(); + } + } + + /** + * Creates and stores a GrabbedParticle from the particle at the given index. + * Returns true if we sucessfully grabbed a particle, false if the particle was already grabbed. + */ + private bool GrabParticle(ObiSolver solver, int index) + { + GrabbedParticle p = new GrabbedParticle(solver, index, solver.invMasses[index]); + + // in case this particle has not been grabbed yet: + if (!grabbedParticles.Contains(p)) + { + Matrix4x4 solver2Grabber = transform.worldToLocalMatrix * solver.transform.localToWorldMatrix; + + // record the particle's position relative to the grabber, and store it. + p.localPosition = solver2Grabber.MultiplyPoint3x4(solver.positions[index]); + grabbedParticles.Add(p); + + // Set inv mass and velocity to zero: + solver.invMasses[index] = 0; + solver.velocities[index] = Vector4.zero; + + return true; + } + return false; + } + + /** + * Grabs all particles currently touching the grabber. + */ + public void Grab() + { + Release(); + + var world = ObiColliderWorld.GetInstance(); + + if (solvers != null && collisionEvents != null) + { + foreach (ObiSolver solver in solvers) + { + ObiSolver.ObiCollisionEventArgs collisionEvent; + if (collisionEvents.TryGetValue(solver, out collisionEvent)) + { + foreach (Oni.Contact contact in collisionEvent.contacts) + { + // this one is an actual collision: + if (contact.distance < 0.01f) + { + var contactCollider = world.colliderHandles[contact.bodyB].owner; + int particleIndex = solver.simplices[contact.bodyA]; + + // if the current contact references our collider, proceed to grab the particle. + if (contactCollider == localCollider) + { + // try to grab the particle, if not already grabbed. + if (GrabParticle(solver, particleIndex)) + grabbedActors.Add(solver.particleToActor[particleIndex].actor); + } + + } + } + } + } + } + + UpdateParticleProperties(); + } + + /** + * Releases all currently grabbed particles. This boils down to simply resetting their invMass. + */ + public void Release() + { + // Restore the inverse mass of all grabbed particles, so dynamics affect them. + foreach (GrabbedParticle p in grabbedParticles) + p.solver.invMasses[p.index] = p.invMass; + + UpdateParticleProperties(); + grabbedActors.Clear(); + grabbedParticles.Clear(); + } + + /** + * Updates the position of the grabbed particles. + */ + private void FixedUpdate() + { + foreach (GrabbedParticle p in grabbedParticles) + { + Matrix4x4 grabber2Solver = p.solver.transform.worldToLocalMatrix * transform.localToWorldMatrix; + p.solver.positions[p.index] = grabber2Solver.MultiplyPoint3x4(p.localPosition); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Utils/ObiContactGrabber.cs.meta b/Assets/Obi/Scripts/Common/Utils/ObiContactGrabber.cs.meta new file mode 100644 index 000000000..d3efd9752 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiContactGrabber.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4aa46c433c6d64b07bdfa8b2e40b03b9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/ObiParticleAttachment.cs b/Assets/Obi/Scripts/Common/Utils/ObiParticleAttachment.cs new file mode 100644 index 000000000..9fbff25fe --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiParticleAttachment.cs @@ -0,0 +1,508 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [AddComponentMenu("Physics/Obi/Obi Particle Attachment", 820)] + [RequireComponent(typeof(ObiActor))] + [ExecuteInEditMode] + public class ObiParticleAttachment : MonoBehaviour + { + public enum AttachmentType + { + Static, + Dynamic + } + + [SerializeField] [HideInInspector] private ObiActor m_Actor; + [SerializeField] [HideInInspector] private Transform m_Target; + + [SerializeField] [HideInInspector] private ObiParticleGroup m_ParticleGroup; + [SerializeField] [HideInInspector] private AttachmentType m_AttachmentType = AttachmentType.Static; + [SerializeField] [HideInInspector] private bool m_ConstrainOrientation = false; + [SerializeField] [HideInInspector] private float m_Compliance = 0; + [SerializeField] [HideInInspector] [Delayed] private float m_BreakThreshold = float.PositiveInfinity; + + // private variables are serialized during script reloading, to keep their value. Must mark them explicitly as non-serialized. + [NonSerialized] private ObiPinConstraintsBatch pinBatch; + [NonSerialized] private ObiColliderBase attachedCollider; + [NonSerialized] private int attachedColliderHandleIndex; + + [NonSerialized] private int[] m_SolverIndices; + [NonSerialized] private Vector3[] m_PositionOffsets = null; + [NonSerialized] private Quaternion[] m_OrientationOffsets = null; + + /// + /// The actor this attachment is added to. + /// + public ObiActor actor + { + get { return m_Actor; } + } + + /// + /// The target transform that the should be attached to. + /// + public Transform target + { + get { return m_Target; } + set + { + if (value != m_Target) + { + m_Target = value; + Bind(); + } + } + } + + /// + /// The particle group that should be attached to the . + /// + public ObiParticleGroup particleGroup + { + get + { + return m_ParticleGroup; + } + + set + { + if (value != m_ParticleGroup) + { + m_ParticleGroup = value; + Bind(); + } + } + } + + /// + /// Whether this attachment is currently bound or not. + /// + public bool isBound + { + get { return m_Target != null && m_SolverIndices != null && m_PositionOffsets != null; } + } + + /// + /// Type of attachment, can be either static or dynamic. + /// + public AttachmentType attachmentType + { + get { return m_AttachmentType; } + set + { + if (value != m_AttachmentType) + { + DisableAttachment(m_AttachmentType); + m_AttachmentType = value; + EnableAttachment(m_AttachmentType); + } + } + } + + /// + /// Should this attachment constraint particle orientations too? + /// + public bool constrainOrientation + { + get { return m_ConstrainOrientation; } + set + { + if (value != m_ConstrainOrientation) + { + DisableAttachment(m_AttachmentType); + m_ConstrainOrientation = value; + EnableAttachment(m_AttachmentType); + } + } + } + + + /// + /// Constraint compliance, in case this attachment is dynamic. + /// + /// High compliance values will increase the attachment's elasticity. + public float compliance + { + get { return m_Compliance; } + set + { + if (!Mathf.Approximately(value, m_Compliance)) + { + m_Compliance = value; + if (m_AttachmentType == AttachmentType.Dynamic && pinBatch != null) + { + for (int i = 0; i < m_SolverIndices.Length; ++i) + pinBatch.stiffnesses[i * 2] = m_Compliance; + } + } + } + } + + /// + /// Force thershold above which the attachment should break. + /// + /// Only affects dynamic attachments, as static attachments do not work with forces. + public float breakThreshold + { + get { return m_BreakThreshold; } + set + { + if (!Mathf.Approximately(value, m_BreakThreshold)) + { + m_BreakThreshold = value; + if (m_AttachmentType == AttachmentType.Dynamic && pinBatch != null) + { + for (int i = 0; i < m_SolverIndices.Length; ++i) + pinBatch.breakThresholds[i] = m_BreakThreshold; + } + } + } + } + + private void OnEnable() + { + m_Actor = GetComponent(); + m_Actor.OnBlueprintLoaded += Actor_OnBlueprintLoaded; + m_Actor.OnPrepareStep += Actor_OnPrepareStep; + m_Actor.OnEndStep += Actor_OnEndStep; + + if (m_Actor.solver != null) + Actor_OnBlueprintLoaded(m_Actor, m_Actor.sourceBlueprint); + + EnableAttachment(m_AttachmentType); + } + + private void OnDisable() + { + DisableAttachment(m_AttachmentType); + + m_Actor.OnBlueprintLoaded -= Actor_OnBlueprintLoaded; + m_Actor.OnPrepareStep -= Actor_OnPrepareStep; + m_Actor.OnEndStep -= Actor_OnEndStep; + } + + private void OnValidate() + { + m_Actor = GetComponent(); + + // do not re-bind: simply disable and re-enable the attachment. + DisableAttachment(AttachmentType.Static); + DisableAttachment(AttachmentType.Dynamic); + EnableAttachment(m_AttachmentType); + } + + void Actor_OnBlueprintLoaded(ObiActor act, ObiActorBlueprint blueprint) + { + Bind(); + } + + void Actor_OnPrepareStep(ObiActor act, float stepTime) + { + // Attachments must be updated at the start of the step, before performing any simulation. + UpdateAttachment(); + } + + private void Actor_OnEndStep(ObiActor act, float stepTime) + { + // dynamic attachments must be tested at the end of the step, once constraint forces have been calculated. + // if there's any broken constraint, flag pin constraints as dirty for remerging at the start of the next step. + BreakDynamicAttachment(stepTime); + } + + private void Bind() + { + // Disable attachment. + DisableAttachment(m_AttachmentType); + + if (m_Target != null && m_ParticleGroup != null && m_Actor.isLoaded) + { + Matrix4x4 bindMatrix = m_Target.worldToLocalMatrix * m_Actor.solver.transform.localToWorldMatrix; + + m_SolverIndices = new int[m_ParticleGroup.Count]; + m_PositionOffsets = new Vector3[m_ParticleGroup.Count]; + m_OrientationOffsets = new Quaternion[m_ParticleGroup.Count]; + + for (int i = 0; i < m_ParticleGroup.Count; ++i) + { + int particleIndex = m_ParticleGroup.particleIndices[i]; + if (particleIndex >= 0 && particleIndex < m_Actor.solverIndices.Length) + { + m_SolverIndices[i] = m_Actor.solverIndices[particleIndex]; + m_PositionOffsets[i] = bindMatrix.MultiplyPoint3x4(m_Actor.solver.positions[m_SolverIndices[i]]); + } + else + { + Debug.LogError("The particle group \'" + m_ParticleGroup.name + "\' references a particle that does not exist in the actor \'" + m_Actor.name + "\'."); + m_SolverIndices = null; + m_PositionOffsets = null; + m_OrientationOffsets = null; + return; + } + } + + if (m_Actor.usesOrientedParticles) + { + Quaternion bindOrientation = bindMatrix.rotation; + + for (int i = 0; i < m_ParticleGroup.Count; ++i) + { + int particleIndex = m_ParticleGroup.particleIndices[i]; + if (particleIndex >= 0 && particleIndex < m_Actor.solverIndices.Length) + m_OrientationOffsets[i] = bindOrientation * m_Actor.solver.orientations[m_SolverIndices[i]]; + } + } + } + else + { + m_PositionOffsets = null; + m_OrientationOffsets = null; + } + + EnableAttachment(m_AttachmentType); + } + + + private void EnableAttachment(AttachmentType type) + { + + if (enabled && m_Actor.isLoaded && isBound) + { + var solver = m_Actor.solver; + + switch (type) + { + case AttachmentType.Dynamic: + + var pins = m_Actor.GetConstraintsByType(Oni.ConstraintType.Pin) as ObiPinConstraintsData; + attachedCollider = m_Target.GetComponent(); + + if (pins != null && attachedCollider != null && pinBatch == null) + { + // create a new data batch with all our pin constraints: + pinBatch = new ObiPinConstraintsBatch(pins); + for (int i = 0; i < m_SolverIndices.Length; ++i) + { + pinBatch.AddConstraint(m_SolverIndices[i], + attachedCollider, + m_PositionOffsets[i], + m_OrientationOffsets[i], + m_Compliance, + constrainOrientation ? 0 : 10000, + m_BreakThreshold); + + pinBatch.activeConstraintCount++; + } + + // add the batch to the actor: + pins.AddBatch(pinBatch); + + // store the attached collider's handle: + attachedColliderHandleIndex = -1; + if (attachedCollider.Handle != null) + attachedColliderHandleIndex = attachedCollider.Handle.index; + + m_Actor.SetConstraintsDirty(Oni.ConstraintType.Pin); + } + + break; + + case AttachmentType.Static: + + for (int i = 0; i < m_SolverIndices.Length; ++i) + if (m_SolverIndices[i] >= 0 && m_SolverIndices[i] < solver.invMasses.count) + solver.invMasses[m_SolverIndices[i]] = 0; + + if (m_Actor.usesOrientedParticles && m_ConstrainOrientation) + { + for (int i = 0; i < m_SolverIndices.Length; ++i) + if (m_SolverIndices[i] >= 0 && m_SolverIndices[i] < solver.invRotationalMasses.count) + solver.invRotationalMasses[m_SolverIndices[i]] = 0; + } + + m_Actor.UpdateParticleProperties(); + + break; + + } + } + + } + + private void DisableAttachment(AttachmentType type) + { + if (isBound) + { + switch (type) + { + case AttachmentType.Dynamic: + + if (pinBatch != null) + { + var pins = m_Actor.GetConstraintsByType(Oni.ConstraintType.Pin) as ObiConstraints; + if (pins != null) + { + pins.RemoveBatch(pinBatch); + if (actor.isLoaded) + m_Actor.SetConstraintsDirty(Oni.ConstraintType.Pin); + } + + attachedCollider = null; + pinBatch = null; + attachedColliderHandleIndex = -1; + } + + break; + + case AttachmentType.Static: + + var solver = m_Actor.solver; + var blueprint = m_Actor.sourceBlueprint; + + for (int i = 0; i < m_SolverIndices.Length; ++i) + { + int solverIndex = m_SolverIndices[i]; + if (solverIndex >= 0 && solverIndex < solver.invMasses.count) + solver.invMasses[solverIndex] = blueprint.invMasses[i]; + } + + if (m_Actor.usesOrientedParticles) + { + for (int i = 0; i < m_SolverIndices.Length; ++i) + { + int solverIndex = m_SolverIndices[i]; + if (solverIndex >= 0 && solverIndex < solver.invRotationalMasses.count) + solver.invRotationalMasses[solverIndex] = blueprint.invRotationalMasses[i]; + } + } + + m_Actor.UpdateParticleProperties(); + + break; + + } + } + } + + private void UpdateAttachment() + { + + if (enabled && m_Actor.isLoaded && isBound) + { + var solver = m_Actor.solver; + + switch (m_AttachmentType) + { + case AttachmentType.Dynamic: + + // in case the handle has been updated/invalidated (for instance, when disabling the target) rebuild constraints: + if (attachedCollider != null && + attachedCollider.Handle != null && + attachedCollider.Handle.index != attachedColliderHandleIndex) + { + attachedColliderHandleIndex = attachedCollider.Handle.index; + m_Actor.SetConstraintsDirty(Oni.ConstraintType.Pin); + } + + break; + + case AttachmentType.Static: + + var blueprint = m_Actor.sourceBlueprint; + bool targetActive = m_Target.gameObject.activeInHierarchy; + + // Build the attachment matrix: + Matrix4x4 attachmentMatrix = solver.transform.worldToLocalMatrix * m_Target.localToWorldMatrix; + + // Fix all particles in the group and update their position + // Note: skip assignment to startPositions if you want attached particles to be interpolated too. + for (int i = 0; i < m_SolverIndices.Length; ++i) + { + int solverIndex = m_SolverIndices[i]; + + if (solverIndex >= 0 && solverIndex < solver.invMasses.count) + { + if (targetActive) + { + solver.invMasses[solverIndex] = 0; + solver.velocities[solverIndex] = Vector3.zero; + solver.startPositions[solverIndex] = solver.positions[solverIndex] = attachmentMatrix.MultiplyPoint3x4(m_PositionOffsets[i]); + }else + solver.invMasses[solverIndex] = blueprint.invMasses[i]; + } + } + + if (m_Actor.usesOrientedParticles && m_ConstrainOrientation) + { + Quaternion attachmentRotation = attachmentMatrix.rotation; + + for (int i = 0; i < m_SolverIndices.Length; ++i) + { + int solverIndex = m_SolverIndices[i]; + + if (solverIndex >= 0 && solverIndex < solver.invRotationalMasses.count) + { + if (targetActive) + { + solver.invRotationalMasses[solverIndex] = 0; + solver.angularVelocities[solverIndex] = Vector3.zero; + solver.startOrientations[solverIndex] = solver.orientations[solverIndex] = attachmentRotation * m_OrientationOffsets[i]; + } + else + solver.invRotationalMasses[solverIndex] = blueprint.invRotationalMasses[i]; + } + } + } + break; + } + } + } + + private void BreakDynamicAttachment(float stepTime) + { + + if (enabled && m_AttachmentType == AttachmentType.Dynamic && m_Actor.isLoaded && isBound) + { + + var solver = m_Actor.solver; + + var actorConstraints = m_Actor.GetConstraintsByType(Oni.ConstraintType.Pin) as ObiConstraints; + var solverConstraints = solver.GetConstraintsByType(Oni.ConstraintType.Pin) as ObiConstraints; + + bool dirty = false; + if (actorConstraints != null && pinBatch != null) + { + int pinBatchIndex = actorConstraints.batches.IndexOf(pinBatch); + if (pinBatchIndex >= 0 && pinBatchIndex < actor.solverBatchOffsets[(int)Oni.ConstraintType.Pin].Count) + { + int offset = actor.solverBatchOffsets[(int)Oni.ConstraintType.Pin][pinBatchIndex]; + var solverBatch = solverConstraints.batches[pinBatchIndex]; + + float sqrTime = stepTime * stepTime; + for (int i = 0; i < pinBatch.activeConstraintCount; i++) + { + // In case the handle has been created/destroyed. + if (pinBatch.pinBodies[i] != attachedCollider.Handle) + { + pinBatch.pinBodies[i] = attachedCollider.Handle; + dirty = true; + } + + // in case the constraint has been broken: + if (-solverBatch.lambdas[(offset + i) * 4 + 3] / sqrTime > pinBatch.breakThresholds[i]) + { + pinBatch.DeactivateConstraint(i); + dirty = true; + } + } + } + } + + // constraints are recreated at the start of a step. + if (dirty) + m_Actor.SetConstraintsDirty(Oni.ConstraintType.Pin); + } + } + } +} diff --git a/Assets/Obi/Scripts/Common/Utils/ObiParticleAttachment.cs.meta b/Assets/Obi/Scripts/Common/Utils/ObiParticleAttachment.cs.meta new file mode 100644 index 000000000..8ba6d24ea --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiParticleAttachment.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4d03c9194b7ab4aaba4dfa5afec22c69 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 528d201bc10084452b24974deb16a423, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/ObiParticleDragger.cs b/Assets/Obi/Scripts/Common/Utils/ObiParticleDragger.cs new file mode 100644 index 000000000..90f193dec --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiParticleDragger.cs @@ -0,0 +1,84 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [RequireComponent(typeof(LineRenderer))] + [RequireComponent(typeof(ObiParticlePicker))] + public class ObiParticleDragger : MonoBehaviour + { + public float springStiffness = 500; + public float springDamping = 50; + public bool drawSpring = true; + + private LineRenderer lineRenderer; + private ObiParticlePicker picker; + private ObiParticlePicker.ParticlePickEventArgs pickArgs; + + void OnEnable() + { + lineRenderer = GetComponent(); + picker = GetComponent(); + picker.OnParticlePicked.AddListener(Picker_OnParticleDragged); + picker.OnParticleDragged.AddListener(Picker_OnParticleDragged); + picker.OnParticleReleased.AddListener(Picker_OnParticleReleased); + } + + void OnDisable() + { + picker.OnParticlePicked.RemoveListener(Picker_OnParticleDragged); + picker.OnParticleDragged.RemoveListener(Picker_OnParticleDragged); + picker.OnParticleReleased.RemoveListener(Picker_OnParticleReleased); + lineRenderer.positionCount = 0; + } + + void FixedUpdate() + { + ObiSolver solver = picker.solver; + + if (solver != null && pickArgs != null) + { + + // Calculate picking position in solver space: + Vector4 targetPosition = solver.transform.InverseTransformPoint(pickArgs.worldPosition); + + // Calculate effective inverse mass: + float invMass = solver.invMasses[pickArgs.particleIndex]; + + if (invMass > 0) + { + // Calculate and apply spring force: + Vector4 position = solver.positions[pickArgs.particleIndex]; + Vector4 velocity = solver.velocities[pickArgs.particleIndex]; + solver.externalForces[pickArgs.particleIndex] = ((targetPosition - position) * springStiffness - velocity * springDamping) / invMass; + + + if (drawSpring) + { + lineRenderer.positionCount = 2; + lineRenderer.SetPosition(0, pickArgs.worldPosition); + lineRenderer.SetPosition(1, solver.transform.TransformPoint(position)); + } + else + { + lineRenderer.positionCount = 0; + } + } + + } + } + + void Picker_OnParticleDragged(ObiParticlePicker.ParticlePickEventArgs e) + { + pickArgs = e; + } + + void Picker_OnParticleReleased(ObiParticlePicker.ParticlePickEventArgs e) + { + pickArgs = null; + lineRenderer.positionCount = 0; + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/Utils/ObiParticleDragger.cs.meta b/Assets/Obi/Scripts/Common/Utils/ObiParticleDragger.cs.meta new file mode 100644 index 000000000..a950385e8 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiParticleDragger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 30e140e2334fb4e2f9430c6ed936e4ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/ObiParticleGridDebugger.cs b/Assets/Obi/Scripts/Common/Utils/ObiParticleGridDebugger.cs new file mode 100644 index 000000000..4a2a827b4 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiParticleGridDebugger.cs @@ -0,0 +1,45 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Obi +{ + + [RequireComponent(typeof(ObiSolver))] + public class ObiParticleGridDebugger : MonoBehaviour + { + + ObiSolver solver; + ObiNativeAabbList cells; + + void OnEnable() + { + solver = GetComponent(); + cells = new ObiNativeAabbList(); + } + + private void OnDisable() + { + cells.Dispose(); + } + + void LateUpdate () + { + cells.count = solver.implementation.GetParticleGridSize(); + solver.implementation.GetParticleGrid(cells); + } + + void OnDrawGizmos() + { + + if (cells != null) + { + Gizmos.color = Color.yellow; + for(int i = 0; i < cells.count; ++i) + Gizmos.DrawWireCube(cells[i].center, cells[i].size); + } + + } + + } +} diff --git a/Assets/Obi/Scripts/Common/Utils/ObiParticleGridDebugger.cs.meta b/Assets/Obi/Scripts/Common/Utils/ObiParticleGridDebugger.cs.meta new file mode 100644 index 000000000..f787114ba --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiParticleGridDebugger.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 12c0ac28542b14de6a887a6a9067d86d +timeCreated: 1487351379 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/ObiParticlePicker.cs b/Assets/Obi/Scripts/Common/Utils/ObiParticlePicker.cs new file mode 100644 index 000000000..9c5d4a474 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiParticlePicker.cs @@ -0,0 +1,140 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Events; + +namespace Obi +{ + + public class ObiParticlePicker : MonoBehaviour + { + + public class ParticlePickEventArgs : EventArgs + { + + public int particleIndex; + public Vector3 worldPosition; + + public ParticlePickEventArgs(int particleIndex, Vector3 worldPosition) + { + this.particleIndex = particleIndex; + this.worldPosition = worldPosition; + } + } + + [Serializable] + public class ParticlePickUnityEvent : UnityEvent { } + + public ObiSolver solver; + public float radiusScale = 1; + + public ParticlePickUnityEvent OnParticlePicked; + public ParticlePickUnityEvent OnParticleHeld; + public ParticlePickUnityEvent OnParticleDragged; + public ParticlePickUnityEvent OnParticleReleased; + + private Vector3 lastMousePos = Vector3.zero; + private int pickedParticleIndex = -1; + private float pickedParticleDepth = 0; + + void Awake() + { + lastMousePos = Input.mousePosition; + } + + void LateUpdate() + { + + if (solver != null) + { + + // Click: + if (Input.GetMouseButtonDown(0)) + { + + pickedParticleIndex = -1; + + Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); + + float closestMu = float.MaxValue; + float closestDistance = float.MaxValue; + + Matrix4x4 solver2World = solver.transform.localToWorldMatrix; + + // Find the closest particle hit by the ray: + for (int i = 0; i < solver.renderablePositions.count; ++i) + { + + Vector3 worldPos = solver2World.MultiplyPoint3x4(solver.renderablePositions[i]); + + float mu; + Vector3 projected = ObiUtils.ProjectPointLine(worldPos, ray.origin, ray.origin + ray.direction, out mu, false); + float distanceToRay = Vector3.SqrMagnitude(worldPos - projected); + + // Disregard particles behind the camera: + mu = Mathf.Max(0, mu); + + float radius = solver.principalRadii[i][0] * radiusScale; + + if (distanceToRay <= radius * radius && distanceToRay < closestDistance && mu < closestMu) + { + closestMu = mu; + closestDistance = distanceToRay; + pickedParticleIndex = i; + } + } + + if (pickedParticleIndex >= 0) + { + + pickedParticleDepth = Camera.main.transform.InverseTransformVector(solver2World.MultiplyPoint3x4(solver.renderablePositions[pickedParticleIndex]) - Camera.main.transform.position).z; + + if (OnParticlePicked != null) + { + Vector3 worldPosition = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, pickedParticleDepth)); + OnParticlePicked.Invoke(new ParticlePickEventArgs(pickedParticleIndex, worldPosition)); + } + } + + } + else if (pickedParticleIndex >= 0) + { + + // Drag: + Vector3 mouseDelta = Input.mousePosition - lastMousePos; + if (mouseDelta.magnitude > 0.01f && OnParticleDragged != null) + { + + Vector3 worldPosition = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, pickedParticleDepth)); + OnParticleDragged.Invoke(new ParticlePickEventArgs(pickedParticleIndex, worldPosition)); + + } + else if (OnParticleHeld != null) + { + + Vector3 worldPosition = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, pickedParticleDepth)); + OnParticleHeld.Invoke(new ParticlePickEventArgs(pickedParticleIndex, worldPosition)); + + } + + // Release: + if (Input.GetMouseButtonUp(0)) + { + + if (OnParticleReleased != null) + { + Vector3 worldPosition = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, pickedParticleDepth)); + OnParticleReleased.Invoke(new ParticlePickEventArgs(pickedParticleIndex, worldPosition)); + } + + pickedParticleIndex = -1; + + } + } + } + + lastMousePos = Input.mousePosition; + } + } +} diff --git a/Assets/Obi/Scripts/Common/Utils/ObiParticlePicker.cs.meta b/Assets/Obi/Scripts/Common/Utils/ObiParticlePicker.cs.meta new file mode 100644 index 000000000..286f8912f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiParticlePicker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: db4318b9b044a420ba02ad5138d542e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 0f9d020f7c659443a93327a34ede18b4, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/ObiProfiler.cs b/Assets/Obi/Scripts/Common/Utils/ObiProfiler.cs new file mode 100644 index 000000000..32e62596f --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiProfiler.cs @@ -0,0 +1,215 @@ +using System; +using UnityEngine; + +namespace Obi +{ + [DisallowMultipleComponent] + public class ObiProfiler : MonoBehaviour + { + [Header("Appearance")] + public GUISkin skin; + public Color threadColor = Color.white; + public Color taskColor = new Color(0.1f, 1, 0.2f); + public Color parallelTaskColor = new Color(1,0.8f,0.2f); + //public Color idleColor = new Color(0.7f,0.7f,0.7f); + public Color renderTaskColor = new Color(0.2f, 0.7f, 1.0f); + public Color defaultTaskColor = new Color(1, 0.5f, 0.2f); + + [Header("Visualization")] + public bool showPercentages = false; + public int profileThrottle = 30; + + private Oni.ProfileInfo[] info; + private double frameStart; + private double frameEnd; + private int frameCounter = 0; + private int yPos = 25; + private bool profiling = false; + + private float zoom = 1; + private Vector2 scrollPosition = Vector2.zero; + + private static ObiProfiler _instance; + + private void Awake() + { + if (_instance != null && _instance != this) + DestroyImmediate(this); + else{ + _instance = this; + } + } + + public void OnDestroy(){ +#if (OBI_ONI_SUPPORTED) + _instance = null; + Oni.EnableProfiler(false); +#endif + } + + private void OnEnable() + { +#if (OBI_ONI_SUPPORTED) + if (_instance != null && _instance.profiling) + Oni.EnableProfiler(true); +#endif + } + + private void OnDisable() + { +#if (OBI_ONI_SUPPORTED) + if (_instance != null) + Oni.EnableProfiler(false); +#endif + } + + public static void EnableProfiler() + { +#if (OBI_ONI_SUPPORTED) + if (_instance != null) + { + _instance.profiling = true; + if (_instance.isActiveAndEnabled) + Oni.EnableProfiler(true); + } +#endif + } + + public static void DisableProfiler() + { +#if (OBI_ONI_SUPPORTED) + if (_instance != null) + { + _instance.profiling = false; + Oni.EnableProfiler(false); + } +#endif + } + + public static void BeginSample(string name, byte type) + { +#if (OBI_ONI_SUPPORTED) + if (_instance != null) + Oni.BeginSample(name, type); +#endif + } + + public static void EndSample() + { +#if (OBI_ONI_SUPPORTED) + if (_instance != null) + Oni.EndSample(); +#endif + } + + private void UpdateProfilerInfo(){ +#if (OBI_ONI_SUPPORTED) + frameCounter--; + if (frameCounter <= 0) + { + int count = Oni.GetProfilingInfoCount(); + info = new Oni.ProfileInfo[count]; + Oni.GetProfilingInfo(info,count); + + frameCounter = profileThrottle; + + // Calculate frame duration: + frameStart = double.MaxValue; + frameEnd = double.MinValue; + foreach (Oni.ProfileInfo i in info){ + frameStart = Math.Min(frameStart,i.start); + frameEnd = Math.Max(frameEnd,i.end); + } + } + + Oni.ClearProfiler(); +#endif + } + + public void OnGUI() + { +#if (OBI_ONI_SUPPORTED) + if (Event.current.type == EventType.Layout) + UpdateProfilerInfo(); + + if (info == null) + return; + + GUI.skin = skin; + int toolbarHeight = 20; + int threadHeight = 20; + int scrollViewWidth = (int)(Screen.width / zoom); + + double frameDuration = frameEnd - frameStart; + + // Toolbar: + GUI.BeginGroup(new Rect(0,0,Screen.width,toolbarHeight),"","Box"); + + GUI.Label(new Rect(5,0,50,toolbarHeight),"Zoom:"); + zoom = GUI.HorizontalSlider(new Rect(50,5,100,toolbarHeight),zoom,0.005f,1); + GUI.Label(new Rect(Screen.width - 100,0,100,toolbarHeight),(frameDuration/1000.0f).ToString("0.###") + " ms/frame"); + + GUI.EndGroup(); + + // Timeline view: + scrollPosition = GUI.BeginScrollView(new Rect(0, toolbarHeight, Screen.width, Screen.height-20), scrollPosition, + new Rect(0, 0, scrollViewWidth, yPos+30)); // height depends on amount of threads. + + GUI.color = threadColor; + GUI.Label(new Rect(5,0,200,20),"Thread 1"); + GUI.Box(new Rect(0, 0, scrollViewWidth, 40),"","Thread"); + + yPos = 25; + uint currentThreadId = 0; + uint currentLevel = 0; + foreach (Oni.ProfileInfo i in info) + { + uint threadId = (i.info & (uint)Oni.ProfileMask.ThreadIdMask) >> 16; + uint level = (i.info & (uint)Oni.ProfileMask.StackLevelMask) >> 8; + uint type = i.info & (uint)Oni.ProfileMask.TypeMask; + + if (currentThreadId != threadId){ + yPos += threadHeight+1; + GUI.color = threadColor; + GUI.Label(new Rect(5,yPos+5,200,20),"Thread "+(threadId+1)); + GUI.Box(new Rect(0, yPos+5, scrollViewWidth, 40),"","Thread"); + yPos += 30; + }else if (currentLevel != level){ + yPos += threadHeight+1; + } + + currentLevel = level; + currentThreadId = threadId; + + switch(type){ + case 0: GUI.color = taskColor; break; + //case 1: GUI.color = idleColor; break; + case 2: GUI.color = parallelTaskColor; break; + case 3: GUI.color = renderTaskColor; break; + default: GUI.color = defaultTaskColor; break; + } + + // task duration: + int taskStart = (int) ((i.start - frameStart) / frameDuration * (Screen.width-10) / zoom); + int taskEnd = (int) ((i.end - frameStart) / frameDuration * (Screen.width-10) / zoom); + int taskDuration = taskEnd-taskStart; + + string name; + if (showPercentages) + { + double pctg = (i.end-i.start)/frameDuration*100; + name = i.name + " ("+pctg.ToString("0.#")+"%)"; + } + else{ + double ms = (i.end-i.start)/1000.0f; + name = i.name + " ("+ms.ToString("0.###")+"ms)"; + } + + GUI.Box(new Rect(taskStart, yPos, taskDuration-1, threadHeight),name,"Task"); + } + GUI.EndScrollView(); +#endif + } + } +} + diff --git a/Assets/Obi/Scripts/Common/Utils/ObiProfiler.cs.meta b/Assets/Obi/Scripts/Common/Utils/ObiProfiler.cs.meta new file mode 100644 index 000000000..d26c93d7c --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiProfiler.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 62e83a599724f45a4aa337d74764e572 +timeCreated: 1482252100 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: + - skin: {fileID: 11400000, guid: b90d3c214c99743b0865fc0e0d1f1a15, type: 2} + executionOrder: 0 + icon: {fileID: 2800000, guid: 1c322d61eeb3640408ee1119729d5c21, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/ObiStitcher.cs b/Assets/Obi/Scripts/Common/Utils/ObiStitcher.cs new file mode 100644 index 000000000..86c1f76bd --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiStitcher.cs @@ -0,0 +1,233 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace Obi +{ + /** + * ObiStitcher will create stitch constraints between 2 actors. All actors must be assigned to the same solver. + * - Add the constraint batch to the solver once all actors have been added. + * - If any of the actors is removed from the solver, remove the stitcher too. + * - Stitch constraints can keep n particles together, respecting their masses. + * - In edit mode, select the actors to be stitched and then select groups of particles and click "stitch". Or, create stitches by closeness. + */ + [ExecuteInEditMode] + public class ObiStitcher : MonoBehaviour + { + [Serializable] + public class Stitch + { + public int particleIndex1; + public int particleIndex2; + + public Stitch(int particleIndex1, int particleIndex2) + { + this.particleIndex1 = particleIndex1; + this.particleIndex2 = particleIndex2; + } + } + + [SerializeField] [HideInInspector] private List stitches = new List(); + + [SerializeField] [HideInInspector] private ObiActor actor1 = null; /**< one of the actors used by the stitcher.*/ + [SerializeField] [HideInInspector] private ObiActor actor2 = null; /**< the second actor used by the stitcher.*/ + + [HideInInspector] public ObiNativeIntList particleIndices = new ObiNativeIntList(); + [HideInInspector] public ObiNativeFloatList stiffnesses = new ObiNativeFloatList(); + [HideInInspector] public ObiNativeFloatList lambdas = new ObiNativeFloatList(); + + //private IntPtr batch; + private IStitchConstraintsBatchImpl m_BatchImpl; + private bool inSolver = false; + + public ObiActor Actor1 + { + set + { + if (actor1 != value) + { + UnregisterActor(actor1); + actor1 = value; + RegisterActor(actor1); + } + } + get { return actor1; } + } + + public ObiActor Actor2 + { + set + { + if (actor2 != value) + { + UnregisterActor(actor2); + actor2 = value; + RegisterActor(actor2); + } + } + get { return actor2; } + } + + public int StitchCount + { + get { return stitches.Count; } + } + + public IEnumerable Stitches + { + get { return stitches.AsReadOnly(); } + } + + private void RegisterActor(ObiActor actor) + { + if (actor != null) + { + actor.OnBlueprintLoaded += Actor_OnBlueprintLoaded; + actor.OnBlueprintUnloaded += Actor_OnBlueprintUnloaded; + + if (actor.solver != null) + Actor_OnBlueprintLoaded(actor, actor.sourceBlueprint); + + } + } + + private void UnregisterActor(ObiActor actor) + { + if (actor != null) + { + actor.OnBlueprintLoaded -= Actor_OnBlueprintLoaded; + actor.OnBlueprintUnloaded -= Actor_OnBlueprintUnloaded; + + if (actor.solver != null) + Actor_OnBlueprintUnloaded(actor, actor.sourceBlueprint); + } + } + + public void OnEnable() + { + RegisterActor(actor1); + RegisterActor(actor2); + } + + public void OnDisable() + { + UnregisterActor(actor1); + UnregisterActor(actor2); + } + + /** + * Adds a new stitch to the stitcher. Note that unlike calling Clear(), AddStitch does not automatically perform a + * PushDataToSolver(). You should manually call it once you're done adding multiple stitches. + * @param index of a particle in the first actor. + * @param index of a particle in the second actor. + * @return constrant index, that can be used to remove it with a call to RemoveStitch. + */ + public int AddStitch(int particle1, int particle2) + { + stitches.Add(new Stitch(particle1, particle2)); + return stitches.Count - 1; + } + + /** + * Removes. Note that unlike calling Clear(), AddStitch does not automatically perform a + * PushDataToSolver(). You should manually call it once you're done adding multiple stitches. + * @param constraint index. + */ + public void RemoveStitch(int index) + { + if (index >= 0 && index < stitches.Count) + stitches.RemoveAt(index); + } + + public void Clear() + { + stitches.Clear(); + PushDataToSolver(); + } + + void Actor_OnBlueprintUnloaded(ObiActor actor, ObiActorBlueprint blueprint) + { + // when any actor is removed from solver, remove stitches. + this.RemoveFromSolver(actor.solver); + } + + void Actor_OnBlueprintLoaded(ObiActor actor, ObiActorBlueprint blueprint) + { + // when both actors are in the same solver, add stitches. + if (actor1 != null && actor2 != null && actor1.isLoaded && actor2.isLoaded) + { + + if (actor1.solver != actor2.solver) + { + Debug.LogError("ObiStitcher cannot handle actors in different solvers."); + return; + } + + AddToSolver(actor1.solver); + } + } + + private void AddToSolver(ObiSolver solver) + { + if (!inSolver) + { + + inSolver = true; + + // create a constraint batch (CreateStitchConstraints() in burst returns a singleton): + m_BatchImpl = solver.implementation.CreateConstraintsBatch(Oni.ConstraintType.Stitch) as IStitchConstraintsBatchImpl; + + // push current data to solver: + PushDataToSolver(); + + // enable/disable the batch: + m_BatchImpl.enabled = isActiveAndEnabled; + } + + } + + private void RemoveFromSolver(ObiSolver solver) + { + // remove the constraint batch from the solver + // (no need to destroy it as its destruction is managed by the solver) + // Oni.RemoveBatch(actor1.solver.OniSolver, batch); + if (inSolver && m_BatchImpl != null) + { + solver.implementation.DestroyConstraintsBatch(m_BatchImpl as IStitchConstraintsBatchImpl); + m_BatchImpl.Destroy(); + m_BatchImpl = null; + + inSolver = false; + } + + } + + public void PushDataToSolver() + { + + if (!inSolver) + return; + + // set solver constraint data: + lambdas.Clear(); + particleIndices.ResizeUninitialized(stitches.Count * 2); + stiffnesses.ResizeUninitialized(stitches.Count); + lambdas.ResizeUninitialized(stitches.Count); + + for (int i = 0; i < stitches.Count; i++) + { + particleIndices[i * 2] = actor1.solverIndices[stitches[i].particleIndex1]; + particleIndices[i * 2 + 1] = actor2.solverIndices[stitches[i].particleIndex2]; + stiffnesses[i] = 0; + lambdas[i] = 0; + } + + m_BatchImpl.SetStitchConstraints(particleIndices, stiffnesses, lambdas, stitches.Count); + + } + + } +} + diff --git a/Assets/Obi/Scripts/Common/Utils/ObiStitcher.cs.meta b/Assets/Obi/Scripts/Common/Utils/ObiStitcher.cs.meta new file mode 100644 index 000000000..64a1aa9c2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiStitcher.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cdace116829344344988718be4fb70ab +timeCreated: 1489589304 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: ec05a2c75bb4a4ce5a3a1baa76b4c8d5, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/ObiUtils.cs b/Assets/Obi/Scripts/Common/Utils/ObiUtils.cs new file mode 100644 index 000000000..fcf48adf2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiUtils.cs @@ -0,0 +1,888 @@ +using UnityEngine; +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; + +namespace Obi +{ + + public static class Constants + { + public const int maxVertsPerMesh = 65000; + public const int maxInstancesPerBatch = 1023; + } + + public static class ObiUtils + { + + public const float epsilon = 0.0000001f; + public const float sqrt3 = 1.73205080f; + public const float sqrt2 = 1.41421356f; + + public const int FilterMaskBitmask = unchecked((int)0xffff0000); + public const int FilterCategoryBitmask = 0x0000ffff; + public const int ParticleGroupBitmask = 0x00ffffff; + + public const int CollideWithEverything = 0x0000ffff; + public const int CollideWithNothing= 0x0; + + public const int MaxCategory = 15; + public const int MinCategory = 0; + + [Flags] + public enum ParticleFlags + { + SelfCollide = 1 << 24, + Fluid = 1 << 25, + OneSided = 1 << 26 + } + + // Colour alphabet from https://www.aic-color.org/resources/Documents/jaic_v5_06.pdf + public static readonly Color32[] colorAlphabet = + { + new Color32(240,163,255,255), + new Color32(0,117,220,255), + new Color32(153,63,0,255), + new Color32(76,0,92,255), + new Color32(25,25,25,255), + new Color32(0,92,49,255), + new Color32(43,206,72,255), + new Color32(255,204,153,255), + new Color32(128,128,128,255), + new Color32(148,255,181,255), + new Color32(143,124,0,255), + new Color32(157,204,0,255), + new Color32(194,0,136,255), + new Color32(0,51,128,255), + new Color32(255,164,5,255), + new Color32(255,168,187,255), + new Color32(66,102,0,255), + new Color32(255,0,16,255), + new Color32(94,241,242,255), + new Color32(0,153,143,255), + new Color32(224,255,102,255), + new Color32(116,10,255,255), + new Color32(153,0,0,255), + new Color32(255,255,128,255), + new Color32(255,255,0,255), + new Color32(255,80,5,255) + }; + + public static readonly string[] categoryNames = + { + "0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15" + }; + + public static void DrawArrowGizmo(float bodyLenght, float bodyWidth, float headLenght, float headWidth) + { + + float halfBodyLenght = bodyLenght * 0.5f; + float halfBodyWidth = bodyWidth * 0.5f; + + // arrow body: + Gizmos.DrawLine(new Vector3(halfBodyWidth, 0, -halfBodyLenght), new Vector3(halfBodyWidth, 0, halfBodyLenght)); + Gizmos.DrawLine(new Vector3(-halfBodyWidth, 0, -halfBodyLenght), new Vector3(-halfBodyWidth, 0, halfBodyLenght)); + Gizmos.DrawLine(new Vector3(-halfBodyWidth, 0, -halfBodyLenght), new Vector3(halfBodyWidth, 0, -halfBodyLenght)); + + // arrow head: + Gizmos.DrawLine(new Vector3(halfBodyWidth, 0, halfBodyLenght), new Vector3(headWidth, 0, halfBodyLenght)); + Gizmos.DrawLine(new Vector3(-halfBodyWidth, 0, halfBodyLenght), new Vector3(-headWidth, 0, halfBodyLenght)); + Gizmos.DrawLine(new Vector3(0, 0, halfBodyLenght + headLenght), new Vector3(headWidth, 0, halfBodyLenght)); + Gizmos.DrawLine(new Vector3(0, 0, halfBodyLenght + headLenght), new Vector3(-headWidth, 0, halfBodyLenght)); + } + + public static void DebugDrawCross(Vector3 pos, float size, Color color) + { + Debug.DrawLine(pos - Vector3.right * size, pos + Vector3.right * size, color); + Debug.DrawLine(pos - Vector3.up * size, pos + Vector3.up * size, color); + Debug.DrawLine(pos - Vector3.forward * size, pos + Vector3.forward * size, color); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void Swap(ref T lhs, ref T rhs) + { + T temp = lhs; + lhs = rhs; + rhs = temp; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void Swap(this T[] source, int index1, int index2) + { + if (source != null && index1 >= 0 && index2 != 0 && index1 < source.Length && index2 < source.Length) + { + T temp = source[index1]; + source[index1] = source[index2]; + source[index2] = temp; + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void Swap(this IList list, int index1, int index2) + { + if (list != null && index1 >= 0 && index2 != 0 && index1 < list.Count && index2 < list.Count) + { + T temp = list[index1]; + list[index1] = list[index2]; + list[index2] = temp; + } + } + + public static void ShiftLeft(this T[] source, int index, int count, int positions) + { + for (int j = 0; j < positions; ++j) + { + for (int i = index; i < index + count; ++i) + source.Swap(i, i - 1); + index--; + } + } + + public static void ShiftRight(this T[] source, int index, int count, int positions) + { + for (int j = 0; j < positions; ++j) + { + for (int i = index + count - 1; i >= index; --i) + source.Swap(i, i + 1); + index++; + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool AreValid(this Bounds bounds) + { + return !(float.IsNaN(bounds.center.x) || float.IsInfinity(bounds.center.x) || + float.IsNaN(bounds.center.y) || float.IsInfinity(bounds.center.y) || + float.IsNaN(bounds.center.z) || float.IsInfinity(bounds.center.z)); + } + + public static Bounds Transform(this Bounds b, Matrix4x4 m) + { + var xa = m.GetColumn(0) * b.min.x; + var xb = m.GetColumn(0) * b.max.x; + + var ya = m.GetColumn(1) * b.min.y; + var yb = m.GetColumn(1) * b.max.y; + + var za = m.GetColumn(2) * b.min.z; + var zb = m.GetColumn(2) * b.max.z; + + Bounds result = new Bounds(); + Vector3 pos = m.GetColumn(3); + result.SetMinMax(Vector3.Min(xa, xb) + Vector3.Min(ya, yb) + Vector3.Min(za, zb) + pos, + Vector3.Max(xa, xb) + Vector3.Max(ya, yb) + Vector3.Max(za, zb) + pos); + + + return result; + } + + public static int CountTrailingZeroes(int x) + { + int mask = 1; + for (int i = 0; i < 32; i++, mask <<= 1) + if ((x & mask) != 0) + return i; + + return 32; + } + + public static void Add(Vector3 a, Vector3 b, ref Vector3 result) + { + result.x = a.x + b.x; + result.y = a.y + b.y; + result.z = a.z + b.z; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float Remap(this float value, float from1, float to1, float from2, float to2) + { + return (value - from1) / (to1 - from1) * (to2 - from2) + from2; + } + + /** + * Modulo operator that also follows intuition for negative arguments. That is , -1 mod 3 = 2, not -1. + */ + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float Mod(float a, float b) + { + return a - b * Mathf.Floor(a / b); + } + + public static Matrix4x4 Add(this Matrix4x4 a, Matrix4x4 other) + { + for (int i = 0; i < 16; ++i) + a[i] += other[i]; + return a; + } + + public static float FrobeniusNorm(this Matrix4x4 a) + { + float norm = 0; + for (int i = 0; i < 16; ++i) + norm += a[i] * a[i]; + + return Mathf.Sqrt(norm); + } + + public static Matrix4x4 ScalarMultiply(this Matrix4x4 a, float s) + { + for (int i = 0; i < 16; ++i) + a[i] *= s; + return a; + } + + public static Vector3 ProjectPointLine(Vector3 point, Vector3 lineStart, Vector3 lineEnd, out float mu, bool clampToSegment = true) + { + Vector3 ap = point - lineStart; + Vector3 ab = lineEnd - lineStart; + + mu = Vector3.Dot(ap, ab) / Vector3.Dot(ab, ab); + + if (clampToSegment) + mu = Mathf.Clamp01(mu); + + return lineStart + ab * mu; + } + + public static bool LinePlaneIntersection(Vector3 planePoint, Vector3 planeNormal, Vector3 linePoint, Vector3 lineDirection, out Vector3 point) + { + point = linePoint; + Vector3 lineNormal = lineDirection.normalized; + float denom = Vector3.Dot(planeNormal, lineNormal); + + if (Mathf.Approximately(denom, 0)) + return false; + + float t = (Vector3.Dot(planeNormal,planePoint) - Vector3.Dot(planeNormal,linePoint)) / denom; + point = linePoint + lineNormal * t; + return true; + } + + public static float RaySphereIntersection(Vector3 rayOrigin, Vector3 rayDirection, Vector3 center, float radius) + { + Vector3 oc = rayOrigin - center; + + float a = Vector3.Dot(rayDirection, rayDirection); + float b = 2.0f * Vector3.Dot(oc, rayDirection); + float c = Vector3.Dot(oc, oc) - radius * radius; + float discriminant = b * b - 4 * a * c; + if(discriminant < 0){ + return -1.0f; + } + else{ + return (-b - Mathf.Sqrt(discriminant)) / (2.0f * a); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float InvMassToMass(float invMass) + { + return 1.0f / invMass; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float MassToInvMass(float mass) + { + return 1.0f / Mathf.Max(mass, 0.00001f); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int PureSign(this float val) + { + return ((0 <= val)?1:0) - ((val < 0)?1:0); + } + + public static void NearestPointOnTri(in Vector3 p1, + in Vector3 p2, + in Vector3 p3, + in Vector3 p, + out Vector3 result) + { + float e0x = p2.x - p1.x; + float e0y = p2.y - p1.y; + float e0z = p2.z - p1.z; + + float e1x = p3.x - p1.x; + float e1y = p3.y - p1.y; + float e1z = p3.z - p1.z; + + float v0x = p1.x - p.x; + float v0y = p1.y - p.y; + float v0z = p1.z - p.z; + + float a00 = e0x * e0x + e0y * e0y + e0z * e0z; + float a01 = e0x * e1x + e0y * e1y + e0z * e1z; + float a11 = e1x * e1x + e1y * e1y + e1z * e1z; + float b0 = e0x * v0x + e0y * v0y + e0z * v0z; + float b1 = e1x * v0x + e1y * v0y + e1z * v0z; + + const float zero = 0; + const float one = 1; + + float det = a00 * a11 - a01 * a01; + float t0 = a01 * b1 - a11 * b0; + float t1 = a01 * b0 - a00 * b1; + + if (t0 + t1 <= det) + { + if (t0 < zero) + { + if (t1 < zero) // region 4 + { + if (b0 < zero) + { + t1 = zero; + if (-b0 >= a00) // V0 + { + t0 = one; + } + else // E01 + { + t0 = -b0 / a00; + } + } + else + { + t0 = zero; + if (b1 >= zero) // V0 + { + t1 = zero; + } + else if (-b1 >= a11) // V2 + { + t1 = one; + } + else // E20 + { + t1 = -b1 / a11; + } + } + } + else // region 3 + { + t0 = zero; + if (b1 >= zero) // V0 + { + t1 = zero; + } + else if (-b1 >= a11) // V2 + { + t1 = one; + } + else // E20 + { + t1 = -b1 / a11; + } + } + } + else if (t1 < zero) // region 5 + { + t1 = zero; + if (b0 >= zero) // V0 + { + t0 = zero; + } + else if (-b0 >= a00) // V1 + { + t0 = one; + } + else // E01 + { + t0 = -b0 / a00; + } + } + else // region 0, interior + { + float invDet = one / det; + t0 *= invDet; + t1 *= invDet; + } + } + else + { + float tmp0, tmp1, numer, denom; + + if (t0 < zero) // region 2 + { + tmp0 = a01 + b0; + tmp1 = a11 + b1; + if (tmp1 > tmp0) + { + numer = tmp1 - tmp0; + denom = a00 - 2 * a01 + a11; + if (numer >= denom) // V1 + { + t0 = one; + t1 = zero; + } + else // E12 + { + t0 = numer / denom; + t1 = one - t0; + } + } + else + { + t0 = zero; + if (tmp1 <= zero) // V2 + { + t1 = one; + } + else if (b1 >= zero) // V0 + { + t1 = zero; + } + else // E20 + { + t1 = -b1 / a11; + } + } + } + else if (t1 < zero) // region 6 + { + tmp0 = a01 + b1; + tmp1 = a00 + b0; + if (tmp1 > tmp0) + { + numer = tmp1 - tmp0; + denom = a00 - 2 * a01 + a11; + if (numer >= denom) // V2 + { + t1 = one; + t0 = zero; + } + else // E12 + { + t1 = numer / denom; + t0 = one - t1; + } + } + else + { + t1 = zero; + if (tmp1 <= zero) // V1 + { + t0 = one; + } + else if (b0 >= zero) // V0 + { + t0 = zero; + } + else // E01 + { + t0 = -b0 / a00; + } + } + } + else // region 1 + { + numer = a11 + b1 - a01 - b0; + if (numer <= zero) // V2 + { + t0 = zero; + t1 = one; + } + else + { + denom = a00 - 2 * a01 + a11; + if (numer >= denom) // V1 + { + t0 = one; + t1 = zero; + } + else // 12 + { + t0 = numer / denom; + t1 = one - t0; + } + } + } + } + + result.x = p1.x + t0 * e0x + t1 * e1x; + result.y = p1.y + t0 * e0y + t1 * e1y; + result.z = p1.z + t0 * e0z + t1 * e1z; + } + + /** + * Calculates the area of a triangle. + */ + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float TriangleArea(Vector3 p1, Vector3 p2, Vector3 p3) + { + return Mathf.Sqrt(Vector3.Cross(p2 - p1, p3 - p1).sqrMagnitude) / 2f; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float EllipsoidVolume(Vector3 principalRadii) + { + return 4.0f / 3.0f * Mathf.PI * principalRadii.x * principalRadii.y * principalRadii.z; + } + + public static Quaternion RestDarboux(Quaternion q1, Quaternion q2) + { + Quaternion darboux = Quaternion.Inverse(q1) * q2; + + Vector4 omega_plus, omega_minus; + omega_plus = new Vector4(darboux.x, darboux.y, darboux.z, darboux.w + 1); + omega_minus = new Vector4(darboux.x, darboux.y, darboux.z, darboux.w - 1); + + if (omega_minus.sqrMagnitude > omega_plus.sqrMagnitude) + darboux = new Quaternion(darboux.x * -1, darboux.y * -1, darboux.z * -1, darboux.w * -1); + + return darboux; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float RestBendingConstraint(Vector3 positionA, Vector3 positionB, Vector3 positionC) + { + Vector3 center = (positionA + positionB + positionC) / 3; + return (positionC - center).magnitude; + } + + public static System.Collections.IEnumerable BilateralInterleaved(int count) + { + for (int i = 0; i < count; ++i) + { + if (i % 2 != 0) + yield return count - (count % 2) - i; + else yield return i; + } + } + + public static void BarycentricCoordinates(in Vector3 A, + in Vector3 B, + in Vector3 C, + in Vector3 P, + ref Vector3 bary) + { + + // Compute vectors + Vector3 v0 = C - A; + Vector3 v1 = B - A; + Vector3 v2 = P - A; + + // Compute dot products + float dot00 = Vector3.Dot(v0,v0); + float dot01 = Vector3.Dot(v0,v1); + float dot02 = Vector3.Dot(v0,v2); + float dot11 = Vector3.Dot(v1,v1); + float dot12 = Vector3.Dot(v1,v2); + + // Compute barycentric coordinates + float det = dot00 * dot11 - dot01 * dot01; + if (Math.Abs(det) > 1E-38) + { + float u = (dot11 * dot02 - dot01 * dot12) / det; + float v = (dot00 * dot12 - dot01 * dot02) / det; + bary = new Vector3(1-u-v,v,u); + } + + } + + public static void BarycentricInterpolation(in Vector3 p1, in Vector3 p2, in Vector3 p3, in Vector3 coords, out Vector3 result) + { + result.x = coords.x * p1.x + coords.y * p2.x + coords.z * p3.x; + result.y = coords.x * p1.y + coords.y * p2.y + coords.z * p3.y; + result.z = coords.x * p1.z + coords.y * p2.z + coords.z * p3.z; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float BarycentricInterpolation(float p1, float p2, float p3, Vector3 coords) + { + return coords[0] * p1 + coords[1] * p2 + coords[2] * p3; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float BarycentricExtrapolationScale(Vector3 coords) + { + + return 1.0f / (coords[0] * coords[0] + + coords[1] * coords[1] + + coords[2] * coords[2]); + + } + + public static Vector3[] CalculateAngleWeightedNormals(Vector3[] vertices, int[] triangles) + { + Vector3[] normals = new Vector3[vertices.Length]; + var normalBuffer = new Dictionary(); + + Vector3 v1, v2, v3, e1, e2; + for (int i = 0; i < triangles.Length; i += 3) + { + v1 = vertices[triangles[i]]; + v2 = vertices[triangles[i + 1]]; + v3 = vertices[triangles[i + 2]]; + + if (!normalBuffer.ContainsKey(v1)) + normalBuffer[v1] = Vector3.zero; + if (!normalBuffer.ContainsKey(v2)) + normalBuffer[v2] = Vector3.zero; + if (!normalBuffer.ContainsKey(v3)) + normalBuffer[v3] = Vector3.zero; + + e1 = v2 - v1; + e2 = v3 - v1; + normalBuffer[v1] += Vector3.Cross(e1,e2).normalized * Mathf.Acos(Vector3.Dot(e1.normalized, e2.normalized)); + + e1 = v3 - v2; + e2 = v1 - v2; + normalBuffer[v2] += Vector3.Cross(e1, e2).normalized * Mathf.Acos(Vector3.Dot(e1.normalized, e2.normalized)); + + e1 = v1 - v3; + e2 = v2 - v3; + normalBuffer[v3] += Vector3.Cross(e1, e2).normalized * Mathf.Acos(Vector3.Dot(e1.normalized, e2.normalized)); + } + + for (int i = 0; i < vertices.Length; ++i) + normals[i] = normalBuffer[vertices[i]].normalized; + + return normals; + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int MakePhase(int group, ParticleFlags flags) + { + return (group & ParticleGroupBitmask) | (int)flags; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int GetGroupFromPhase(int phase) + { + return phase & ParticleGroupBitmask; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static ParticleFlags GetFlagsFromPhase(int phase) + { + return (ParticleFlags)(phase & ~ParticleGroupBitmask); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int MakeFilter(int mask, int category) + { + return (mask << 16) | (1 << category); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int GetCategoryFromFilter(int filter) + { + return CountTrailingZeroes(filter & FilterCategoryBitmask); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int GetMaskFromFilter(int filter) + { + return (filter & FilterMaskBitmask) >> 16; + } + + public static void EigenSolve(Matrix4x4 D, out Vector3 S, out Matrix4x4 V) + { + // D is symmetric + // S is a vector whose elements are eigenvalues + // V is a matrix whose columns are eigenvectors + S = EigenValues(D); + Vector3 V0, V1, V2; + + if (S[0] - S[1] > S[1] - S[2]) + { + V0 = EigenVector(D, S[0]); + if (S[1] - S[2] < epsilon) + { + V2 = V0.unitOrthogonal(); + } + else + { + V2 = EigenVector(D, S[2]); V2 -= V0 * Vector3.Dot(V0, V2); V2 = Vector3.Normalize(V2); + } + V1 = Vector3.Cross(V2, V0); + } + else + { + V2 = EigenVector(D, S[2]); + if (S[0] - S[1] < epsilon) + { + V1 = V2.unitOrthogonal(); + } + else + { + V1 = EigenVector(D, S[1]); V1 -= V2 * Vector3.Dot(V2, V1); V1 = Vector3.Normalize(V1); + } + V0 = Vector3.Cross(V1, V2); + } + + V = Matrix4x4.identity; + V.SetColumn(0,V0); + V.SetColumn(1,V1); + V.SetColumn(2,V2); + } + + static Vector3 unitOrthogonal(this Vector3 input) + { + // Find a vector to cross() the input with. + if (!(input.x < input.z * epsilon) + || !(input.y < input.z * epsilon)) + { + float invnm = 1 / Vector3.Magnitude(new Vector2(input.x,input.y)); + return new Vector3(-input.y * invnm, input.x * invnm, 0); + } + else + { + float invnm = 1 / Vector3.Magnitude(new Vector2(input.y,input.z)); + return new Vector3(0, -input.z * invnm, input.y * invnm); + } + } + + // D is symmetric, S is an eigen value + static Vector3 EigenVector(Matrix4x4 D, float S) + { + // Compute a cofactor matrix of D - sI. + Vector4 c0 = D.GetColumn(0); c0[0] -= S; + Vector4 c1 = D.GetColumn(1); c1[1] -= S; + Vector4 c2 = D.GetColumn(2); c2[2] -= S; + + // Use an upper triangle + Vector3 c0p = new Vector3(c1[1] * c2[2] - c2[1] * c2[1], 0, 0); + Vector3 c1p = new Vector3(c2[1] * c2[0] - c1[0] * c2[2], c0[0] * c2[2] - c2[0] * c2[0], 0); + Vector3 c2p = new Vector3(c1[0] * c2[1] - c1[1] * c2[0], c1[0] * c2[0] - c0[0] * c2[1], c0[0] * c1[1] - c1[0] * c1[0]); + + // Get a column vector with a largest norm (non-zero). + float C01s = c1p[0] * c1p[0]; + float C02s = c2p[0] * c2p[0]; + float C12s = c2p[1] * c2p[1]; + Vector3 norm = new Vector3(c0p[0] * c0p[0] + C01s + C02s, + C01s + c1p[1] * c1p[1] + C12s, + C02s + C12s + c2p[2] * c2p[2]); + + // index of largest: + int index = 0; + if (norm[0] > norm[1] && norm[0] > norm[2]) + index = 0; + else if (norm[1] > norm[0] && norm[1] > norm[2]) + index = 1; + else + index = 2; + + Vector3 V = Vector3.zero; + + // special case + if (norm[index] < epsilon) + { + V[0] = 1; return V; + } + else if (index == 0) + { + V[0] = c0p[0]; V[1] = c1p[0]; V[2] = c2p[0]; + } + else if (index == 1) + { + V[0] = c1p[0]; V[1] = c1p[1]; V[2] = c2p[1]; + } + else + { + V = c2p; + } + return Vector3.Normalize(V); + } + + static Vector3 EigenValues(Matrix4x4 D) + { + float one_third = 1 / 3.0f; + float one_sixth = 1 / 6.0f; + float three_sqrt = Mathf.Sqrt(3.0f); + + Vector3 c0 = D.GetColumn(0); + Vector3 c1 = D.GetColumn(1); + Vector3 c2 = D.GetColumn(2); + + float m = one_third * (c0[0] + c1[1] + c2[2]); + + // K is D - I*diag(S) + float K00 = c0[0] - m; + float K11 = c1[1] - m; + float K22 = c2[2] - m; + + float K01s = c1[0] * c1[0]; + float K02s = c2[0] * c2[0]; + float K12s = c2[1] * c2[1]; + + float q = 0.5f * (K00 * (K11 * K22 - K12s) - K22 * K01s - K11 * K02s) + c1[0] * c2[1] * c0[2]; + float p = one_sixth * (K00 * K00 + K11 * K11 + K22 * K22 + 2 * (K01s + K02s + K12s)); + + float p_sqrt = Mathf.Sqrt(p); + + float tmp = p * p * p - q * q; + float phi = one_third * Mathf.Atan2(Mathf.Sqrt(Mathf.Max(0, tmp)), q); + float phi_c = Mathf.Cos(phi); + float phi_s = Mathf.Sin(phi); + float sqrt_p_c_phi = p_sqrt * phi_c; + float sqrt_p_3_s_phi = p_sqrt * three_sqrt * phi_s; + + float e0 = m + 2 * sqrt_p_c_phi; + float e1 = m - sqrt_p_c_phi - sqrt_p_3_s_phi; + float e2 = m - sqrt_p_c_phi + sqrt_p_3_s_phi; + + float aux; + if (e0 > e1) + { + aux = e0; + e0 = e1; + e1 = aux; + } + if (e0 > e2) + { + aux = e0; + e0 = e2; + e2 = aux; + } + if (e1 > e2) + { + aux = e1; + e1 = e2; + e2 = aux; + } + + return new Vector3(e2, e1, e0); + } + + public static Vector3 GetPointCloudCentroid(List points) + { + Vector3 centroid = Vector3.zero; + for (int i = 0; i < points.Count; ++i) + centroid += points[i]; + return centroid / points.Count; + } + + public static void GetPointCloudAnisotropy(List points, float max_anisotropy, float radius, in Vector3 hint_normal, ref Vector3 centroid, ref Quaternion orientation, ref Vector3 principal_radii) + { + int count = points.Count; if (count < 2 || radius <= 0 || max_anisotropy <= 0) { principal_radii = Vector3.one * radius; orientation = Quaternion.identity; return; } centroid = GetPointCloudCentroid(points); + + // three columns of a 3x3 anisotropy matrix: + Vector4 c0 = Vector4.zero, + c1 = Vector4.zero, + c2 = Vector4.zero; Matrix4x4 anisotropy = Matrix4x4.zero; + + // multiply offset by offset transposed, and add to matrix: + for (int i = 0; i < count; i++) { Vector4 offset = points[i] - centroid; c0 += offset * offset[0]; c1 += offset * offset[1]; c2 += offset * offset[2]; } + + // calculate maximum absolute value: + float max0 = Mathf.Max(Mathf.Max(Mathf.Abs(c0.x), Mathf.Abs(c0.y)), Mathf.Abs(c0.z)); float max1 = Mathf.Max(Mathf.Max(Mathf.Abs(c1.x), Mathf.Abs(c1.y)), Mathf.Abs(c1.z)); float max2 = Mathf.Max(Mathf.Max(Mathf.Abs(c2.x), Mathf.Abs(c2.y)), Mathf.Abs(c2.z)); float max = Mathf.Max(Mathf.Max(max0, max1), max2); + + // normalize matrix: + if (max > epsilon) + { + c0 /= max; + c1 /= max; + c2 /= max; + } anisotropy.SetColumn(0, c0); + anisotropy.SetColumn(1, c1); + anisotropy.SetColumn(2, c2); + + Matrix4x4 orientMat; EigenSolve(anisotropy, out principal_radii, out orientMat); + + // flip orientation if it is not in the same side as the hint normal: + if (Vector3.Dot(orientMat.GetColumn(2), hint_normal) < 0) { orientMat.SetColumn(2, orientMat.GetColumn(2) * -1); orientMat.SetColumn(1, orientMat.GetColumn(1) * -1); } max = principal_radii[0]; principal_radii = Vector3.Max(principal_radii, Vector3.one * max / max_anisotropy) / max * radius; orientation = orientMat.rotation; + } + } +} + diff --git a/Assets/Obi/Scripts/Common/Utils/ObiUtils.cs.meta b/Assets/Obi/Scripts/Common/Utils/ObiUtils.cs.meta new file mode 100644 index 000000000..455098f6e --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiUtils.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8ac31071459b040f39f1d86300525ed4 +timeCreated: 1435569421 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/ObiVectorMath.cs b/Assets/Obi/Scripts/Common/Utils/ObiVectorMath.cs new file mode 100644 index 000000000..5be0c7eae --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiVectorMath.cs @@ -0,0 +1,48 @@ +using UnityEngine; +using System.Collections; + + +namespace Obi +{ + public static class ObiVectorMath + { + public static void Cross(Vector3 a, Vector3 b, ref float x, ref float y, ref float z) + { + x = a.y * b.z - a.z * b.y; + y = a.z * b.x - a.x * b.z; + z = a.x * b.y - a.y * b.x; + } + + public static void Cross(Vector3 a, Vector3 b, ref Vector3 res) + { + res.x = a.y * b.z - a.z * b.y; + res.y = a.z * b.x - a.x * b.z; + res.z = a.x * b.y - a.y * b.x; + } + + public static void Cross(float ax, float ay, float az, float bx, float by, float bz, ref float x, ref float y, ref float z) + { + x = ay * bz - az * by; + y = az * bx - ax * bz; + z = ax * by - ay * bx; + } + + /** + * res = b - a + */ + public static void Subtract(Vector3 a, Vector3 b, ref Vector3 res) + { + res.x = b.x - a.x; + res.y = b.y - a.y; + res.z = b.z - a.z; + } + + public static void BarycentricInterpolation(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 n1, Vector3 n2, Vector3 n3, Vector3 coords, float height, ref Vector3 res) + { + res.x = coords.x * p1.x + coords.y * p2.x + coords.z * p3.x + (coords.x * n1.x + coords.y * n2.x + coords.z * n3.x) * height; + res.y = coords.x * p1.y + coords.y * p2.y + coords.z * p3.y + (coords.x * n1.y + coords.y * n2.y + coords.z * n3.y) * height; + res.z = coords.x * p1.z + coords.y * p2.z + coords.z * p3.z + (coords.x * n1.z + coords.y * n2.z + coords.z * n3.z) * height; + } + + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Common/Utils/ObiVectorMath.cs.meta b/Assets/Obi/Scripts/Common/Utils/ObiVectorMath.cs.meta new file mode 100644 index 000000000..fee9b11e9 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/ObiVectorMath.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6e41ed0a6b70c4f6bae2b72f0a3f89e4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Common/Utils/SetCategory.cs b/Assets/Obi/Scripts/Common/Utils/SetCategory.cs new file mode 100644 index 000000000..55ce6ceaf --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/SetCategory.cs @@ -0,0 +1,38 @@ +using UnityEngine; + +namespace Obi +{ + [RequireComponent(typeof(ObiActor))] + public class SetCategory : MonoBehaviour + { + public int category; + private ObiActor act; + + private void Awake() + { + act = GetComponent(); + act.OnBlueprintLoaded += OnLoad; + + if (act.isLoaded) + act.SetFilterCategory(category); + } + + private void OnDestroy() + { + act.OnBlueprintLoaded -= OnLoad; + } + + private void OnValidate() + { + category = Mathf.Clamp(category, ObiUtils.MinCategory, ObiUtils.MaxCategory); + + if (act != null && act.isLoaded) + act.SetFilterCategory(category); + } + + private void OnLoad(ObiActor actor, ObiActorBlueprint blueprint) + { + actor.SetFilterCategory(category); + } + } +} diff --git a/Assets/Obi/Scripts/Common/Utils/SetCategory.cs.meta b/Assets/Obi/Scripts/Common/Utils/SetCategory.cs.meta new file mode 100644 index 000000000..e9c9e89a2 --- /dev/null +++ b/Assets/Obi/Scripts/Common/Utils/SetCategory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 011ecd7e601cf4613b5b59bfd9d70895 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Obi.asmdef b/Assets/Obi/Scripts/Obi.asmdef new file mode 100644 index 000000000..abde79cbb --- /dev/null +++ b/Assets/Obi/Scripts/Obi.asmdef @@ -0,0 +1,42 @@ +{ + "name": "Obi", + "references": [ + "GUID:15fc0a57446b3144c949da3e2b9737a9", + "GUID:c579267770062bf448e75eb160330b7f", + "GUID:df380645f10b7bc4b97d4f5eb6303d95", + "GUID:3eae0364be2026648bf74846acb8a731", + "GUID:d8b63aba1907145bea998dd612889d6b", + "GUID:2665a8d13d1b3f18800f46e256720795", + "GUID:e0cd26848372d4e5c891c569017e11f1" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": true, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.unity.render-pipelines.universal", + "expression": "7.4.1", + "define": "SRP_UNIVERSAL" + }, + { + "name": "com.unity.collections", + "expression": "0.8.0-preview.5", + "define": "OBI_COLLECTIONS" + }, + { + "name": "com.unity.burst", + "expression": "1.2.3-verified", + "define": "OBI_BURST" + }, + { + "name": "com.unity.mathematics", + "expression": "1.0.1", + "define": "OBI_MATHEMATICS" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/Obi.asmdef.meta b/Assets/Obi/Scripts/Obi.asmdef.meta new file mode 100644 index 000000000..dba7c0b6c --- /dev/null +++ b/Assets/Obi/Scripts/Obi.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: da7abd44cdeea48609605c1c2c9609c0 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/Oni.cs b/Assets/Obi/Scripts/Oni.cs new file mode 100644 index 000000000..43c01674d --- /dev/null +++ b/Assets/Obi/Scripts/Oni.cs @@ -0,0 +1,653 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Runtime.InteropServices; +using Obi; + +/** + * Interface for the Oni particle physics library. + */ +public static class Oni +{ + + public const int ConstraintTypeCount = 17; + + public enum ConstraintType + { + Tether = 0, + Volume = 1, + Chain = 2, + Bending = 3, + Distance = 4, + ShapeMatching = 5, + BendTwist = 6, + StretchShear = 7, + Pin = 8, + ParticleCollision = 9, + Density = 10, + Collision = 11, + Skin = 12, + Aerodynamics = 13, + Stitch = 14, + ParticleFriction = 15, + Friction = 16 + }; + + public enum ShapeType + { + Sphere = 0, + Box = 1, + Capsule = 2, + Heightmap = 3, + TriangleMesh = 4, + EdgeMesh = 5, + SignedDistanceField = 6 + } + + public enum MaterialCombineMode + { + Average = 0, + Minimum = 1, + Multiply = 2, + Maximum = 3 + } + + public enum ProfileMask : uint + { + ThreadIdMask = 0xffff0000, + TypeMask = 0x000000ff, + StackLevelMask = 0x0000ff00 + } + + public struct ProfileInfo + { + public double start; + public double end; + public uint info; + public int pad; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string name; + } + + public struct GridCell + { + public Vector3 center; + public Vector3 size; + public int count; + } + + [Serializable] + public struct SolverParameters + { + + public enum Interpolation + { + None, + Interpolate, + }; + + public enum Mode + { + Mode3D, + Mode2D, + }; + + [Tooltip("In 2D mode, particles are simulated on the XY plane only. For use in conjunction with Unity's 2D mode.")] + public Mode mode; + + [Tooltip("Same as Rigidbody.interpolation. Set to INTERPOLATE for cloth that is applied on a main character or closely followed by a camera. NONE for everything else.")] + public Interpolation interpolation; + + [Tooltip("Simulation gravity expressed in local space.")] + public Vector3 gravity; + + [Tooltip("Percentage of velocity lost per second, between 0% (0) and 100% (1).")] + [Range(0, 1)] + public float damping; + + [Tooltip("Max ratio between a particle's longest and shortest axis. Use 1 for isotropic (completely round) particles.")] + [Range(1, 5)] + public float maxAnisotropy; + + [Tooltip("Mass-normalized kinetic energy threshold below which particle positions aren't updated.")] + public float sleepThreshold; + + [Tooltip("Maximum distance between elements (simplices/colliders) for a contact to be generated.")] + public float collisionMargin; + + [Tooltip("Maximum depenetration velocity applied to particles that start a frame inside an object. Low values ensure no 'explosive' collision resolution. Should be > 0 unless looking for non-physical effects.")] + public float maxDepenetration; + + [Tooltip("Percentage of particle velocities used for continuous collision detection. Set to 0 for purely static collisions, set to 1 for pure continuous collisions.")] + [Range(0, 1)] + public float continuousCollisionDetection; + + [Tooltip("Percentage of shock propagation applied to particle-particle collisions. Useful for particle stacking.")] + [Range(0, 1)] + public float shockPropagation; + + [Tooltip("Amount of iterations spent on convex optimization for surface collisions.")] + [Range(1, 32)] + public int surfaceCollisionIterations; + + [Tooltip("Error threshold at which to stop convex optimization for surface collisions.")] + public float surfaceCollisionTolerance; + + + public SolverParameters(Interpolation interpolation, Vector4 gravity) + { + this.mode = Mode.Mode3D; + this.gravity = gravity; + this.interpolation = interpolation; + damping = 0; + shockPropagation = 0; + surfaceCollisionIterations = 8; + surfaceCollisionTolerance = 0.005f; + maxAnisotropy = 3; + maxDepenetration = 10; + sleepThreshold = 0.0005f; + collisionMargin = 0.02f; + continuousCollisionDetection = 1; + } + + } + + [Serializable] + public struct ConstraintParameters + { + + public enum EvaluationOrder + { + Sequential, + Parallel + }; + + [Tooltip("Order in which constraints are evaluated. SEQUENTIAL converges faster but is not very stable. PARALLEL is very stable but converges slowly, requiring more iterations to achieve the same result.")] + public EvaluationOrder evaluationOrder; /**< Constraint evaluation order.*/ + + [Tooltip("Number of relaxation iterations performed by the constraint solver. A low number of iterations will perform better, but be less accurate.")] + public int iterations; /**< Amount of solver iterations per step for this constraint group.*/ + + [Tooltip("Over (or under if < 1) relaxation factor used. At 1, no overrelaxation is performed. At 2, constraints double their relaxation rate. High values reduce stability but improve convergence.")] + [Range(0.1f, 2)] + public float SORFactor; /**< Sucessive over-relaxation factor for parallel evaluation order.*/ + + [Tooltip("Whether this constraint group is solved or not.")] + [MarshalAs(UnmanagedType.I1)] + public bool enabled; + + public ConstraintParameters(bool enabled, EvaluationOrder order, int iterations) + { + this.enabled = enabled; + this.iterations = iterations; + this.evaluationOrder = order; + this.SORFactor = 1; + } + + } + + // In this particular case, size is forced to 144 bytes to ensure 16 byte memory alignment needed by Oni. + [StructLayout(LayoutKind.Sequential, Size = 144)] + public struct Contact + { + public Vector4 pointA; + public Vector4 pointB; /**< Speculative point of contact. */ + public Vector4 normal; /**< Normal direction. */ + public Vector4 tangent; /**< Tangent direction. */ + public Vector4 bitangent; /**< Bitangent direction. */ + + public float distance; /** distance between both colliding entities at the beginning of the timestep.*/ + + public float normalImpulse; + public float tangentImpulse; + public float bitangentImpulse; + public float stickImpulse; + public float rollingFrictionImpulse; + + public int bodyA; /** simplex index*/ + public int bodyB; /** simplex or rigidbody index*/ + } + + public static GCHandle PinMemory(object data) + { + return GCHandle.Alloc(data, GCHandleType.Pinned); + } + + public static void UnpinMemory(GCHandle handle) + { + if (handle.IsAllocated) + handle.Free(); + } + +#if (UNITY_IOS && !UNITY_EDITOR) + const string LIBNAME = "__Internal"; +#elif ((UNITY_ANDROID || UNITY_STANDALONE_LINUX) && !UNITY_EDITOR) + const string LIBNAME = "Oni"; +#else + const string LIBNAME = "libOni"; +#endif + +// platform custom define (https://docs.unity3d.com/Manual/PlatformDependentCompilation.html) +#if (OBI_ONI_SUPPORTED) + + [DllImport(LIBNAME)] + public static extern void UpdateColliderGrid(float dt); + + [DllImport(LIBNAME)] + public static extern void SetColliders(IntPtr shapes, IntPtr bounds, IntPtr transforms, int count); + + [DllImport(LIBNAME)] + public static extern void SetRigidbodies(IntPtr rigidbodies); + + [DllImport(LIBNAME)] + public static extern void SetCollisionMaterials(IntPtr materials); + + [DllImport(LIBNAME)] + public static extern void SetTriangleMeshData(IntPtr headers, IntPtr nodes, IntPtr triangles, IntPtr vertices); + + [DllImport(LIBNAME)] + public static extern void SetEdgeMeshData(IntPtr headers, IntPtr nodes, IntPtr edges, IntPtr vertices); + + [DllImport(LIBNAME)] + public static extern void SetDistanceFieldData(IntPtr headers, IntPtr nodes); + + [DllImport(LIBNAME)] + public static extern void SetHeightFieldData(IntPtr headers, IntPtr samples); + + [DllImport(LIBNAME)] + public static extern IntPtr CreateSolver(int capacity); + + [DllImport(LIBNAME)] + public static extern void DestroySolver(IntPtr solver); + + [DllImport(LIBNAME)] + public static extern void SetCapacity(IntPtr solver, int capacity); + + [DllImport(LIBNAME)] + public static extern void InitializeFrame(IntPtr solver, ref Vector4 translation, ref Vector4 scale, ref Quaternion rotation); + + [DllImport(LIBNAME)] + public static extern void UpdateFrame(IntPtr solver, ref Vector4 translation, ref Vector4 scale, ref Quaternion rotation, float dt); + + [DllImport(LIBNAME)] + public static extern void ApplyFrame(IntPtr solver, float linearVelocityScale, float angularVelocityScale, float linearInertiaScale, float angularInertiaScale, float dt); + + [DllImport(LIBNAME)] + public static extern void RecalculateInertiaTensors(IntPtr solver); + + [DllImport(LIBNAME)] + public static extern void ResetForces(IntPtr solver); + + [DllImport(LIBNAME)] + public static extern void SetRigidbodyLinearDeltas(IntPtr solver, IntPtr linearDeltas); + + [DllImport(LIBNAME)] + public static extern void SetRigidbodyAngularDeltas(IntPtr solver, IntPtr angularDeltas); + + [DllImport(LIBNAME)] + public static extern void GetBounds(IntPtr solver, ref Vector3 min, ref Vector3 max); + + [DllImport(LIBNAME)] + public static extern int GetParticleGridSize(IntPtr solver); + + [DllImport(LIBNAME)] + public static extern void GetParticleGrid(IntPtr solver, GridCell[] cells); + + [DllImport(LIBNAME)] + public static extern int SpatialQuery(IntPtr solver, IntPtr shapes, IntPtr transforms, int count); + + [DllImport(LIBNAME)] + public static extern void GetQueryResults(IntPtr solver, IntPtr results, int num); + + [DllImport(LIBNAME)] + public static extern void SetSolverParameters(IntPtr solver, ref SolverParameters parameters); + + [DllImport(LIBNAME)] + public static extern void GetSolverParameters(IntPtr solver, ref SolverParameters parameters); + + [DllImport(LIBNAME)] + public static extern int SetActiveParticles(IntPtr solver, int[] active, int num); + + [DllImport(LIBNAME)] + public static extern IntPtr CollisionDetection(IntPtr solver, float delta_time); + + [DllImport(LIBNAME)] + public static extern IntPtr Step(IntPtr solver, float step_time, float substep_time, int substeps); + + [DllImport(LIBNAME)] + public static extern void ApplyPositionInterpolation(IntPtr solver, IntPtr draw_positions, IntPtr draw_orientations, float delta_seconds, float unsimulated_time); + + [DllImport(LIBNAME)] + public static extern void UpdateSkeletalAnimation(IntPtr solver); + + [DllImport(LIBNAME)] + public static extern int GetConstraintCount(IntPtr solver, int type); + + [DllImport(LIBNAME)] + public static extern void SetRenderableParticlePositions(IntPtr solver, IntPtr positions); + + [DllImport(LIBNAME)] + public static extern void SetParticlePhases(IntPtr solver, IntPtr phases); + + [DllImport(LIBNAME)] + public static extern void SetParticleFilters(IntPtr solver, IntPtr filters); + + [DllImport(LIBNAME)] + public static extern void SetParticleCollisionMaterials(IntPtr solver, IntPtr materialIndices); + + [DllImport(LIBNAME)] + public static extern void SetParticlePositions(IntPtr solver, IntPtr positions); + + [DllImport(LIBNAME)] + public static extern void SetParticlePreviousPositions(IntPtr solver, IntPtr prevPositions); + + [DllImport(LIBNAME)] + public static extern void SetParticleOrientations(IntPtr solver, IntPtr orientations); + + [DllImport(LIBNAME)] + public static extern void SetParticlePreviousOrientations(IntPtr solver, IntPtr prevOrientations); + + [DllImport(LIBNAME)] + public static extern void SetRenderableParticleOrientations(IntPtr solver, IntPtr orientations); + + [DllImport(LIBNAME)] + public static extern void SetParticleInverseMasses(IntPtr solver, IntPtr invMasses); + + [DllImport(LIBNAME)] + public static extern void SetParticleInverseRotationalMasses(IntPtr solver, IntPtr invRotMasses); + + [DllImport(LIBNAME)] + public static extern void SetParticlePrincipalRadii(IntPtr solver, IntPtr principalRadii); + + [DllImport(LIBNAME)] + public static extern void SetParticleVelocities(IntPtr solver, IntPtr velocities); + + [DllImport(LIBNAME)] + public static extern void SetParticleAngularVelocities(IntPtr solver, IntPtr angularVelocities); + + [DllImport(LIBNAME)] + public static extern void SetParticleExternalForces(IntPtr solver, IntPtr forces); + + [DllImport(LIBNAME)] + public static extern void SetParticleExternalTorques(IntPtr solver, IntPtr torques); + + [DllImport(LIBNAME)] + public static extern void SetParticleWinds(IntPtr solver, IntPtr winds); + + [DllImport(LIBNAME)] + public static extern void SetParticlePositionDeltas(IntPtr solver, IntPtr deltas); + + [DllImport(LIBNAME)] + public static extern void SetParticleOrientationDeltas(IntPtr solver, IntPtr deltas); + + [DllImport(LIBNAME)] + public static extern void SetParticlePositionConstraintCounts(IntPtr solver, IntPtr counts); + + [DllImport(LIBNAME)] + public static extern void SetParticleOrientationConstraintCounts(IntPtr solver, IntPtr counts); + + [DllImport(LIBNAME)] + public static extern void SetParticleNormals(IntPtr solver, IntPtr normals); + + [DllImport(LIBNAME)] + public static extern void SetParticleInverseInertiaTensors(IntPtr solver, IntPtr tensors); + + + [DllImport(LIBNAME)] + public static extern void SetParticleSmoothingRadii(IntPtr solver, IntPtr radii); + + [DllImport(LIBNAME)] + public static extern void SetParticleBuoyancy(IntPtr solver, IntPtr buoyancy); + + [DllImport(LIBNAME)] + public static extern void SetParticleRestDensities(IntPtr solver, IntPtr rest_densities); + + [DllImport(LIBNAME)] + public static extern void SetParticleViscosities(IntPtr solver, IntPtr viscosities); + + [DllImport(LIBNAME)] + public static extern void SetParticleSurfaceTension(IntPtr solver, IntPtr surface_tension); + + [DllImport(LIBNAME)] + public static extern void SetParticleVorticityConfinement(IntPtr solver, IntPtr vort_confinement); + + [DllImport(LIBNAME)] + public static extern void SetParticleAtmosphericDragPressure(IntPtr solver, IntPtr atmospheric_drag, IntPtr atmospheric_pressure); + + [DllImport(LIBNAME)] + public static extern void SetParticleDiffusion(IntPtr solver, IntPtr diffusion); + + + + [DllImport(LIBNAME)] + public static extern void SetParticleVorticities(IntPtr solver, IntPtr vorticities); + + [DllImport(LIBNAME)] + public static extern void SetParticleFluidData(IntPtr solver, IntPtr fluidData); + + [DllImport(LIBNAME)] + public static extern void SetParticleUserData(IntPtr solver, IntPtr userData); + + [DllImport(LIBNAME)] + public static extern void SetParticleAnisotropies(IntPtr solver, IntPtr anisotropies); + + [DllImport(LIBNAME)] + public static extern void SetSimplices(IntPtr solver, int[] indices, int pointCount, int edgeCount, int triangleCount); + + [DllImport(LIBNAME)] + public static extern int GetDeformableTriangleCount(IntPtr solver); + + [DllImport(LIBNAME)] + public static extern void SetDeformableTriangles(IntPtr solver, int[] indices, int num, int destOffset); + + [DllImport(LIBNAME)] + public static extern int RemoveDeformableTriangles(IntPtr solver, int num, int sourceOffset); + + [DllImport(LIBNAME)] + public static extern void SetConstraintGroupParameters(IntPtr solver, int type, ref ConstraintParameters parameters); + + [DllImport(LIBNAME)] + public static extern void GetConstraintGroupParameters(IntPtr solver, int type, ref ConstraintParameters parameters); + + [DllImport(LIBNAME)] + public static extern void SetRestPositions(IntPtr solver, IntPtr restPositions); + + [DllImport(LIBNAME)] + public static extern void SetRestOrientations(IntPtr solver, IntPtr restOrientations); + + [DllImport(LIBNAME)] + public static extern IntPtr CreateBatch(int type); + + [DllImport(LIBNAME)] + public static extern void DestroyBatch(IntPtr batch); + + [DllImport(LIBNAME)] + public static extern IntPtr AddBatch(IntPtr solver, IntPtr batch); + + [DllImport(LIBNAME)] + public static extern void RemoveBatch(IntPtr solver, IntPtr batch); + + [DllImport(LIBNAME)] + public static extern bool EnableBatch(IntPtr batch, [MarshalAs(UnmanagedType.I1)]bool enabled); + + [DllImport(LIBNAME)] + public static extern int GetBatchConstraintForces(IntPtr batch, float[] forces, int num, int destOffset); + + + + [DllImport(LIBNAME)] + public static extern void SetBatchConstraintCount(IntPtr batch, int num); + + [DllImport(LIBNAME)] + public static extern int GetBatchConstraintCount(IntPtr batch); + + [DllImport(LIBNAME)] + public static extern void SetDistanceConstraints(IntPtr batch, IntPtr indices, + IntPtr restLengths, + IntPtr stiffnesses, + IntPtr lambdas, + int num); + + [DllImport(LIBNAME)] + public static extern void SetBendingConstraints(IntPtr batch, IntPtr indices, + IntPtr restBends, + IntPtr bendingStiffnesses, + IntPtr plasticity, + IntPtr lambdas, + int num); + + [DllImport(LIBNAME)] + public static extern void SetSkinConstraints(IntPtr batch, + IntPtr indices, + IntPtr points, + IntPtr normals, + IntPtr radiiBackstops, + IntPtr stiffnesses, + IntPtr lambdas, + int num); + + [DllImport(LIBNAME)] + public static extern void SetAerodynamicConstraints(IntPtr batch, + IntPtr particleIndices, + IntPtr aerodynamicCoeffs, + int num); + + [DllImport(LIBNAME)] + public static extern void SetVolumeConstraints(IntPtr batch, + IntPtr triangleIndices, + IntPtr firstTriangle, + IntPtr numTriangles, + IntPtr restVolumes, + IntPtr pressureStiffnesses, + IntPtr lambdas, + int num); + + [DllImport(LIBNAME)] + public static extern void SetShapeMatchingConstraints(IntPtr batch, + IntPtr shapeIndices, + IntPtr firstIndex, + IntPtr numIndices, + IntPtr explicitGroup, + IntPtr materialParameters, + IntPtr restComs, + IntPtr coms, + IntPtr orientations, + IntPtr linearTransforms, + IntPtr plasticDeformations, + int num); + + [DllImport(LIBNAME)] + public static extern void CalculateRestShapeMatching(IntPtr solver, IntPtr batch); + + + [DllImport(LIBNAME)] + public static extern void SetStretchShearConstraints(IntPtr batch, + IntPtr particleIndices, + IntPtr orientationIndices, + IntPtr restLengths, + IntPtr restOrientations, + IntPtr stiffnesses, + IntPtr lambdas, + int num); + + [DllImport(LIBNAME)] + public static extern void SetBendTwistConstraints(IntPtr batch, + IntPtr orientationIndices, + IntPtr restDarboux, + IntPtr stiffnesses, + IntPtr plasticity, + IntPtr lambdas, + int num); + + [DllImport(LIBNAME)] + public static extern void SetTetherConstraints(IntPtr batch, + IntPtr indices, + IntPtr maxLenghtsScales, + IntPtr stiffnesses, + IntPtr lambdas, + int num); + + [DllImport(LIBNAME)] + public static extern void SetPinConstraints(IntPtr batch, + IntPtr indices, + IntPtr pinOffsets, + IntPtr restDarboux, + IntPtr colliders, + IntPtr stiffnesses, + IntPtr lambdas, + int num); + + [DllImport(LIBNAME)] + public static extern void SetStitchConstraints(IntPtr batch, + IntPtr indices, + IntPtr stiffnesses, + IntPtr lambdas, + int num); + + [DllImport(LIBNAME)] + public static extern void SetChainConstraints(IntPtr batch, + IntPtr indices, + IntPtr lengths, + IntPtr firstIndex, + IntPtr numIndex, + int num); + + [DllImport(LIBNAME)] + public static extern void GetCollisionContacts(IntPtr solver, Contact[] contacts, int n); + + [DllImport(LIBNAME)] + public static extern void GetParticleCollisionContacts(IntPtr solver, Contact[] contacts, int n); + + [DllImport(LIBNAME)] + public static extern int InterpolateDiffuseParticles(IntPtr solver, IntPtr properties, IntPtr diffusePositions, IntPtr diffuseProperties, IntPtr neighbourCount, int n); + + [DllImport(LIBNAME)] + public static extern int MakePhase(int group, ObiUtils.ParticleFlags flags); + + [DllImport(LIBNAME)] + public static extern int GetGroupFromPhase(int phase); + + [DllImport(LIBNAME)] + public static extern int GetFlagsFromPhase(int phase); + + [DllImport(LIBNAME)] + public static extern float BendingConstraintRest(float[] constraintCoordinates); + + [DllImport(LIBNAME)] + public static extern void CompleteAll(); + + [DllImport(LIBNAME)] + public static extern void Complete(IntPtr task); + + [DllImport(LIBNAME)] + public static extern IntPtr CreateEmpty(); + + [DllImport(LIBNAME)] + public static extern void Schedule(IntPtr task); + + [DllImport(LIBNAME)] + public static extern void AddChild(IntPtr task, IntPtr child); + + [DllImport(LIBNAME)] + public static extern int GetMaxSystemConcurrency(); + + [DllImport(LIBNAME)] + public static extern void ClearProfiler(); + + [DllImport(LIBNAME)] + public static extern void EnableProfiler([MarshalAs(UnmanagedType.I1)]bool cooked); + + [DllImport(LIBNAME)] + public static extern void BeginSample(string name, byte type); + + [DllImport(LIBNAME)] + public static extern void EndSample(); + + [DllImport(LIBNAME)] + public static extern int GetProfilingInfoCount(); + + [DllImport(LIBNAME)] + public static extern void GetProfilingInfo([Out] ProfileInfo[] info, int num); + +#endif +} diff --git a/Assets/Obi/Scripts/Oni.cs.meta b/Assets/Obi/Scripts/Oni.cs.meta new file mode 100644 index 000000000..e878c1370 --- /dev/null +++ b/Assets/Obi/Scripts/Oni.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: df1db1289f87d47fb934d1fdb2ed9965 +timeCreated: 1442803224 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod.meta b/Assets/Obi/Scripts/RopeAndRod.meta new file mode 100644 index 000000000..b70af415b --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: a5d5467b3dbba47dab7f72d43fcd6ebe +labels: +- ObiRope +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Actors.meta b/Assets/Obi/Scripts/RopeAndRod/Actors.meta new file mode 100644 index 000000000..225b63599 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Actors.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: abc784de05f944701a4dff27d147b35f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Actors/ObiBone.cs b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiBone.cs new file mode 100644 index 000000000..1f87271a1 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiBone.cs @@ -0,0 +1,553 @@ +using UnityEngine; +using System; +using System.Collections.Generic; + +namespace Obi +{ + [AddComponentMenu("Physics/Obi/Obi Bone", 882)] + [ExecuteInEditMode] + [DisallowMultipleComponent] + public class ObiBone : ObiActor, IStretchShearConstraintsUser, IBendTwistConstraintsUser, ISkinConstraintsUser + { + [Serializable] + public class BonePropertyCurve + { + [Min(0)] + public float multiplier; + public AnimationCurve curve; + + public BonePropertyCurve(float multiplier, float curveValue) + { + this.multiplier = multiplier; + this.curve = new AnimationCurve(new Keyframe(0, curveValue), new Keyframe(1, curveValue)); + } + + public float Evaluate(float time) + { + return curve.Evaluate(time) * multiplier; + } + } + + [Serializable] + public class IgnoredBone + { + public Transform bone; + public bool ignoreChildren; + } + + [NonSerialized] protected ObiBoneBlueprint m_BoneBlueprint; + + [SerializeField] protected bool m_SelfCollisions = false; + + [SerializeField] protected BonePropertyCurve _radius = new BonePropertyCurve(0.1f,1); + [SerializeField] protected BonePropertyCurve _mass = new BonePropertyCurve(0.1f,1); + [SerializeField] protected BonePropertyCurve _rotationalMass = new BonePropertyCurve(0.1f,1); + + // skin constraints: + [SerializeField] protected bool _skinConstraintsEnabled = true; + [SerializeField] protected BonePropertyCurve _skinCompliance = new BonePropertyCurve(0.01f, 1); + [SerializeField] protected BonePropertyCurve _skinRadius = new BonePropertyCurve(0.1f, 1); + + // distance constraints: + [SerializeField] protected bool _stretchShearConstraintsEnabled = true; + [SerializeField] protected BonePropertyCurve _stretchCompliance = new BonePropertyCurve(0, 1); + [SerializeField] protected BonePropertyCurve _shear1Compliance = new BonePropertyCurve(0, 1); + [SerializeField] protected BonePropertyCurve _shear2Compliance = new BonePropertyCurve(0, 1); + + // bend constraints: + [SerializeField] protected bool _bendTwistConstraintsEnabled = true; + [SerializeField] protected BonePropertyCurve _torsionCompliance = new BonePropertyCurve(0, 1); + [SerializeField] protected BonePropertyCurve _bend1Compliance = new BonePropertyCurve(0, 1); + [SerializeField] protected BonePropertyCurve _bend2Compliance = new BonePropertyCurve(0, 1); + [SerializeField] protected BonePropertyCurve _plasticYield = new BonePropertyCurve(0, 1); + [SerializeField] protected BonePropertyCurve _plasticCreep = new BonePropertyCurve(0, 1); + + [Tooltip("Filter used for collision detection.")] + [SerializeField] private int filter = ObiUtils.MakeFilter(ObiUtils.CollideWithEverything, 1); + + public bool fixRoot = true; + public bool stretchBones = true; + public List ignored = new List(); + + /// + /// Collision filter value used by fluid particles. + /// + public int Filter + { + set + { + if (filter != value) + { + filter = value; + UpdateFilter(); + } + } + get { return filter; } + } + + /// + /// Whether particles in this actor colide with particles using the same phase value. + /// + public bool selfCollisions + { + get { return m_SelfCollisions; } + set { if (value != m_SelfCollisions) { m_SelfCollisions = value; SetSelfCollisions(m_SelfCollisions); } } + } + + /// + /// Particle radius distribution over this bone hierarchy length. + /// + public BonePropertyCurve radius + { + get { return _radius; } + set { _radius = value; UpdateRadius(); } + } + + /// + /// Mass distribution over this bone hierarchy length. + /// + public BonePropertyCurve mass + { + get { return _mass; } + set { _mass = value; UpdateMasses(); } + } + + /// + /// Rotational mass distribution over this bone hierarchy length. + /// + public BonePropertyCurve rotationalMass + { + get { return _rotationalMass; } + set { _rotationalMass = value; UpdateMasses(); } + } + + /// + /// Whether this actor's skin constraints are enabled. + /// + public bool skinConstraintsEnabled + { + get { return _skinConstraintsEnabled; } + set { if (value != _skinConstraintsEnabled) { _skinConstraintsEnabled = value; SetConstraintsDirty(Oni.ConstraintType.Skin); } } + } + + /// + /// Compliance of this actor's skin constraints. + /// + public BonePropertyCurve skinCompliance + { + get { return _skinCompliance; } + set { _skinCompliance = value; SetConstraintsDirty(Oni.ConstraintType.Skin); } + } + + /// + /// Compliance of this actor's skin radius + /// + public BonePropertyCurve skinRadius + { + get { return _skinRadius; } + set { _skinRadius = value; SetConstraintsDirty(Oni.ConstraintType.Skin); } + } + + /// + /// Whether this actor's stretch/shear constraints are enabled. + /// + public bool stretchShearConstraintsEnabled + { + get { return _stretchShearConstraintsEnabled; } + set { if (value != _stretchShearConstraintsEnabled) { _stretchShearConstraintsEnabled = value; SetConstraintsDirty(Oni.ConstraintType.StretchShear); } } + } + + /// + /// Compliance of this actor's stretch/shear constraints, along their length. + /// + public BonePropertyCurve stretchCompliance + { + get { return _stretchCompliance; } + set { _stretchCompliance = value; SetConstraintsDirty(Oni.ConstraintType.StretchShear); } + } + + /// + /// Shearing compliance of this actor's stretch/shear constraints, along the first axis orthogonal to their length. + /// + public BonePropertyCurve shear1Compliance + { + get { return _shear1Compliance; } + set { _shear1Compliance = value; SetConstraintsDirty(Oni.ConstraintType.StretchShear); } + } + + /// + /// Shearing compliance of this actor's stretch/shear constraints, along the second axis orthogonal to their length. + /// + public BonePropertyCurve shear2Compliance + { + get { return _shear2Compliance; } + set { _shear2Compliance = value; SetConstraintsDirty(Oni.ConstraintType.StretchShear); } + } + + /// + /// Whether this actor's bend/twist constraints are enabled. + /// + public bool bendTwistConstraintsEnabled + { + get { return _bendTwistConstraintsEnabled; } + set { if (value != _bendTwistConstraintsEnabled) { _bendTwistConstraintsEnabled = value; SetConstraintsDirty(Oni.ConstraintType.BendTwist); } } + } + + /// + /// Torsional compliance of this actor's bend/twist constraints along their length. + /// + public BonePropertyCurve torsionCompliance + { + get { return _torsionCompliance; } + set { _torsionCompliance = value; SetConstraintsDirty(Oni.ConstraintType.BendTwist); } + } + + /// + /// Bending compliance of this actor's bend/twist constraints along the first axis orthogonal to their length. + /// + public BonePropertyCurve bend1Compliance + { + get { return _bend1Compliance; } + set { _bend1Compliance = value; SetConstraintsDirty(Oni.ConstraintType.BendTwist); } + } + + /// + /// Bending compliance of this actor's bend/twist constraints along the second axis orthogonal to their length. + /// + public BonePropertyCurve bend2Compliance + { + get { return _bend2Compliance; } + set { _bend2Compliance = value; SetConstraintsDirty(Oni.ConstraintType.BendTwist); } + } + + /// + /// Threshold for plastic behavior. + /// + /// Once bending goes above this value, a percentage of the deformation (determined by ) will be permanently absorbed into the rod's rest shape. + public BonePropertyCurve plasticYield + { + get { return _plasticYield; } + set { _plasticYield = value; SetConstraintsDirty(Oni.ConstraintType.BendTwist); } + } + + /// + /// Percentage of deformation that gets absorbed into the rest shape per second, once deformation goes above the threshold. + /// + public BonePropertyCurve plasticCreep + { + get { return _plasticCreep; } + set { _plasticCreep = value; SetConstraintsDirty(Oni.ConstraintType.BendTwist); } + } + + + public override ObiActorBlueprint sourceBlueprint + { + get { return m_BoneBlueprint; } + } + + public ObiBoneBlueprint boneBlueprint + { + get { return m_BoneBlueprint; } + set + { + if (m_BoneBlueprint != value) + { + RemoveFromSolver(); + ClearState(); + m_BoneBlueprint = value; + AddToSolver(); + } + } + } + + protected override void Awake() + { + m_BoneBlueprint = ScriptableObject.CreateInstance(); + UpdateBlueprint(); + base.Awake(); + } + + protected override void OnDestroy() + { + if (m_BoneBlueprint != null) + DestroyImmediate(m_BoneBlueprint); + + base.OnDestroy(); + } + + protected override void OnValidate() + { + base.OnValidate(); + UpdateFilter(); + UpdateRadius(); + UpdateMasses(); + SetupRuntimeConstraints(); + } + + public void UpdateBlueprint() + { + if (m_BoneBlueprint != null) + { + m_BoneBlueprint.root = transform; + m_BoneBlueprint.ignored = ignored; + m_BoneBlueprint.mass = mass; + m_BoneBlueprint.rotationalMass = rotationalMass; + m_BoneBlueprint.radius = radius; + m_BoneBlueprint.GenerateImmediate(); + } + } + + public override void LoadBlueprint(ObiSolver solver) + { + base.LoadBlueprint(solver); + SetupRuntimeConstraints(); + ResetToCurrentShape(); + } + + public override void UnloadBlueprint(ObiSolver solver) + { + ResetParticles(); + CopyParticleDataToTransforms(); + base.UnloadBlueprint(solver); + } + + private void SetupRuntimeConstraints() + { + SetConstraintsDirty(Oni.ConstraintType.Skin); + SetConstraintsDirty(Oni.ConstraintType.StretchShear); + SetConstraintsDirty(Oni.ConstraintType.BendTwist); + SetSelfCollisions(selfCollisions); + SetSimplicesDirty(); + UpdateFilter(); + UpdateCollisionMaterials(); + } + + private void FixRoot() + { + if (isLoaded) + { + int rootIndex = solverIndices[0]; + + var actor2Solver = actorLocalToSolverMatrix; + var actor2SolverR = actor2Solver.rotation; + + solver.invMasses[rootIndex] = 0; + solver.invRotationalMasses[rootIndex] = 0; + solver.velocities[rootIndex] = Vector4.zero; + solver.angularVelocities[rootIndex] = Vector4.zero; + + // take particle rest position in actor space (which is always zero), converts to solver space: + solver.renderablePositions[rootIndex] = solver.positions[rootIndex] = actor2Solver.MultiplyPoint3x4(Vector3.zero); + + // take particle rest orientation in actor space, and convert to solver space: + solver.renderableOrientations[rootIndex] = solver.orientations[rootIndex] = actor2SolverR * boneBlueprint.orientations[0]; + } + } + + private void UpdateFilter() + { + for (int i = 0; i < particleCount; i++) + { + boneBlueprint.filters[i] = filter; + if (isLoaded) + solver.filters[solverIndices[i]] = filter; + } + } + + public void UpdateRadius() + { + for (int i = 0; i < particleCount; ++i) + { + var normalizedCoord = boneBlueprint.normalizedLengths[i]; + var radii = Vector3.one * radius.Evaluate(normalizedCoord); + boneBlueprint.principalRadii[i] = radii; + + if (isLoaded) + solver.principalRadii[solverIndices[i]] = radii; + } + } + + public void UpdateMasses() + { + for (int i = 0; i < particleCount; ++i) + { + var normalizedCoord = boneBlueprint.normalizedLengths[i]; + var invMass = ObiUtils.MassToInvMass(mass.Evaluate(normalizedCoord)); + var invRotMass = ObiUtils.MassToInvMass(rotationalMass.Evaluate(normalizedCoord)); + + boneBlueprint.invMasses[i] = invMass; + boneBlueprint.invRotationalMasses[i] = invRotMass; + + if (isLoaded) + { + solver.invMasses[solverIndices[i]] = invMass; + solver.invRotationalMasses[solverIndices[i]] = invRotMass; + } + } + } + + public Vector3 GetSkinRadiiBackstop(ObiSkinConstraintsBatch batch, int constraintIndex) + { + float normalizedCoord = boneBlueprint.normalizedLengths[batch.particleIndices[constraintIndex]]; + return new Vector3(skinRadius.Evaluate(normalizedCoord),0,0); + } + + public float GetSkinCompliance(ObiSkinConstraintsBatch batch, int constraintIndex) + { + float normalizedCoord = boneBlueprint.normalizedLengths[batch.particleIndices[constraintIndex]]; + return skinCompliance.Evaluate(normalizedCoord); + } + + + public Vector3 GetBendTwistCompliance(ObiBendTwistConstraintsBatch batch, int constraintIndex) + { + float normalizedCoord = boneBlueprint.normalizedLengths[batch.particleIndices[constraintIndex * 2]]; + return new Vector3(bend1Compliance.Evaluate(normalizedCoord), + bend2Compliance.Evaluate(normalizedCoord), + torsionCompliance.Evaluate(normalizedCoord)); + } + + public Vector2 GetBendTwistPlasticity(ObiBendTwistConstraintsBatch batch, int constraintIndex) + { + float normalizedCoord = boneBlueprint.normalizedLengths[batch.particleIndices[constraintIndex * 2]]; + return new Vector2(plasticYield.Evaluate(normalizedCoord), + plasticCreep.Evaluate(normalizedCoord)); + } + + public Vector3 GetStretchShearCompliance(ObiStretchShearConstraintsBatch batch, int constraintIndex) + { + float normalizedCoord = boneBlueprint.normalizedLengths[batch.particleIndices[constraintIndex * 2]]; + return new Vector3(shear1Compliance.Evaluate(normalizedCoord), + shear2Compliance.Evaluate(normalizedCoord), + stretchCompliance.Evaluate(normalizedCoord)); + } + + public override void BeginStep(float stepTime) + { + base.BeginStep(stepTime); + + if (fixRoot) + FixRoot(); + + UpdateRestShape(); + } + + public override void PrepareFrame() + { + ResetReferenceOrientations(); + base.PrepareFrame(); + } + + public override void Interpolate() + { + if (Application.isPlaying && isActiveAndEnabled) + CopyParticleDataToTransforms(); + + base.Interpolate(); + } + + /// + /// Resets particle orientations/positions to match the current pose of the bone hierarchy, and sets all their velocities to zero. + /// + public void ResetToCurrentShape() + { + if (!isLoaded) return; + + var world2Solver = solver.transform.worldToLocalMatrix; + + for (int i = 0; i < particleCount; ++i) + { + var trfm = boneBlueprint.transforms[i]; + int solverIndex = solverIndices[i]; + + solver.velocities[solverIndex] = Vector4.zero; + solver.angularVelocities[solverIndex] = Vector4.zero; + + solver.renderablePositions[solverIndex] = solver.positions[solverIndex] = world2Solver.MultiplyPoint3x4(trfm.position); + + var boneDeltaAWS = trfm.rotation * Quaternion.Inverse(boneBlueprint.restOrientations[i]); + solver.renderableOrientations[solverIndex] = solver.orientations[solverIndex] = world2Solver.rotation * boneDeltaAWS * boneBlueprint.root2WorldR * boneBlueprint.orientations[i]; + } + } + + private void ResetReferenceOrientations() + { + if (boneBlueprint != null) + for (int i = 1; i < boneBlueprint.restTransformOrientations.Count; ++i) + boneBlueprint.transforms[i].localRotation = boneBlueprint.restTransformOrientations[i]; + } + + private void UpdateRestShape() + { + // use current bone transforms as rest state for the simulation: + var bc = GetConstraintsByType(Oni.ConstraintType.BendTwist) as ObiConstraints; + var sbc = solver.GetConstraintsByType(Oni.ConstraintType.BendTwist) as ObiConstraints; + + if (bendTwistConstraintsEnabled && bc != null && sbc != null) + for (int j = 0; j < bc.GetBatchCount(); ++j) + { + var batch = bc.GetBatch(j) as ObiBendTwistConstraintsBatch; + var solverBatch = sbc.batches[j] as ObiBendTwistConstraintsBatch; + int offset = solverBatchOffsets[(int)solverBatch.constraintType][j]; + + if (solverBatch.restDarbouxVectors.isCreated) + { + for (int i = 0; i < batch.activeConstraintCount; i++) + { + int indexA = batch.particleIndices[i * 2]; + int indexB = batch.particleIndices[i * 2 + 1]; + + // calculate bone rotation delta in world space: + var boneDeltaAWS = boneBlueprint.transforms[indexA].rotation * Quaternion.Inverse(boneBlueprint.restOrientations[indexA]); + var boneDeltaBWS = boneBlueprint.transforms[indexB].rotation * Quaternion.Inverse(boneBlueprint.restOrientations[indexB]); + + // apply delta to rest particle orientation: + var orientationA = boneDeltaAWS * boneBlueprint.root2WorldR * boneBlueprint.orientations[indexA]; + var orientationB = boneDeltaBWS * boneBlueprint.root2WorldR * boneBlueprint.orientations[indexB]; + + solverBatch.restDarbouxVectors[offset + i] = ObiUtils.RestDarboux(orientationA, orientationB); + } + } + } + + var sc = GetConstraintsByType(Oni.ConstraintType.Skin) as ObiConstraints; + var ssc = solver.GetConstraintsByType(Oni.ConstraintType.Skin) as ObiConstraints; + + if (skinConstraintsEnabled && sc != null && ssc != null) + for (int j = 0; j < sc.GetBatchCount(); ++j) + { + var batch = sc.GetBatch(j) as ObiSkinConstraintsBatch; + var solverBatch = ssc.batches[j] as ObiSkinConstraintsBatch; + int offset = solverBatchOffsets[(int)solverBatch.constraintType][j]; + + if (solverBatch.skinPoints.isCreated) + { + for (int i = 0; i < batch.activeConstraintCount; i++) + { + int index = batch.particleIndices[i]; + solverBatch.skinPoints[offset + i] = solver.transform.worldToLocalMatrix.MultiplyPoint3x4(boneBlueprint.transforms[index].position); + } + } + } + } + + private void CopyParticleDataToTransforms() + { + + if (boneBlueprint != null) + { + // copy current particle transforms to bones: + for (int i = 1; i < particleCount; ++i) + { + var trfm = boneBlueprint.transforms[i]; + + if (stretchBones) + trfm.position = GetParticlePosition(solverIndices[i]); + + var delta = GetParticleOrientation(solverIndices[i]) * Quaternion.Inverse(boneBlueprint.root2WorldR * boneBlueprint.orientations[i]); + trfm.rotation = delta * boneBlueprint.restOrientations[i]; + } + } + } + } +} diff --git a/Assets/Obi/Scripts/RopeAndRod/Actors/ObiBone.cs.meta b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiBone.cs.meta new file mode 100644 index 000000000..10400fd35 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiBone.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7be315bc5964b4fbca6cf0a978ff76a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 0a18e0376cc184a9b96ebb3bf0175cc2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRod.cs b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRod.cs new file mode 100644 index 000000000..fec820e8c --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRod.cs @@ -0,0 +1,253 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + [AddComponentMenu("Physics/Obi/Obi Rod", 881)] + [ExecuteInEditMode] + [DisallowMultipleComponent] + public class ObiRod : ObiRopeBase, IStretchShearConstraintsUser, IBendTwistConstraintsUser, IChainConstraintsUser + { + [SerializeField] protected ObiRodBlueprint m_RodBlueprint; + + // distance constraints: + [SerializeField] protected bool _stretchShearConstraintsEnabled = true; + [SerializeField] protected float _stretchCompliance = 0; + [SerializeField] protected float _shear1Compliance = 0; + [SerializeField] protected float _shear2Compliance = 0; + + // bend constraints: + [SerializeField] protected bool _bendTwistConstraintsEnabled = true; + [SerializeField] protected float _torsionCompliance = 0; + [SerializeField] protected float _bend1Compliance = 0; + [SerializeField] protected float _bend2Compliance = 0; + [SerializeField] [Range(0, 0.1f)] protected float _plasticYield = 0; + [SerializeField] protected float _plasticCreep = 0; + + // chain constraints: + [SerializeField] protected bool _chainConstraintsEnabled = true; + [SerializeField] [Range(0, 1)] protected float _tightness = 1; + + /// + /// Whether particles in this actor colide with particles using the same phase value. + /// + public bool selfCollisions + { + get { return m_SelfCollisions; } + set { if (value != m_SelfCollisions) { m_SelfCollisions = value; SetSelfCollisions(m_SelfCollisions); } } + } + + /// + /// Whether this actor's stretch/shear constraints are enabled. + /// + public bool stretchShearConstraintsEnabled + { + get { return _stretchShearConstraintsEnabled; } + set { if (value != _stretchShearConstraintsEnabled) { _stretchShearConstraintsEnabled = value; SetConstraintsDirty(Oni.ConstraintType.StretchShear); } } + } + + /// + /// Compliance of this actor's stretch/shear constraints, along their length. + /// + public float stretchCompliance + { + get { return _stretchCompliance; } + set { _stretchCompliance = value; SetConstraintsDirty(Oni.ConstraintType.StretchShear); } + } + + /// + /// Shearing compliance of this actor's stretch/shear constraints, along the first axis orthogonal to their length. + /// + public float shear1Compliance + { + get { return _shear1Compliance; } + set { _shear1Compliance = value; SetConstraintsDirty(Oni.ConstraintType.StretchShear); } + } + + /// + /// Shearing compliance of this actor's stretch/shear constraints, along the second axis orthogonal to their length. + /// + public float shear2Compliance + { + get { return _shear2Compliance; } + set { _shear2Compliance = value; SetConstraintsDirty(Oni.ConstraintType.StretchShear); } + } + + /// + /// Whether this actor's bend/twist constraints are enabled. + /// + public bool bendTwistConstraintsEnabled + { + get { return _bendTwistConstraintsEnabled; } + set { if (value != _bendTwistConstraintsEnabled) { _bendTwistConstraintsEnabled = value; SetConstraintsDirty(Oni.ConstraintType.BendTwist); } } + } + + /// + /// Torsional compliance of this actor's bend/twist constraints along their length. + /// + public float torsionCompliance + { + get { return _torsionCompliance; } + set { _torsionCompliance = value; SetConstraintsDirty(Oni.ConstraintType.BendTwist); } + } + + /// + /// Bending compliance of this actor's bend/twist constraints along the first axis orthogonal to their length. + /// + public float bend1Compliance + { + get { return _bend1Compliance; } + set { _bend1Compliance = value; SetConstraintsDirty(Oni.ConstraintType.BendTwist); } + } + + /// + /// Bending compliance of this actor's bend/twist constraints along the second axis orthogonal to their length. + /// + public float bend2Compliance + { + get { return _bend2Compliance; } + set { _bend2Compliance = value; SetConstraintsDirty(Oni.ConstraintType.BendTwist); } + } + + /// + /// Threshold for plastic behavior. + /// + /// Once bending goes above this value, a percentage of the deformation (determined by ) will be permanently absorbed into the rod's rest shape. + public float plasticYield + { + get { return _plasticYield; } + set { _plasticYield = value; SetConstraintsDirty(Oni.ConstraintType.BendTwist); } + } + + /// + /// Percentage of deformation that gets absorbed into the rest shape per second, once deformation goes above the threshold. + /// + public float plasticCreep + { + get { return _plasticCreep; } + set { _plasticCreep = value; SetConstraintsDirty(Oni.ConstraintType.BendTwist); } + } + + /// + /// Whether this actor's chain constraints are enabled. + /// + public bool chainConstraintsEnabled + { + get { return _chainConstraintsEnabled; } + set { if (value != _chainConstraintsEnabled) { _chainConstraintsEnabled = value; SetConstraintsDirty(Oni.ConstraintType.BendTwist); } } + } + + /// + /// Tightness of this actor's chain constraints. + /// + /// Controls how much chain constraints are allowed to compress. + public float tightness + { + get { return _tightness; } + set { _tightness = value; SetConstraintsDirty(Oni.ConstraintType.Chain); } + } + + /// + /// Average distance between consecutive particle centers in this rod. + /// + public float interParticleDistance + { + get { return m_RodBlueprint.interParticleDistance; } + } + + public override ObiActorBlueprint sourceBlueprint + { + get { return m_RodBlueprint; } + } + + public ObiRodBlueprint rodBlueprint + { + get { return m_RodBlueprint; } + set + { + if (m_RodBlueprint != value) + { + RemoveFromSolver(); + ClearState(); + m_RodBlueprint = value; + AddToSolver(); + } + } + } + + protected override void OnValidate() + { + base.OnValidate(); + SetConstraintsDirty(Oni.ConstraintType.BendTwist); + SetupRuntimeConstraints(); + } + + public override void LoadBlueprint(ObiSolver solver) + { + base.LoadBlueprint(solver); + RebuildElementsFromConstraints(); + SetupRuntimeConstraints(); + } + + private void SetupRuntimeConstraints() + { + SetConstraintsDirty(Oni.ConstraintType.StretchShear); + //SetConstraintsDirty(Oni.ConstraintType.BendTwist); + SetConstraintsDirty(Oni.ConstraintType.Chain); + SetSelfCollisions(selfCollisions); + RecalculateRestLength(); + SetSimplicesDirty(); + UpdateCollisionMaterials(); + } + + public Vector3 GetBendTwistCompliance(ObiBendTwistConstraintsBatch batch, int constraintIndex) + { + return new Vector3(bend1Compliance, bend2Compliance, torsionCompliance); + } + + public Vector2 GetBendTwistPlasticity(ObiBendTwistConstraintsBatch batch, int constraintIndex) + { + return new Vector2(plasticYield, plasticCreep); + } + + public Vector3 GetStretchShearCompliance(ObiStretchShearConstraintsBatch batch, int constraintIndex) + { + return new Vector3(shear1Compliance, shear2Compliance, stretchCompliance); + } + + protected override void RebuildElementsFromConstraintsInternal() + { + var dc = GetConstraintsByType(Oni.ConstraintType.StretchShear) as ObiConstraints; + if (dc == null || dc.GetBatchCount() < 2) + return; + + int constraintCount = dc.batches[0].activeConstraintCount + dc.batches[1].activeConstraintCount; + + elements = new List(constraintCount); + + for (int i = 0; i < constraintCount; ++i) + { + var batch = dc.batches[i % 2] as ObiStretchShearConstraintsBatch; + int constraintIndex = i / 2; + + var e = new ObiStructuralElement(); + e.particle1 = solverIndices[batch.particleIndices[constraintIndex * 2]]; + e.particle2 = solverIndices[batch.particleIndices[constraintIndex * 2 + 1]]; + e.restLength = batch.restLengths[constraintIndex]; + elements.Add(e); + } + + if (dc.batches.Count > 2) + { + var batch = dc.batches[2]; + var e = new ObiStructuralElement(); + e.particle1 = solverIndices[batch.particleIndices[0]]; + e.particle2 = solverIndices[batch.particleIndices[1]]; + e.restLength = batch.restLengths[0]; + elements.Add(e); + } + } + + } +} diff --git a/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRod.cs.meta b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRod.cs.meta new file mode 100644 index 000000000..4a9bd4922 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRod.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f2bc32c4faf04f039a86a6e3cea12a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 7125c3eebd3cc4f86aac51cca3ee1592, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRope.cs b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRope.cs new file mode 100644 index 000000000..50be7dc5a --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRope.cs @@ -0,0 +1,446 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + [AddComponentMenu("Physics/Obi/Obi Rope", 880)] + [ExecuteInEditMode] + [DisallowMultipleComponent] + public class ObiRope : ObiRopeBase, IDistanceConstraintsUser, IBendConstraintsUser + { + [SerializeField] protected ObiRopeBlueprint m_RopeBlueprint; + private ObiRopeBlueprint m_RopeBlueprintInstance; + + // rope has a list of structural elements. + // each structural element is equivalent to 1 distance constraint and 2 bend constraints (with previous, and following element). + // a structural element has force and rest length. + // a function re-generates constraints from structural elements when needed, placing them in the appropiate batches. + + public bool tearingEnabled = false; + public float tearResistanceMultiplier = 1000; /**< Factor that controls how much a structural cloth spring can stretch before breaking.*/ + public int tearRate = 1; + + // distance constraints: + [SerializeField] protected bool _distanceConstraintsEnabled = true; + [SerializeField] protected float _stretchingScale = 1; + [SerializeField] protected float _stretchCompliance = 0; + [SerializeField] [Range(0, 1)] protected float _maxCompression = 0; + + // bend constraints: + [SerializeField] protected bool _bendConstraintsEnabled = true; + [SerializeField] protected float _bendCompliance = 0; + [SerializeField] [Range(0, 0.5f)] protected float _maxBending = 0.025f; + [SerializeField] [Range(0, 0.1f)] protected float _plasticYield = 0; + [SerializeField] protected float _plasticCreep = 0; + + List tornElements = new List(); + + /// + /// Whether particles in this actor colide with particles using the same phase value. + /// + public bool selfCollisions + { + get { return m_SelfCollisions; } + set { if (value != m_SelfCollisions) { m_SelfCollisions = value; SetSelfCollisions(selfCollisions); } } + } + + /// + /// Whether this actor's distance constraints are enabled. + /// + public bool distanceConstraintsEnabled + { + get { return _distanceConstraintsEnabled; } + set { if (value != _distanceConstraintsEnabled) { _distanceConstraintsEnabled = value; SetConstraintsDirty(Oni.ConstraintType.Distance); } } + } + + /// + /// Scale value for this actor's distance constraints rest length. + /// + /// The default is 1. For instamce, a value of 2 will make the distance constraints twice as long, 0.5 will reduce their length in half. + public float stretchingScale + { + get { return _stretchingScale; } + set { _stretchingScale = value; SetConstraintsDirty(Oni.ConstraintType.Distance); } + } + + /// + /// Compliance of this actor's stretch constraints. + /// + public float stretchCompliance + { + get { return _stretchCompliance; } + set { _stretchCompliance = value; SetConstraintsDirty(Oni.ConstraintType.Distance); } + } + + /// + /// Maximum compression this actor's distance constraints can undergo. + /// + /// This is expressed as a percentage of the scaled rest length. + public float maxCompression + { + get { return _maxCompression; } + set { _maxCompression = value; SetConstraintsDirty(Oni.ConstraintType.Distance); } + } + + /// + /// Whether this actor's bend constraints are enabled. + /// + public bool bendConstraintsEnabled + { + get { return _bendConstraintsEnabled; } + set { if (value != _bendConstraintsEnabled) { _bendConstraintsEnabled = value; SetConstraintsDirty(Oni.ConstraintType.Bending); } } + } + + /// + /// Compliance of this actor's bend constraints. + /// + public float bendCompliance + { + get { return _bendCompliance; } + set { _bendCompliance = value; SetConstraintsDirty(Oni.ConstraintType.Bending); } + } + + /// + /// Max bending value that constraints can undergo before resisting bending. + /// + public float maxBending + { + get { return _maxBending; } + set { _maxBending = value; SetConstraintsDirty(Oni.ConstraintType.Bending); } + } + + /// + /// Threshold for plastic behavior. + /// + /// Once bending goes above this value, a percentage of the deformation (determined by ) will be permanently absorbed into the rope's rest shape. + public float plasticYield + { + get { return _plasticYield; } + set { _plasticYield = value; SetConstraintsDirty(Oni.ConstraintType.Bending); } + } + + /// + /// Percentage of deformation that gets absorbed into the rest shape per second, once deformation goes above the threshold. + /// + public float plasticCreep + { + get { return _plasticCreep; } + set { _plasticCreep = value; SetConstraintsDirty(Oni.ConstraintType.Bending); } + } + + /// + /// Average distance between consecutive particle centers in this rope. + /// + public float interParticleDistance + { + get { return m_RopeBlueprint.interParticleDistance; } + } + + public override ObiActorBlueprint sourceBlueprint + { + get { return m_RopeBlueprint; } + } + + public ObiRopeBlueprint ropeBlueprint + { + get { return m_RopeBlueprint; } + set + { + if (m_RopeBlueprint != value) + { + RemoveFromSolver(); + ClearState(); + m_RopeBlueprint = value; + AddToSolver(); + } + } + } + + public delegate void RopeTornCallback(ObiRope rope, ObiRopeTornEventArgs tearInfo); + public event RopeTornCallback OnRopeTorn; /**< Called when a constraint is torn.*/ + + public class ObiRopeTornEventArgs + { + public ObiStructuralElement element; /**< info about the element being torn.*/ + public int particleIndex; /**< index of the particle being torn*/ + + public ObiRopeTornEventArgs(ObiStructuralElement element, int particle) + { + this.element = element; + this.particleIndex = particle; + } + } + + protected override void OnValidate() + { + base.OnValidate(); + SetupRuntimeConstraints(); + } + + public override void LoadBlueprint(ObiSolver solver) + { + // create a copy of the blueprint for this cloth: + if (Application.isPlaying) + m_RopeBlueprintInstance = this.blueprint as ObiRopeBlueprint; + + base.LoadBlueprint(solver); + RebuildElementsFromConstraints(); + SetupRuntimeConstraints(); + } + + public override void UnloadBlueprint(ObiSolver solver) + { + base.UnloadBlueprint(solver); + + // delete the blueprint instance: + if (m_RopeBlueprintInstance != null) + DestroyImmediate(m_RopeBlueprintInstance); + } + + private void SetupRuntimeConstraints() + { + SetConstraintsDirty(Oni.ConstraintType.Distance); + SetConstraintsDirty(Oni.ConstraintType.Bending); + SetSelfCollisions(selfCollisions); + RecalculateRestLength(); + SetSimplicesDirty(); + UpdateCollisionMaterials(); + } + + public override void Substep(float substepTime) + { + base.Substep(substepTime); + + if (isActiveAndEnabled) + ApplyTearing(substepTime); + } + + protected void ApplyTearing(float substepTime) + { + + if (!tearingEnabled) + return; + + float sqrTime = substepTime * substepTime; + + tornElements.Clear(); + + var dc = GetConstraintsByType(Oni.ConstraintType.Distance) as ObiConstraints; + var sc = this.solver.GetConstraintsByType(Oni.ConstraintType.Distance) as ObiConstraints; + + if (dc != null && sc != null) + for (int j = 0; j < dc.GetBatchCount(); ++j) + { + var batch = dc.GetBatch(j) as ObiDistanceConstraintsBatch; + var solverBatch = sc.batches[j] as ObiDistanceConstraintsBatch; + + for (int i = 0; i < batch.activeConstraintCount; i++) + { + int elementIndex = j + 2 * i; + + // divide lambda by squared delta time to get force in newtons: + int offset = solverBatchOffsets[(int)Oni.ConstraintType.Distance][j]; + float force = solverBatch.lambdas[offset + i] / sqrTime; + + elements[elementIndex].constraintForce = force; + + if (-force > tearResistanceMultiplier) + { + tornElements.Add(elements[elementIndex]); + } + } + } + + if (tornElements.Count > 0) + { + + // sort edges by force: + tornElements.Sort(delegate (ObiStructuralElement x, ObiStructuralElement y) + { + return x.constraintForce.CompareTo(y.constraintForce); + }); + + int tornCount = 0; + for (int i = 0; i < tornElements.Count; i++) + { + if (Tear(tornElements[i])) + tornCount++; + if (tornCount >= tearRate) + break; + } + + if (tornCount > 0) + RebuildConstraintsFromElements(); + } + + } + + private int SplitParticle(int splitIndex) + { + // halve the original particle's mass: + m_Solver.invMasses[splitIndex] *= 2; + + CopyParticle(solver.particleToActor[splitIndex].indexInActor, activeParticleCount); + ActivateParticle(activeParticleCount); + + return solverIndices[activeParticleCount - 1]; + } + + + /// + /// Tears any given rope element. After calling Tear() one or multiple times, a call to RebuildConstraintsFromElements is needed to + /// update the rope particle/constraint representation. + /// + public bool Tear(ObiStructuralElement element) + { + // don't allow splitting if there are no free particles left in the pool. + if (activeParticleCount >= m_RopeBlueprint.particleCount) + return false; + + // Cannot split fixed particles: + if (m_Solver.invMasses[element.particle1] == 0) + return false; + + // Or particles that have been already split. + int index = elements.IndexOf(element); + if (index > 0 && elements[index - 1].particle2 != element.particle1) + return false; + + element.particle1 = SplitParticle(element.particle1); + + if (OnRopeTorn != null) + OnRopeTorn(this, new ObiRopeTornEventArgs(element, element.particle1)); + + return true; + } + + protected override void RebuildElementsFromConstraintsInternal() + { + var dc = GetConstraintsByType(Oni.ConstraintType.Distance) as ObiConstraints; + if (dc == null || dc.GetBatchCount() < 2) + return; + + int constraintCount = dc.batches[0].activeConstraintCount + dc.batches[1].activeConstraintCount; + + elements = new List(constraintCount); + + for (int i = 0; i < constraintCount; ++i) + { + var batch = dc.batches[i % 2] as ObiDistanceConstraintsBatch; + int constraintIndex = i / 2; + + var e = new ObiStructuralElement(); + e.particle1 = solverIndices[batch.particleIndices[constraintIndex * 2]]; + e.particle2 = solverIndices[batch.particleIndices[constraintIndex * 2 + 1]]; + e.restLength = batch.restLengths[constraintIndex]; + e.tearResistance = 1; + elements.Add(e); + } + + // loop-closing element: + if (dc.batches.Count > 2) + { + var batch = dc.batches[2]; + var e = new ObiStructuralElement(); + e.particle1 = solverIndices[batch.particleIndices[0]]; + e.particle2 = solverIndices[batch.particleIndices[1]]; + e.restLength = batch.restLengths[0]; + e.tearResistance = 1; + elements.Add(e); + } + } + + public override void RebuildConstraintsFromElements() + { + // regenerate constraints from elements: + var dc = GetConstraintsByType(Oni.ConstraintType.Distance) as ObiConstraints; + var bc = GetConstraintsByType(Oni.ConstraintType.Bending) as ObiConstraints; + + dc.DeactivateAllConstraints(); + bc.DeactivateAllConstraints(); + + int elementsCount = elements.Count - (ropeBlueprint.path.Closed ? 1 : 0); + for (int i = 0; i < elementsCount; ++i) + { + var db = dc.batches[i % 2] as ObiDistanceConstraintsBatch; + int constraint = db.activeConstraintCount; + + db.particleIndices[constraint * 2] = solver.particleToActor[elements[i].particle1].indexInActor; + db.particleIndices[constraint * 2 + 1] = solver.particleToActor[elements[i].particle2].indexInActor; + db.restLengths[constraint] = elements[i].restLength; + db.stiffnesses[constraint] = new Vector2(_stretchCompliance, _maxCompression * db.restLengths[constraint]); + db.ActivateConstraint(constraint); + + if (i < elementsCount - 1) + { + var bb = bc.batches[i % 3] as ObiBendConstraintsBatch; + + // create bend constraint only if there's continuity between elements: + if (elements[i].particle2 == elements[i + 1].particle1) + { + constraint = bb.activeConstraintCount; + + int indexA = elements[i].particle1; + int indexB = elements[i + 1].particle2; + int indexC = elements[i].particle2; + float restBend = ObiUtils.RestBendingConstraint(solver.restPositions[indexA], solver.restPositions[indexB], solver.restPositions[indexC]); + + bb.particleIndices[constraint * 3] = solver.particleToActor[indexA].indexInActor; + bb.particleIndices[constraint * 3 + 1] = solver.particleToActor[indexB].indexInActor; + bb.particleIndices[constraint * 3 + 2] = solver.particleToActor[indexC].indexInActor; + bb.restBends[constraint] = restBend; + bb.bendingStiffnesses[constraint] = new Vector2(_maxBending, _bendCompliance); + bb.ActivateConstraint(constraint); + } + } + } + + // loop-closing constraints: + if (dc.batches.Count > 2) + { + var loopClosingBatch = dc.batches[2]; + var lastElement = elements[elements.Count - 1]; + loopClosingBatch.particleIndices[0] = solver.particleToActor[lastElement.particle1].indexInActor; + loopClosingBatch.particleIndices[1] = solver.particleToActor[lastElement.particle2].indexInActor; + loopClosingBatch.restLengths[0] = lastElement.restLength; + loopClosingBatch.stiffnesses[0] = new Vector2(_stretchCompliance, _maxCompression * loopClosingBatch.restLengths[0]); + loopClosingBatch.ActivateConstraint(0); + } + + if (bc.batches.Count > 4 && elements.Count > 2) + { + var loopClosingBatch = bc.batches[3]; + var lastElement = elements[elements.Count - 2]; + + // for loop constraints, 0 is our best approximation of rest bend: + loopClosingBatch.particleIndices[0] = solver.particleToActor[lastElement.particle1].indexInActor; + loopClosingBatch.particleIndices[1] = solver.particleToActor[elements[0].particle1].indexInActor; + loopClosingBatch.particleIndices[2] = solver.particleToActor[lastElement.particle2].indexInActor; + loopClosingBatch.restBends[0] = 0; + loopClosingBatch.bendingStiffnesses[0] = new Vector2(_maxBending, _bendCompliance); + loopClosingBatch.ActivateConstraint(0); + + loopClosingBatch = bc.batches[4]; + loopClosingBatch.particleIndices[0] = solver.particleToActor[lastElement.particle2].indexInActor; + loopClosingBatch.particleIndices[1] = solver.particleToActor[elements[0].particle2].indexInActor; + loopClosingBatch.particleIndices[2] = solver.particleToActor[elements[0].particle1].indexInActor; + loopClosingBatch.restBends[0] = 0; + loopClosingBatch.bendingStiffnesses[0] = new Vector2(_maxBending, _bendCompliance); + loopClosingBatch.ActivateConstraint(0); + } + + // edge simplices: + sharedBlueprint.edges = new int[elements.Count*2]; + for (int i = 0; i < elements.Count; ++i) + { + sharedBlueprint.edges[i * 2] = solver.particleToActor[elements[i].particle1].indexInActor; + sharedBlueprint.edges[i * 2 + 1] = solver.particleToActor[elements[i].particle2].indexInActor; + } + + SetConstraintsDirty(Oni.ConstraintType.Distance); + SetConstraintsDirty(Oni.ConstraintType.Bending); + SetSimplicesDirty(); + } + } +} diff --git a/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRope.cs.meta b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRope.cs.meta new file mode 100644 index 000000000..988698833 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRope.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 61104f33a3f344db9b7e0d0cda41a9fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 7a860725829a34375a627c13703f0798, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRopeBase.cs b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRopeBase.cs new file mode 100644 index 000000000..1fae42696 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRopeBase.cs @@ -0,0 +1,109 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + public abstract class ObiRopeBase : ObiActor + { + + [SerializeField] protected bool m_SelfCollisions = false; + [HideInInspector] [SerializeField] protected float restLength_ = 0; + [HideInInspector] public List elements = new List(); /**< Elements.*/ + public event ActorCallback OnElementsGenerated; + + public float restLength + { + get { return restLength_; } + } + + public ObiPath path + { + get { + var ropeBlueprint = (sourceBlueprint as ObiRopeBlueprintBase); + return ropeBlueprint != null ? ropeBlueprint.path : null; + } + } + + /// + /// Calculates and returns current rope length, including stretching/compression. + /// + public float CalculateLength() + { + float length = 0; + + if (isLoaded) + { + // Iterate trough all distance constraints in order: + int elementCount = elements.Count; + for (int i = 0; i < elementCount; ++i) + length += Vector4.Distance(solver.positions[elements[i].particle1], solver.positions[elements[i].particle2]); + } + return length; + } + + /// + /// Recalculates the rope's rest length, that is, its length as specified by the blueprint. + /// + public void RecalculateRestLength() + { + restLength_ = 0; + + // Iterate trough all distance elements and accumulate their rest lengths. + int elementCount = elements.Count; + for (int i = 0; i < elementCount; ++i) + restLength_ += elements[i].restLength; + } + + /// + /// Recalculates all particle rest positions, used when filtering self-collisions. + /// + public void RecalculateRestPositions() + { + float pos = 0; + int elementCount = elements.Count; + for (int i = 0; i < elementCount; ++i) + { + solver.restPositions[elements[i].particle1] = new Vector4(pos, 0, 0, 1); + pos += elements[i].restLength; + solver.restPositions[elements[i].particle2] = new Vector4(pos, 0, 0, 1); + } + } + + /// + /// Regenerates all rope elements using constraints. It's the opposite of RebuildConstraintsFromElements(). This is automatically called when loading a blueprint, but should also be called when manually + /// altering rope constraints (adding/removing/updating constraints and/or batches). + /// + public void RebuildElementsFromConstraints() + { + RebuildElementsFromConstraintsInternal(); + if (OnElementsGenerated != null) + OnElementsGenerated(this); + } + + protected abstract void RebuildElementsFromConstraintsInternal(); + + /// + /// Regenerates all rope constraints using rope elements. It's the opposite of RebuildElementsFromConstraints().This should be called anytime the element representation of the rope + /// is changed (adding/removing/updating elements). This is usually the case after tearing the rope or changing its length using a cursor. + /// + public virtual void RebuildConstraintsFromElements() { } + + + /// + /// Returns a rope element that contains a length-normalized coordinate. It will also return the length-normalized coordinate within the element. + /// + public ObiStructuralElement GetElementAt(float mu, out float elementMu) + { + float edgeMu = elements.Count * Mathf.Clamp(mu, 0, 0.99999f); + + int index = (int)edgeMu; + elementMu = edgeMu - index; + + if (elements != null && index < elements.Count) + return elements[index]; + return null; + } + + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRopeBase.cs.meta b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRopeBase.cs.meta new file mode 100644 index 000000000..ee8114015 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRopeBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ab4d6f4281d1c4331b6bacd307c61a95 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRopeCursor.cs b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRopeCursor.cs new file mode 100644 index 000000000..f360aa2bb --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRopeCursor.cs @@ -0,0 +1,269 @@ +using UnityEngine; +using System.Collections; + + +namespace Obi +{ + [AddComponentMenu("Physics/Obi/Obi Rope Cursor", 883)] + [RequireComponent(typeof(ObiRope))] + public class ObiRopeCursor : MonoBehaviour + { + ObiRope rope; + + [Range(0, 1)] + [HideInInspector] [SerializeField] private float m_CursorMu; + + [Range(0, 1)] + [HideInInspector] [SerializeField] private float m_SourceMu; + + public bool direction = true; + + ObiStructuralElement m_CursorElement = null; + private int m_SourceIndex = -1; + + public float cursorMu + { + set + { + m_CursorMu = value; + UpdateCursor(); + } + get { return m_CursorMu; } + } + + public float sourceMu + { + set + { + m_SourceMu = value; + UpdateSource(); + } + get { return m_SourceMu; } + } + + public ObiStructuralElement cursorElement + { + get + { + if (m_CursorElement == null) + UpdateCursor(); + return m_CursorElement; + } + } + + public int sourceParticleIndex + { + get + { + if (m_SourceIndex < 0) + UpdateSource(); + return m_SourceIndex; + } + } + + private void OnEnable() + { + rope = GetComponent(); + + rope.OnElementsGenerated += Actor_OnElementsGenerated; + if (rope.elements != null && rope.elements.Count > 0) + Actor_OnElementsGenerated(rope); + } + + private void OnDisable() + { + rope.OnElementsGenerated -= Actor_OnElementsGenerated; + } + + private void Actor_OnElementsGenerated(ObiActor actor) + { + UpdateCursor(); + UpdateSource(); + } + + public void UpdateCursor() + { + rope = GetComponent(); + m_CursorElement = null; + if (rope.isLoaded) + { + float elmMu; + m_CursorElement = rope.GetElementAt(cursorMu, out elmMu); + } + } + + public void UpdateSource() + { + rope = GetComponent(); + m_SourceIndex = -1; + if (rope.isLoaded) + { + float elmMu; + var elm = rope.GetElementAt(sourceMu, out elmMu); + if (elm != null && rope.solver != null) + { + m_SourceIndex = elmMu < 0.5f ? elm.particle1 : elm.particle2; + } + } + } + + private int AddParticleAt(int index) + { + // Copy data from the particle where we will insert new particles, to the particles we will insert: + int targetIndex = rope.activeParticleCount; + rope.CopyParticle(rope.solver.particleToActor[m_SourceIndex].indexInActor, targetIndex); + + // Move the new particle to the one at the place where we will insert it: + rope.TeleportParticle(targetIndex, rope.solver.positions[rope.solverIndices[index]]); + + // Activate the particle: + rope.ActivateParticle(targetIndex); + return rope.solverIndices[targetIndex]; + } + + private void RemoveParticleAt(int index) + { + rope.DeactivateParticle(index); + } + + public void ChangeLength(float newLength) + { + if (!rope.isLoaded) + return; + + var solver = rope.solver; + + // clamp new length to sane limits: + newLength = Mathf.Clamp(newLength, 0, (rope.sourceBlueprint.particleCount - 1) * rope.ropeBlueprint.interParticleDistance); + + // calculate the change in rope length: + float lengthChange = newLength - rope.restLength; + + // remove: + if (lengthChange < 0) + { + lengthChange = -lengthChange; + + while (lengthChange > m_CursorElement.restLength) + { + lengthChange -= m_CursorElement.restLength; + + int index = rope.elements.IndexOf(m_CursorElement); + + if (index >= 0) + { + // positive direction: + if (direction) + { + RemoveParticleAt(solver.particleToActor[m_CursorElement.particle2].indexInActor); + rope.elements.RemoveAt(index); + + if (index < rope.elements.Count) + { + if (rope.elements[index].particle1 == m_CursorElement.particle2) + rope.elements[index].particle1 = m_CursorElement.particle1; + + m_CursorElement = rope.elements[index]; + } + else + m_CursorElement = rope.elements[Mathf.Max(0,index - 1)]; + } + else // negative direction: + { + RemoveParticleAt(solver.particleToActor[m_CursorElement.particle1].indexInActor); + rope.elements.RemoveAt(index); + + if (index > 0) + { + if (rope.elements[index - 1].particle2 == m_CursorElement.particle1) + rope.elements[index - 1].particle2 = m_CursorElement.particle2; + m_CursorElement = rope.elements[index - 1]; + } + else + m_CursorElement = rope.elements[0]; + } + } + } + + // the remaining length is subtracted from the current constraint: + if (lengthChange > 0) + m_CursorElement.restLength = Mathf.Max(0, m_CursorElement.restLength - lengthChange); + + } + // add + else + { + float lengthDelta = Mathf.Min(lengthChange, Mathf.Max(0, rope.ropeBlueprint.interParticleDistance - m_CursorElement.restLength)); + + // extend the current element, if possible: + if (lengthDelta > 0) + { + m_CursorElement.restLength += lengthDelta; + lengthChange -= lengthDelta; + } + + // once the current element has been extended, see if we must add new elements, if there's enough particles left: + while (rope.activeParticleCount < rope.sourceBlueprint.particleCount && + m_CursorElement.restLength + lengthChange > rope.ropeBlueprint.interParticleDistance) + { + // calculate added length: + lengthDelta = Mathf.Min(lengthChange, rope.ropeBlueprint.interParticleDistance); + lengthChange -= lengthDelta; + + if (direction) + { + // add new particle: + int newParticleSolverIndex = AddParticleAt(solver.particleToActor[m_CursorElement.particle1].indexInActor); + + // set position of the new particle: + solver.positions[newParticleSolverIndex] = solver.positions[m_CursorElement.particle1] + + (solver.positions[m_CursorElement.particle2] - solver.positions[m_CursorElement.particle1]) * lengthDelta; + + // insert a new element: + ObiStructuralElement newElement = new ObiStructuralElement(); + newElement.restLength = lengthDelta; + newElement.particle1 = m_CursorElement.particle1; + newElement.particle2 = newParticleSolverIndex; + m_CursorElement.particle1 = newParticleSolverIndex; + int index = rope.elements.IndexOf(m_CursorElement); + rope.elements.Insert(index, newElement); + + m_CursorElement = newElement; + } + else + { + // add new particle: + int newParticleSolverIndex = AddParticleAt(solver.particleToActor[m_CursorElement.particle2].indexInActor); + + // set position of the new particle: + solver.positions[newParticleSolverIndex] = solver.positions[m_CursorElement.particle2] + + (solver.positions[m_CursorElement.particle1] - solver.positions[m_CursorElement.particle2]) * lengthDelta; + + // insert a new element: + ObiStructuralElement newElement = new ObiStructuralElement(); + newElement.restLength = lengthDelta; + newElement.particle1 = newParticleSolverIndex; + newElement.particle2 = m_CursorElement.particle2; + m_CursorElement.particle2 = newParticleSolverIndex; + int index = rope.elements.IndexOf(m_CursorElement); + rope.elements.Insert(index + 1, newElement); + + m_CursorElement = newElement; + } + } + + // the remaining length is added to the current constraint: + if (lengthChange > 0) + m_CursorElement.restLength += lengthChange; + + } + + // recalculate rest positions and length prior to constraints (bend constraints need rest positions): + rope.RecalculateRestPositions(); + rope.RecalculateRestLength(); + + // rebuild constraints: + rope.RebuildConstraintsFromElements(); + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRopeCursor.cs.meta b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRopeCursor.cs.meta new file mode 100644 index 000000000..5656f2207 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Actors/ObiRopeCursor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8285ac97113f74d449053378d0e3a56b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 618cf36eb21e34118ac5697fe77e2c3e, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Blueprints.meta b/Assets/Obi/Scripts/RopeAndRod/Blueprints.meta new file mode 100644 index 000000000..7ac71eb2a --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Blueprints.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: acf7eb82de1d147128faa88b9cdb70d3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiBoneBlueprint.cs b/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiBoneBlueprint.cs new file mode 100644 index 000000000..04a51e6d0 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiBoneBlueprint.cs @@ -0,0 +1,309 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Obi +{ + + [CreateAssetMenu(fileName = "bone blueprint", menuName = "Obi/Bone Blueprint", order = 142)] + public class ObiBoneBlueprint : ObiActorBlueprint + { + public Transform root; + + public const float DEFAULT_PARTICLE_MASS = 0.1f; + public const float DEFAULT_PARTICLE_ROTATIONAL_MASS = 0.1f; + public const float DEFAULT_PARTICLE_RADIUS = 0.05f; + + [HideInInspector] public List transforms = new List(); + [HideInInspector] public List restTransformOrientations = new List(); + [HideInInspector] public List parentIndices = new List(); + [HideInInspector] public List normalizedLengths = new List(); + + [HideInInspector] [NonSerialized] public List ignored; + [HideInInspector] [NonSerialized] public ObiBone.BonePropertyCurve mass; + [HideInInspector] [NonSerialized] public ObiBone.BonePropertyCurve rotationalMass; + [HideInInspector] [NonSerialized] public ObiBone.BonePropertyCurve radius; + + public Quaternion root2WorldR; + + private GraphColoring colorizer; + + private ObiBone.IgnoredBone GetIgnoredBone(Transform bone) + { + for (int i = 0; i < ignored.Count; ++i) + if (ignored[i].bone == bone) + return ignored[i]; + + return null; + } + + protected override IEnumerator Initialize() + { + ClearParticleGroups(); + + transforms.Clear(); + restTransformOrientations.Clear(); + parentIndices.Clear(); + normalizedLengths.Clear(); + + List particlePositions = new List(); + List particleOrientations = new List(); + + var world2Root = root.transform.worldToLocalMatrix; + var world2RootR = world2Root.rotation; + root2WorldR = Quaternion.Inverse(world2RootR); + + // create a queue to traverse the hierarchy in a width-first fashion. + Queue bones = new Queue(); + + // insert the root bone: + bones.Enqueue(root); + parentIndices.Add(-1); + normalizedLengths.Add(0); + + // initialize hierarchy length: + float maxLength = 0; + + while (bones.Count > 0) + { + var bone = bones.Dequeue(); + + if (bone != null) + { + var ig = GetIgnoredBone(bone); + + if (ig == null) + { + transforms.Add(bone); + restTransformOrientations.Add(bone.localRotation); + particlePositions.Add(world2Root.MultiplyPoint3x4(bone.position)); + particleOrientations.Add(world2RootR * bone.rotation); + } + + if (ig == null || !ig.ignoreChildren) + { + foreach (Transform child in bone) + { + ig = GetIgnoredBone(child); + + if (ig == null) + { + int parentIndex = transforms.Count - 1; + parentIndices.Add(parentIndex); + + float distanceToParent = Vector3.Distance(child.position, bone.position); + float distanceToRoot = normalizedLengths[parentIndex] + distanceToParent; + maxLength = Mathf.Max(maxLength, distanceToRoot); + normalizedLengths.Add(distanceToRoot); + } + + bones.Enqueue(child); + } + } + } + + } + + // normalize lengths: + if (maxLength > 0) + { + for (int i = 0; i < normalizedLengths.Count; ++i) + normalizedLengths[i] /= maxLength; + } + + + // calculate orientations that minimize the Darboux vector: + Vector3[] avgChildrenDirection = new Vector3[parentIndices.Count]; + int[] childCount = new int[parentIndices.Count]; + + for (int i = 0; i < parentIndices.Count; ++i) + { + int parent = parentIndices[i]; + if (parent >= 0) + { + var vector = particlePositions[i] - particlePositions[parent]; + avgChildrenDirection[parent] += vector; + childCount[parent]++; + } + } + + for (int i = 0; i < parentIndices.Count; ++i) + { + if (childCount[i] > 0) + particleOrientations[i] = Quaternion.LookRotation(avgChildrenDirection[i] / childCount[i]); + else if (parentIndices[i] >= 0) + particleOrientations[i] = particleOrientations[parentIndices[i]]; + } + + + m_ActiveParticleCount = particlePositions.Count; + + positions = new Vector3[m_ActiveParticleCount]; + orientations = new Quaternion[m_ActiveParticleCount]; + velocities = new Vector3[m_ActiveParticleCount]; + angularVelocities = new Vector3[m_ActiveParticleCount]; + invMasses = new float[m_ActiveParticleCount]; + invRotationalMasses = new float[m_ActiveParticleCount]; + principalRadii = new Vector3[m_ActiveParticleCount]; + filters = new int[m_ActiveParticleCount]; + restPositions = new Vector4[m_ActiveParticleCount]; + restOrientations = new Quaternion[m_ActiveParticleCount]; + colors = new Color[m_ActiveParticleCount]; + + for (int i = 0; i < m_ActiveParticleCount; i++) + { + invMasses[i] = ObiUtils.MassToInvMass(mass != null ? mass.Evaluate(normalizedLengths[i]) : DEFAULT_PARTICLE_MASS); + invRotationalMasses[i] = ObiUtils.MassToInvMass(rotationalMass != null ? rotationalMass.Evaluate(normalizedLengths[i]) : DEFAULT_PARTICLE_ROTATIONAL_MASS); + positions[i] = particlePositions[i]; + restPositions[i] = positions[i]; + restPositions[i][3] = 1; // activate rest position. + orientations[i] = particleOrientations[i]; + restOrientations[i] = /*world2RootR */ transforms[i].rotation; + principalRadii[i] = Vector3.one * (radius != null ? radius.Evaluate(normalizedLengths[i]) : DEFAULT_PARTICLE_RADIUS); + filters[i] = ObiUtils.MakeFilter(ObiUtils.CollideWithEverything, 0); + colors[i] = Color.white; + + if (i % 100 == 0) + yield return new CoroutineJob.ProgressInfo("ObiRod: generating particles...", i / (float)m_ActiveParticleCount); + } + + colorizer = new GraphColoring(m_ActiveParticleCount); + + // Create edge simplices: + CreateSimplices(); + + // Create stretch constraints: + IEnumerator dc = CreateStretchShearConstraints(particlePositions); + while (dc.MoveNext()) yield return dc.Current; + + // Create bending constraints: + IEnumerator bc = CreateBendTwistConstraints(particlePositions); + while (bc.MoveNext()) yield return bc.Current; + + // Create skin constraints: + IEnumerator sc = CreateSkinConstraints(particlePositions); + while (sc.MoveNext()) yield return sc.Current; + + yield return new CoroutineJob.ProgressInfo("ObiBone: complete", 1); + } + + protected void CreateSimplices() + { + edges = new int[(parentIndices.Count - 1) * 2]; + for (int i = 0; i < parentIndices.Count-1; ++i) + { + edges[i * 2] = i + 1; + edges[i * 2 + 1] = parentIndices[i + 1]; + } + } + + protected virtual IEnumerator CreateStretchShearConstraints(List particlePositions) + { + + colorizer.Clear(); + + for (int i = 1; i < particlePositions.Count; ++i) + { + int parent = parentIndices[i]; + if (parent >= 0) + { + colorizer.AddConstraint(new[] { parent, i }); + } + } + + stretchShearConstraintsData = new ObiStretchShearConstraintsData(); + + List constraintColors = new List(); + var colorize = colorizer.Colorize("ObiBone: coloring stretch/shear constraints...", constraintColors); + while (colorize.MoveNext()) + yield return colorize.Current; + + var particleIndices = colorizer.particleIndices; + var constraintIndices = colorizer.constraintIndices; + + for (int i = 0; i < constraintColors.Count; ++i) + { + int color = constraintColors[i]; + int cIndex = constraintIndices[i]; + + // Add a new batch if needed: + if (color >= stretchShearConstraintsData.GetBatchCount()) + stretchShearConstraintsData.AddBatch(new ObiStretchShearConstraintsBatch()); + + int index1 = particleIndices[cIndex]; + int index2 = particleIndices[cIndex + 1]; + + var vector = particlePositions[index2] - particlePositions[index1]; + var rest = Quaternion.LookRotation(Quaternion.Inverse(orientations[index1]) * vector); + + stretchShearConstraintsData.batches[color].AddConstraint(new Vector2Int(index1, index2), index1, vector.magnitude, rest); + stretchShearConstraintsData.batches[color].activeConstraintCount++; + + if (i % 500 == 0) + yield return new CoroutineJob.ProgressInfo("ObiBone: generating stretch constraints...", i / constraintColors.Count); + } + } + + protected virtual IEnumerator CreateBendTwistConstraints(List particlePositions) + { + colorizer.Clear(); + + for (int i = 1; i < particlePositions.Count; ++i) + { + int parent = parentIndices[i]; + if (parent >= 0) + { + colorizer.AddConstraint(new[] { parent, i }); + } + } + + bendTwistConstraintsData = new ObiBendTwistConstraintsData(); + + List constraintColors = new List(); + var colorize = colorizer.Colorize("ObiBone: colorizing bend/twist constraints...", constraintColors); + while (colorize.MoveNext()) + yield return colorize.Current; + + var particleIndices = colorizer.particleIndices; + var constraintIndices = colorizer.constraintIndices; + + for (int i = 0; i < constraintColors.Count; ++i) + { + int color = constraintColors[i]; + int cIndex = constraintIndices[i]; + + // Add a new batch if needed: + if (color >= bendTwistConstraintsData.GetBatchCount()) + bendTwistConstraintsData.AddBatch(new ObiBendTwistConstraintsBatch()); + + int index1 = particleIndices[cIndex]; + int index2 = particleIndices[cIndex + 1]; + + Quaternion darboux = ObiUtils.RestDarboux(orientations[index1], orientations[index2]); + bendTwistConstraintsData.batches[color].AddConstraint(new Vector2Int(index1, index2), darboux); + bendTwistConstraintsData.batches[color].activeConstraintCount++; + + if (i % 500 == 0) + yield return new CoroutineJob.ProgressInfo("ObiBone: generating bend constraints...", i / constraintColors.Count); + } + } + + protected virtual IEnumerator CreateSkinConstraints(List particlePositions) + { + skinConstraintsData = new ObiSkinConstraintsData(); + ObiSkinConstraintsBatch skinBatch = new ObiSkinConstraintsBatch(); + skinConstraintsData.AddBatch(skinBatch); + + for (int i = 0; i < particlePositions.Count; ++i) + { + skinBatch.AddConstraint(i, particlePositions[i], Vector3.up, 0, 0, 0, 0); + skinBatch.activeConstraintCount++; + + if (i % 500 == 0) + yield return new CoroutineJob.ProgressInfo("ObiCloth: generating skin constraints...", i / (float)particlePositions.Count); + } + } + + } +} diff --git a/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiBoneBlueprint.cs.meta b/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiBoneBlueprint.cs.meta new file mode 100644 index 000000000..cf8804720 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiBoneBlueprint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1df6a43b2a0884e8da322992da465f32 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: d0123218ec6144d0983c099fc7339924, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRodBlueprint.cs b/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRodBlueprint.cs new file mode 100644 index 000000000..0e41b1ef2 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRodBlueprint.cs @@ -0,0 +1,281 @@ +using System.Collections; +using System.Collections.ObjectModel; +using System.Collections.Generic; +using UnityEngine; +using System; + +namespace Obi +{ + + [CreateAssetMenu(fileName = "rod blueprint", menuName = "Obi/Rod Blueprint", order = 141)] + public class ObiRodBlueprint : ObiRopeBlueprintBase + { + + public bool keepInitialShape = true; + + public const float DEFAULT_PARTICLE_MASS = 0.1f; + public const float DEFAULT_PARTICLE_ROTATIONAL_MASS = 0.01f; + + + protected override IEnumerator Initialize() + { + + if (path.ControlPointCount < 2) + { + ClearParticleGroups(); + path.InsertControlPoint(0, Vector3.left, Vector3.left * 0.25f, Vector3.right * 0.25f, Vector3.up, DEFAULT_PARTICLE_MASS, DEFAULT_PARTICLE_ROTATIONAL_MASS, 1, ObiUtils.MakeFilter(ObiUtils.CollideWithEverything, 1), Color.white, "control point"); + path.InsertControlPoint(1, Vector3.right, Vector3.left * 0.25f, Vector3.right * 0.25f, Vector3.up, DEFAULT_PARTICLE_MASS, DEFAULT_PARTICLE_ROTATIONAL_MASS, 1, ObiUtils.MakeFilter(ObiUtils.CollideWithEverything, 1), Color.white, "control point"); + } + + path.RecalculateLenght(Matrix4x4.identity, 0.00001f, 7); + + List particlePositions = new List(); + List particleNormals = new List(); + List particleThicknesses = new List(); + List particleInvMasses = new List(); + List particleInvRotationalMasses = new List(); + List particleFilters = new List(); + List particleColors = new List(); + + // In case the path is open, add a first particle. In closed paths, the last particle is also the first one. + if (!path.Closed) + { + particlePositions.Add(path.points.GetPositionAtMu(path.Closed, 0)); + particleNormals.Add(path.normals.GetAtMu(path.Closed, 0)); + particleThicknesses.Add(path.thicknesses.GetAtMu(path.Closed, 0)); + particleInvMasses.Add(ObiUtils.MassToInvMass(path.masses.GetAtMu(path.Closed, 0))); + particleInvRotationalMasses.Add(ObiUtils.MassToInvMass(path.rotationalMasses.GetAtMu(path.Closed, 0))); + particleFilters.Add(path.filters.GetAtMu(path.Closed, 0)); + particleColors.Add(path.colors.GetAtMu(path.Closed, 0)); + } + + // Create a particle group for the first control point: + groups[0].particleIndices.Clear(); + groups[0].particleIndices.Add(0); + + ReadOnlyCollection lengthTable = path.ArcLengthTable; + int spans = path.GetSpanCount(); + + for (int i = 0; i < spans; i++) + { + int firstArcLengthSample = i * (path.ArcLengthSamples + 1); + int lastArcLengthSample = (i + 1) * (path.ArcLengthSamples + 1); + + float upToSpanLength = lengthTable[firstArcLengthSample]; + float spanLength = lengthTable[lastArcLengthSample] - upToSpanLength; + + int particlesInSpan = 1 + Mathf.FloorToInt(spanLength / thickness * resolution); + float distance = spanLength / particlesInSpan; + + for (int j = 0; j < particlesInSpan; ++j) + { + float mu = path.GetMuAtLenght(upToSpanLength + distance * (j + 1)); + particlePositions.Add(path.points.GetPositionAtMu(path.Closed, mu)); + particleNormals.Add(path.normals.GetAtMu(path.Closed, mu)); + particleThicknesses.Add(path.thicknesses.GetAtMu(path.Closed, mu)); + particleInvMasses.Add(ObiUtils.MassToInvMass(path.masses.GetAtMu(path.Closed, mu))); + particleInvRotationalMasses.Add(ObiUtils.MassToInvMass(path.rotationalMasses.GetAtMu(path.Closed, mu))); + particleFilters.Add(path.filters.GetAtMu(path.Closed, mu)); + particleColors.Add(path.colors.GetAtMu(path.Closed, mu)); + } + + // Create a particle group for each control point: + if (!(path.Closed && i == spans - 1)) + { + groups[i + 1].particleIndices.Clear(); + groups[i + 1].particleIndices.Add(particlePositions.Count - 1); + } + + if (i % 100 == 0) + yield return new CoroutineJob.ProgressInfo("ObiRope: generating particles...", i / (float)spans); + } + + m_ActiveParticleCount = particlePositions.Count; + totalParticles = m_ActiveParticleCount; + + int numSegments = m_ActiveParticleCount - (path.Closed ? 0 : 1); + if (numSegments > 0) + m_InterParticleDistance = path.Length / (float)numSegments; + else + m_InterParticleDistance = 0; + + positions = new Vector3[totalParticles]; + orientations = new Quaternion[totalParticles]; + velocities = new Vector3[totalParticles]; + angularVelocities = new Vector3[totalParticles]; + invMasses = new float[totalParticles]; + invRotationalMasses = new float[totalParticles]; + principalRadii = new Vector3[totalParticles]; + filters = new int[totalParticles]; + restPositions = new Vector4[totalParticles]; + restOrientations = new Quaternion[totalParticles]; + colors = new Color[totalParticles]; + restLengths = new float[totalParticles]; + + for (int i = 0; i < m_ActiveParticleCount; i++) + { + invMasses[i] = particleInvMasses[i]; + invRotationalMasses[i] = particleInvRotationalMasses[i]; + positions[i] = particlePositions[i]; + restPositions[i] = positions[i]; + restPositions[i][3] = 1; // activate rest position. + principalRadii[i] = Vector3.one * particleThicknesses[i] * thickness; + filters[i] = particleFilters[i]; + colors[i] = particleColors[i]; + + if (i % 100 == 0) + yield return new CoroutineJob.ProgressInfo("ObiRod: generating particles...", i / (float)m_ActiveParticleCount); + } + + // Create edge simplices: + CreateSimplices(numSegments); + + // Create distance constraints for the total number of particles, but only activate for the used ones. + IEnumerator dc = CreateStretchShearConstraints(particleNormals); + + while (dc.MoveNext()) + yield return dc.Current; + + // Create bending constraints: + IEnumerator bc = CreateBendTwistConstraints(); + + while (bc.MoveNext()) + yield return bc.Current; + + // Create chain constraints: + IEnumerator cc = CreateChainConstraints(); + + while (cc.MoveNext()) + yield return cc.Current; + + } + + + protected virtual IEnumerator CreateStretchShearConstraints(List particleNormals) + { + stretchShearConstraintsData = new ObiStretchShearConstraintsData(); + + stretchShearConstraintsData.AddBatch(new ObiStretchShearConstraintsBatch()); + stretchShearConstraintsData.AddBatch(new ObiStretchShearConstraintsBatch()); + + // rotation minimizing frame: + ObiPathFrame frame = new ObiPathFrame(); + frame.Reset(); + + for (int i = 0; i < totalParticles - 1; i++) + { + var batch = stretchShearConstraintsData.batches[i % 2] as ObiStretchShearConstraintsBatch; + + Vector2Int indices = new Vector2Int(i, i + 1); + Vector3 d = positions[indices.y] - positions[indices.x]; + restLengths[i] = d.magnitude; + + frame.Transport(positions[indices.x], d.normalized, 0); + + orientations[i] = Quaternion.LookRotation(frame.tangent, particleNormals[indices.x]); + restOrientations[i] = orientations[i]; + + // Also set the orientation of the next particle. If it is not the last one, we will overwrite it. + // This makes sure that open rods provide an orientation for their last particle (or rather, a phantom segment past the last particle). + + orientations[indices.y] = orientations[i]; + restOrientations[indices.y] = orientations[i]; + + batch.AddConstraint(indices, indices.x, restLengths[i], Quaternion.identity); + batch.activeConstraintCount++; + + if (i % 500 == 0) + yield return new CoroutineJob.ProgressInfo("ObiRod: generating structural constraints...", i / (float)(totalParticles - 1)); + + } + + // if the path is closed, add the last, loop closing constraint to a new batch to avoid sharing particles. + if (path.Closed) + { + var loopClosingBatch = new ObiStretchShearConstraintsBatch(); + stretchShearConstraintsData.AddBatch(loopClosingBatch); + + Vector2Int indices = new Vector2Int(m_ActiveParticleCount - 1, 0); + Vector3 d = positions[indices.y] - positions[indices.x]; + restLengths[m_ActiveParticleCount - 2] = d.magnitude; + + frame.Transport(positions[indices.x], d.normalized, 0); + + orientations[m_ActiveParticleCount - 1] = Quaternion.LookRotation(frame.tangent, particleNormals[indices.x]); + restOrientations[m_ActiveParticleCount - 1] = orientations[m_ActiveParticleCount - 1]; + + loopClosingBatch.AddConstraint(indices, indices.x, restLengths[m_ActiveParticleCount - 2], Quaternion.identity); + loopClosingBatch.activeConstraintCount++; + } + + // Recalculate rest length: + m_RestLength = 0; + foreach (float length in restLengths) + m_RestLength += length; + } + + protected virtual IEnumerator CreateBendTwistConstraints() + { + bendTwistConstraintsData = new ObiBendTwistConstraintsData(); + + // Add two batches: + bendTwistConstraintsData.AddBatch(new ObiBendTwistConstraintsBatch()); + bendTwistConstraintsData.AddBatch(new ObiBendTwistConstraintsBatch()); + + // the last bend constraint couples the last segment and a phantom segment past the last particle. + for (int i = 0; i < totalParticles - 1; i++) + { + + var batch = bendTwistConstraintsData.batches[i % 2] as ObiBendTwistConstraintsBatch; + + Vector2Int indices = new Vector2Int(i, i + 1); + + Quaternion darboux = keepInitialShape ? ObiUtils.RestDarboux(orientations[indices.x], orientations[indices.y]) : Quaternion.identity; + batch.AddConstraint(indices, darboux); + batch.activeConstraintCount++; + + if (i % 500 == 0) + yield return new CoroutineJob.ProgressInfo("ObiRod: generating structural constraints...", i / (float)(totalParticles - 1)); + + } + + // if the path is closed, add the last, loop closing constraints to a new batch to avoid sharing particles. + if (path.Closed) + { + var loopClosingBatch = new ObiBendTwistConstraintsBatch(); + bendTwistConstraintsData.AddBatch(loopClosingBatch); + + Vector2Int indices = new Vector2Int(m_ActiveParticleCount - 1, 0); + Quaternion darboux = keepInitialShape ? ObiUtils.RestDarboux(orientations[indices.x], orientations[indices.y]) : Quaternion.identity; + loopClosingBatch.AddConstraint(indices, darboux); + loopClosingBatch.activeConstraintCount++; + } + } + + protected virtual IEnumerator CreateChainConstraints() + { + chainConstraintsData = new ObiChainConstraintsData(); + + // Add a single batch: + var batch = new ObiChainConstraintsBatch(); + chainConstraintsData.AddBatch(batch); + + int[] indices = new int[m_ActiveParticleCount + (path.Closed ? 1 : 0)]; + + for (int i = 0; i < m_ActiveParticleCount; ++i) + indices[i] = i; + + // Add the first particle as the last index of the chain, if closed. + if (path.Closed) + indices[m_ActiveParticleCount] = 0; + + // TODO: variable distance between particles: + batch.AddConstraint(indices, m_InterParticleDistance, 1, 1); + batch.activeConstraintCount++; + + yield return 0; + } + + + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRodBlueprint.cs.meta b/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRodBlueprint.cs.meta new file mode 100644 index 000000000..e866891f5 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRodBlueprint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e028b099aa5d14e399bc3d87df5b7737 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: d0123218ec6144d0983c099fc7339924, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRopeBlueprint.cs b/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRopeBlueprint.cs new file mode 100644 index 000000000..4448ae3f8 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRopeBlueprint.cs @@ -0,0 +1,228 @@ +using System.Collections; +using System.Collections.ObjectModel; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using System; + +namespace Obi +{ + [CreateAssetMenu(fileName = "rope blueprint", menuName = "Obi/Rope Blueprint", order = 140)] + public class ObiRopeBlueprint : ObiRopeBlueprintBase + { + + public int pooledParticles = 100; + + public const float DEFAULT_PARTICLE_MASS = 0.1f; + + protected override IEnumerator Initialize() + { + if (path.ControlPointCount < 2) + { + ClearParticleGroups(); + path.InsertControlPoint(0, Vector3.left, Vector3.left * 0.25f, Vector3.right * 0.25f, Vector3.up, DEFAULT_PARTICLE_MASS, 1, 1, ObiUtils.MakeFilter(ObiUtils.CollideWithEverything,1), Color.white, "control point"); + path.InsertControlPoint(1, Vector3.right, Vector3.left * 0.25f, Vector3.right * 0.25f, Vector3.up, DEFAULT_PARTICLE_MASS, 1, 1, ObiUtils.MakeFilter(ObiUtils.CollideWithEverything, 1), Color.white, "control point"); + } + + path.RecalculateLenght(Matrix4x4.identity, 0.00001f, 7); + + List particlePositions = new List(); + List particleThicknesses = new List(); + List particleInvMasses = new List(); + List particleFilters = new List(); + List particleColors = new List(); + + // In case the path is open, add a first particle. In closed paths, the last particle is also the first one. + if (!path.Closed) + { + particlePositions.Add(path.points.GetPositionAtMu(path.Closed, 0)); + particleThicknesses.Add(path.thicknesses.GetAtMu(path.Closed, 0)); + particleInvMasses.Add(ObiUtils.MassToInvMass(path.masses.GetAtMu(path.Closed, 0))); + particleFilters.Add(path.filters.GetAtMu(path.Closed, 0)); + particleColors.Add(path.colors.GetAtMu(path.Closed, 0)); + } + + // Create a particle group for the first control point: + groups[0].particleIndices.Clear(); + groups[0].particleIndices.Add(0); + + ReadOnlyCollection lengthTable = path.ArcLengthTable; + int spans = path.GetSpanCount(); + + for (int i = 0; i < spans; i++) + { + int firstArcLengthSample = i * (path.ArcLengthSamples + 1); + int lastArcLengthSample = (i + 1) * (path.ArcLengthSamples + 1); + + float upToSpanLength = lengthTable[firstArcLengthSample]; + float spanLength = lengthTable[lastArcLengthSample] - upToSpanLength; + + int particlesInSpan = 1 + Mathf.FloorToInt(spanLength / thickness * resolution); + float distance = spanLength / particlesInSpan; + + for (int j = 0; j < particlesInSpan; ++j) + { + float mu = path.GetMuAtLenght(upToSpanLength + distance * (j + 1)); + particlePositions.Add(path.points.GetPositionAtMu(path.Closed, mu)); + particleThicknesses.Add(path.thicknesses.GetAtMu(path.Closed, mu)); + particleInvMasses.Add(ObiUtils.MassToInvMass(path.masses.GetAtMu(path.Closed, mu))); + particleFilters.Add(path.filters.GetAtMu(path.Closed, mu)); + particleColors.Add(path.colors.GetAtMu(path.Closed, mu)); + } + + // Create a particle group for each control point: + if (!(path.Closed && i == spans - 1)) + { + groups[i + 1].particleIndices.Clear(); + groups[i + 1].particleIndices.Add(particlePositions.Count - 1); + } + + if (i % 100 == 0) + yield return new CoroutineJob.ProgressInfo("ObiRope: generating particles...", i / (float)spans); + } + + m_ActiveParticleCount = particlePositions.Count; + totalParticles = m_ActiveParticleCount + pooledParticles; + + int numSegments = m_ActiveParticleCount - (path.Closed ? 0 : 1); + if (numSegments > 0) + m_InterParticleDistance = path.Length / (float)numSegments; + else + m_InterParticleDistance = 0; + + positions = new Vector3[totalParticles]; + restPositions = new Vector4[totalParticles]; + velocities = new Vector3[totalParticles]; + invMasses = new float[totalParticles]; + principalRadii = new Vector3[totalParticles]; + filters = new int[totalParticles]; + colors = new Color[totalParticles]; + restLengths = new float[totalParticles]; + + for (int i = 0; i < m_ActiveParticleCount; i++) + { + invMasses[i] = particleInvMasses[i]; + positions[i] = particlePositions[i]; + restPositions[i] = positions[i]; + restPositions[i][3] = 1; // activate rest position. + principalRadii[i] = Vector3.one * particleThicknesses[i] * thickness; + filters[i] = particleFilters[i]; + colors[i] = particleColors[i]; + + if (i % 100 == 0) + yield return new CoroutineJob.ProgressInfo("ObiRope: generating particles...", i / (float)m_ActiveParticleCount); + } + + // Create edge simplices: + CreateSimplices(numSegments); + + //Create distance constraints for the total number of particles, but only activate for the used ones. + IEnumerator dc = CreateDistanceConstraints(); + + while (dc.MoveNext()) + yield return dc.Current; + + //Create bending constraints: + IEnumerator bc = CreateBendingConstraints(); + + while (bc.MoveNext()) + yield return bc.Current; + + // Recalculate rest length: + m_RestLength = 0; + foreach (float length in restLengths) + m_RestLength += length; + + } + + protected virtual IEnumerator CreateDistanceConstraints() + { + distanceConstraintsData = new ObiDistanceConstraintsData(); + + // Add two batches: for even and odd constraints: + distanceConstraintsData.AddBatch(new ObiDistanceConstraintsBatch()); + distanceConstraintsData.AddBatch(new ObiDistanceConstraintsBatch()); + + for (int i = 0; i < totalParticles - 1; i++) + { + var batch = distanceConstraintsData.batches[i % 2] as ObiDistanceConstraintsBatch; + + if (i < m_ActiveParticleCount - 1) + { + Vector2Int indices = new Vector2Int(i, i + 1); + restLengths[i] = Vector3.Distance(positions[indices.x], positions[indices.y]); + batch.AddConstraint(indices, restLengths[i]); + batch.activeConstraintCount++; + } + else + { + restLengths[i] = m_InterParticleDistance; + batch.AddConstraint(Vector2Int.zero, 0); + } + + if (i % 500 == 0) + yield return new CoroutineJob.ProgressInfo("ObiRope: generating structural constraints...", i / (float)(totalParticles - 1)); + + } + + // if the path is closed, add the last, loop closing constraint to a new batch to avoid sharing particles. + if (path.Closed) + { + var loopClosingBatch = new ObiDistanceConstraintsBatch(); + distanceConstraintsData.AddBatch(loopClosingBatch); + + Vector2Int indices = new Vector2Int(m_ActiveParticleCount - 1, 0); + restLengths[m_ActiveParticleCount - 2] = Vector3.Distance(positions[indices.x], positions[indices.y]); + loopClosingBatch.AddConstraint(indices, restLengths[m_ActiveParticleCount - 2]); + loopClosingBatch.activeConstraintCount++; + } + + } + + protected virtual IEnumerator CreateBendingConstraints() + { + bendConstraintsData = new ObiBendConstraintsData(); + + // Add three batches: + bendConstraintsData.AddBatch(new ObiBendConstraintsBatch()); + bendConstraintsData.AddBatch(new ObiBendConstraintsBatch()); + bendConstraintsData.AddBatch(new ObiBendConstraintsBatch()); + + for (int i = 0; i < totalParticles - 2; i++) + { + var batch = bendConstraintsData.batches[i % 3] as ObiBendConstraintsBatch; + + Vector3Int indices = new Vector3Int(i, i + 2, i + 1); + float restBend = ObiUtils.RestBendingConstraint(restPositions[indices[0]], restPositions[indices[1]], restPositions[indices[2]]); + batch.AddConstraint(indices, restBend); + + if (i < m_ActiveParticleCount - 2) + batch.activeConstraintCount++; + + if (i % 500 == 0) + yield return new CoroutineJob.ProgressInfo("ObiRope: generating structural constraints...", i / (float)(totalParticles - 2)); + + } + + // if the path is closed, add the last, loop closing constraints to a new batch to avoid sharing particles. + if (path.Closed) + { + var loopClosingBatch = new ObiBendConstraintsBatch(); + bendConstraintsData.AddBatch(loopClosingBatch); + + Vector3Int indices = new Vector3Int(m_ActiveParticleCount - 2, 0, m_ActiveParticleCount - 1); + loopClosingBatch.AddConstraint(indices, 0); + loopClosingBatch.activeConstraintCount++; + + var loopClosingBatch2 = new ObiBendConstraintsBatch(); + bendConstraintsData.AddBatch(loopClosingBatch2); + + indices = new Vector3Int(m_ActiveParticleCount - 1, 1, 0); + loopClosingBatch2.AddConstraint(indices, 0); + loopClosingBatch2.activeConstraintCount++; + } + } + + + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRopeBlueprint.cs.meta b/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRopeBlueprint.cs.meta new file mode 100644 index 000000000..cbe78e7a3 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRopeBlueprint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f7e67b5626124d0db9886e6cd2aacff +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: d0123218ec6144d0983c099fc7339924, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRopeBlueprintBase.cs b/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRopeBlueprintBase.cs new file mode 100644 index 000000000..189a09441 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRopeBlueprintBase.cs @@ -0,0 +1,77 @@ +using System.Collections; +using System.Collections.ObjectModel; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using System; + +namespace Obi +{ + public abstract class ObiRopeBlueprintBase : ObiActorBlueprint + { + [HideInInspector] [SerializeField] public ObiPath path = new ObiPath(); + public float thickness = 0.1f; + + [Range(0, 1)] + public float resolution = 1; + + [HideInInspector] [SerializeField] protected float m_InterParticleDistance; + [HideInInspector] [SerializeField] protected int totalParticles; + [HideInInspector] [SerializeField] protected float m_RestLength; + + [HideInInspector] public float[] restLengths; + + public float interParticleDistance + { + get { return m_InterParticleDistance; } + } + + public float restLength + { + get { return m_RestLength; } + } + + public void OnEnable() + { + path.OnPathChanged.AddListener(GenerateImmediate); + path.OnControlPointAdded.AddListener(ControlPointAdded); + path.OnControlPointRemoved.AddListener(ControlPointRemoved); + path.OnControlPointRenamed.AddListener(ControlPointRenamed); + } + + public void OnDisable() + { + path.OnPathChanged.RemoveAllListeners(); + path.OnControlPointAdded.RemoveAllListeners(); + path.OnControlPointRemoved.RemoveAllListeners(); + path.OnControlPointRenamed.RemoveAllListeners(); + } + + protected void ControlPointAdded(int index) + { + var group = InsertNewParticleGroup(path.GetName(index), index); + } + + protected void ControlPointRenamed(int index) + { + SetParticleGroupName(index, path.GetName(index)); + } + + protected void ControlPointRemoved(int index) + { + RemoveParticleGroupAt(index); + } + + protected void CreateSimplices(int numSegments) + { + edges = new int[numSegments * 2]; + for (int i = 0; i < numSegments; ++i) + { + edges[i * 2] = i % totalParticles; + edges[i * 2 + 1] = (i + 1) % totalParticles; + } + } + + protected override IEnumerator Initialize() { yield return null; } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRopeBlueprintBase.cs.meta b/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRopeBlueprintBase.cs.meta new file mode 100644 index 000000000..06f453f10 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Blueprints/ObiRopeBlueprintBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4abe69b6abd2c4b0e8a621b8fba92dc9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures.meta new file mode 100644 index 000000000..6c6b110ce --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fa3e31464f45342fc90509e4fcb00976 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/ObiRopeSection.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/ObiRopeSection.cs new file mode 100644 index 000000000..c096d5554 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/ObiRopeSection.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Obi +{ + [CreateAssetMenu(fileName = "rope section", menuName = "Obi/Rope Section", order = 142)] + public class ObiRopeSection : ScriptableObject + { + [HideInInspector] public List vertices; + public int snapX = 0; + public int snapY = 0; + + public int Segments{ + get{return vertices.Count-1;} + } + + public void OnEnable(){ + + if (vertices == null){ + vertices = new List(); + CirclePreset(8); + } + + } + + public void CirclePreset(int segments){ + + vertices.Clear(); + + for (int j = 0; j <= segments; ++j){ + float angle = 2 * Mathf.PI / segments * j; + vertices.Add(Mathf.Cos(angle)*Vector2.right + Mathf.Sin(angle)*Vector2.up); + } + } + + /** + * Snaps a float value to the nearest multiple of snapInterval. + */ + public static int SnapTo(float val, int snapInterval, int threshold){ + int intVal = (int) val; + if (snapInterval <= 0) + return intVal; + int under = Mathf.FloorToInt(val / snapInterval) * snapInterval; + int over = under + snapInterval; + if (intVal - under < threshold) return under; + if (over - intVal < threshold) return over; + return intVal; + } + + } +} + diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/ObiRopeSection.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/ObiRopeSection.cs.meta new file mode 100644 index 000000000..b1bd8cc97 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/ObiRopeSection.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: ee7737c43f5734f87be9e49d1bbfba78 +labels: +- ObiRope +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: fdb742a900c8d453ea5ce5027e80ad00, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/ObiStructuralElement.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/ObiStructuralElement.cs new file mode 100644 index 000000000..bffb6c476 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/ObiStructuralElement.cs @@ -0,0 +1,16 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + // Abstracts rope topolgy as a list of elements. + [System.Serializable] + public class ObiStructuralElement + { + public int particle1; + public int particle2; + public float restLength; + public float constraintForce; + public float tearResistance; + } +} diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/ObiStructuralElement.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/ObiStructuralElement.cs.meta new file mode 100644 index 000000000..14c9910b8 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/ObiStructuralElement.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2aecff76dda4241c5a0c15349e2419d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path.meta new file mode 100644 index 000000000..c60887566 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 75e833f2b944640a5934c15fbec8ac00 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels.meta new file mode 100644 index 000000000..a90531fac --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5172d3d605ca94f2db0ad73eaecbc4d4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiColorDataChannel.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiColorDataChannel.cs new file mode 100644 index 000000000..6b5aa938c --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiColorDataChannel.cs @@ -0,0 +1,12 @@ +using UnityEngine; +using System; +using System.Collections; + +namespace Obi +{ + [Serializable] + public class ObiColorDataChannel : ObiPathDataChannelIdentity + { + public ObiColorDataChannel() : base(new ObiColorInterpolator3D()) { } + } +} diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiColorDataChannel.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiColorDataChannel.cs.meta new file mode 100644 index 000000000..3a4703eeb --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiColorDataChannel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4078c779a63154dddac14f5a1e65a692 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiFilterDataChannel.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiFilterDataChannel.cs new file mode 100644 index 000000000..ab59bfe8d --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiFilterDataChannel.cs @@ -0,0 +1,10 @@ +using System; + +namespace Obi +{ + [Serializable] + public class ObiPhaseDataChannel : ObiPathDataChannelIdentity + { + public ObiPhaseDataChannel() : base(new ObiConstantInterpolator()) { } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiFilterDataChannel.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiFilterDataChannel.cs.meta new file mode 100644 index 000000000..a5ebfe7a7 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiFilterDataChannel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9cfdcf019ed7249799993815bfc3c0bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiMassDataChannel.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiMassDataChannel.cs new file mode 100644 index 000000000..ae56531d2 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiMassDataChannel.cs @@ -0,0 +1,12 @@ +using UnityEngine; +using System; +using System.Collections; + +namespace Obi +{ + [Serializable] + public class ObiMassDataChannel : ObiPathDataChannelIdentity + { + public ObiMassDataChannel() : base(new ObiCatmullRomInterpolator()) { } + } +} diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiMassDataChannel.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiMassDataChannel.cs.meta new file mode 100644 index 000000000..ac806b9d5 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiMassDataChannel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e55025008fa8f4bccae82dbaded0f019 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiNormalDataChannel.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiNormalDataChannel.cs new file mode 100644 index 000000000..3fee9576b --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiNormalDataChannel.cs @@ -0,0 +1,12 @@ +using UnityEngine; +using System; +using System.Collections; + +namespace Obi +{ + [Serializable] + public class ObiNormalDataChannel : ObiPathDataChannelIdentity + { + public ObiNormalDataChannel() : base(new ObiCatmullRomInterpolator3D()) { } + } +} diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiNormalDataChannel.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiNormalDataChannel.cs.meta new file mode 100644 index 000000000..7c99771e9 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiNormalDataChannel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4721087e73d0d422ab48ad62a2fd3d3b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPathDataChannel.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPathDataChannel.cs new file mode 100644 index 000000000..584be6de1 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPathDataChannel.cs @@ -0,0 +1,88 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + public interface IObiPathDataChannel + { + int Count { get; } + bool Dirty { get; } + void Clean(); + void RemoveAt(int index); + } + + public abstract class ObiPathDataChannel : IObiPathDataChannel + { + protected ObiInterpolator interpolator; + protected bool dirty = false; + public List data = new List(); + + public int Count + { + get { return data.Count; } + } + + public bool Dirty + { + get { return dirty; } + } + + public void Clean() + { + dirty = false; + } + + public ObiPathDataChannel(ObiInterpolator interpolator) + { + this.interpolator = interpolator; + } + + public T this[int i] + { + get { return data[i]; } + set { data[i] = value; dirty = true; } + } + + public void RemoveAt(int index) + { + data.RemoveAt(index); + dirty = true; + } + + public U Evaluate(U v0, U v1, U v2, U v3, float mu) + { + return interpolator.Evaluate(v0, v1, v2, v3, mu); + } + public U EvaluateFirstDerivative(U v0, U v1, U v2, U v3, float mu) + { + return interpolator.EvaluateFirstDerivative(v0, v1, v2, v3, mu); + } + public U EvaluateSecondDerivative(U v0, U v1, U v2, U v3, float mu) + { + return interpolator.EvaluateSecondDerivative(v0, v1, v2, v3, mu); + } + + public int GetSpanCount(bool closed) + { + int cps = Count; + if (cps < 2) + return 0; + + return closed ? cps : cps - 1; + } + + public int GetSpanControlPointAtMu(bool closed, float mu, out float spanMu) + { + + int spanCount = GetSpanCount(closed); + spanMu = mu * spanCount; + int i = (mu >= 1f) ? (spanCount - 1) : (int)spanMu; + spanMu -= i; + + return i; + } + + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPathDataChannel.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPathDataChannel.cs.meta new file mode 100644 index 000000000..4f3af9927 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPathDataChannel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 43ab47ea5c62b45248edce6a9d099626 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPathDataChannelIdentity.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPathDataChannelIdentity.cs new file mode 100644 index 000000000..1148753d0 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPathDataChannelIdentity.cs @@ -0,0 +1,94 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + public abstract class ObiPathDataChannelIdentity : ObiPathDataChannel + { + public ObiPathDataChannelIdentity(ObiInterpolator interpolator) : base(interpolator) + { + } + + public T GetFirstDerivative(int index) + { + int nextCP = (index + 1) % Count; + + return EvaluateFirstDerivative(this[index], + this[index], + this[nextCP], + this[nextCP], 0); + } + + public T GetSecondDerivative(int index) + { + int nextCP = (index + 1) % Count; + + return EvaluateSecondDerivative(this[index], + this[index], + this[nextCP], + this[nextCP], 0); + } + + public T GetAtMu(bool closed, float mu) + { + int cps = Count; + if (cps >= 2) + { + float p; + int i = GetSpanControlPointAtMu(closed, mu, out p); + int nextCP = (i + 1) % cps; + + return Evaluate(this[i], + this[i], + this[nextCP], + this[nextCP], p); + } + else + { + throw new InvalidOperationException("Cannot get property in path because it has less than 2 control points."); + } + } + + public T GetFirstDerivativeAtMu(bool closed, float mu) + { + int cps = Count; + if (cps >= 2) + { + float p; + int i = GetSpanControlPointAtMu(closed, mu, out p); + int nextCP = (i + 1) % cps; + + return EvaluateFirstDerivative(this[i], + this[i], + this[nextCP], + this[nextCP], p); + } + else + { + throw new InvalidOperationException("Cannot get derivative in path because it has less than 2 control points."); + } + } + + public T GetSecondDerivativeAtMu(bool closed, float mu) + { + int cps = Count; + if (cps >= 2) + { + float p; + int i = GetSpanControlPointAtMu(closed, mu, out p); + int nextCP = (i + 1) % cps; + + return EvaluateSecondDerivative(this[i], + this[i], + this[nextCP], + this[nextCP], p); + } + else + { + throw new InvalidOperationException("Cannot get second derivative in path because it has less than 2 control points."); + } + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPathDataChannelIdentity.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPathDataChannelIdentity.cs.meta new file mode 100644 index 000000000..9093cc6eb --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPathDataChannelIdentity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 61b5c82c04eb14f1999e94baa1f073bc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPointsDataChannel.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPointsDataChannel.cs new file mode 100644 index 000000000..2f07a22bd --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPointsDataChannel.cs @@ -0,0 +1,125 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + [Serializable] + public class ObiPointsDataChannel : ObiPathDataChannel + { + + public ObiPointsDataChannel() : base(new ObiCatmullRomInterpolator3D()) { } + + public Vector3 GetTangent(int index) + { + int nextCP = (index + 1) % Count; + + var wp1 = this[index]; + var wp2 = this[nextCP]; + + return EvaluateFirstDerivative(wp1.position, + wp1.outTangentEndpoint, + wp2.inTangentEndpoint, + wp2.position, 0); + } + + public Vector3 GetAcceleration(int index) + { + int nextCP = (index + 1) % Count; + + var wp1 = this[index]; + var wp2 = this[nextCP]; + + return EvaluateSecondDerivative(wp1.position, + wp1.outTangentEndpoint, + wp2.inTangentEndpoint, + wp2.position, 0); + } + + /** + * Returns spline position at time mu, with 0<=mu<=1 where 0 is the start of the spline + * and 1 is the end. + */ + public Vector3 GetPositionAtMu(bool closed,float mu) + { + int cps = Count; + if (cps >= 2) + { + + float p; + int i = GetSpanControlPointAtMu(closed, mu, out p); + int nextCP = (i + 1) % cps; + + var wp1 = this[i]; + var wp2 = this[nextCP]; + + return Evaluate(wp1.position, + wp1.outTangentEndpoint, + wp2.inTangentEndpoint, + wp2.position, p); + } + else + { + throw new InvalidOperationException("Cannot get position in path because it has zero control points."); + } + + } + + /** + * Returns normal tangent vector at time mu, with 0<=mu<=1 where 0 is the start of the spline + * and 1 is the end. + */ + public Vector3 GetTangentAtMu(bool closed, float mu) + { + + int cps = Count; + if (cps >= 2) + { + float p; + int i = GetSpanControlPointAtMu(closed, mu, out p); + int nextCP = (i + 1) % cps; + + var wp1 = this[i]; + var wp2 = this[nextCP]; + + return EvaluateFirstDerivative(wp1.position, + wp1.outTangentEndpoint, + wp2.inTangentEndpoint, + wp2.position, p); + } + else + { + throw new InvalidOperationException("Cannot get derivative in path because it has less than 2 control points."); + } + } + + /** + * Returns acceleration at time mu, with 0<=mu<=1 where 0 is the start of the spline + * and 1 is the end. + */ + public Vector3 GetAccelerationAtMu(bool closed, float mu) + { + + int cps = Count; + if (cps >= 2) + { + float p; + int i = GetSpanControlPointAtMu(closed, mu, out p); + int nextCP = (i + 1) % cps; + + var wp1 = this[i]; + var wp2 = this[nextCP]; + + return EvaluateSecondDerivative(wp1.position, + wp1.outTangentEndpoint, + wp2.inTangentEndpoint, + wp2.position, p); + } + else + { + throw new InvalidOperationException("Cannot get second derivative in path because it has less than 2 control points."); + } + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPointsDataChannel.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPointsDataChannel.cs.meta new file mode 100644 index 000000000..5cec32806 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiPointsDataChannel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d710ff448ae4e4a6f9351a678af9a8ac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiRotationalMassDataChannel.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiRotationalMassDataChannel.cs new file mode 100644 index 000000000..e26ff82aa --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiRotationalMassDataChannel.cs @@ -0,0 +1,12 @@ +using UnityEngine; +using System; +using System.Collections; + +namespace Obi +{ + [Serializable] + public class ObiRotationalMassDataChannel : ObiPathDataChannelIdentity + { + public ObiRotationalMassDataChannel() : base(new ObiCatmullRomInterpolator()) { } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiRotationalMassDataChannel.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiRotationalMassDataChannel.cs.meta new file mode 100644 index 000000000..9b1a75ce9 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiRotationalMassDataChannel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 28c38822e5a79441a8177689f83644e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiThicknessDataChannel.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiThicknessDataChannel.cs new file mode 100644 index 000000000..80e90dbea --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiThicknessDataChannel.cs @@ -0,0 +1,12 @@ +using UnityEngine; +using System; +using System.Collections; + +namespace Obi +{ + [Serializable] + public class ObiThicknessDataChannel : ObiPathDataChannelIdentity + { + public ObiThicknessDataChannel() : base(new ObiCatmullRomInterpolator()) { } + } +} diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiThicknessDataChannel.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiThicknessDataChannel.cs.meta new file mode 100644 index 000000000..81e98c4ba --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/DataChannels/ObiThicknessDataChannel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b414fbc6ce2db42299dc01619ed4fc97 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators.meta new file mode 100644 index 000000000..0d67e6f47 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e85cc8f3b96cf4b4c9be1e6af0a0a99b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiCatmullRomInterpolator.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiCatmullRomInterpolator.cs new file mode 100644 index 000000000..a15ba18a0 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiCatmullRomInterpolator.cs @@ -0,0 +1,49 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public class ObiCatmullRomInterpolator : ObiInterpolator + { + /** + * 1D bezier spline interpolation + */ + public float Evaluate(float y0, float y1, float y2, float y3, float mu) + { + + float imu = 1 - mu; + return imu * imu * imu * y0 + + 3f * imu * imu * mu * y1 + + 3f * imu * mu * mu * y2 + + mu * mu * mu * y3; + + } + + /** + * 1D catmull rom spline second derivative + */ + public float EvaluateFirstDerivative(float y0, float y1, float y2, float y3, float mu) + { + + float imu = 1 - mu; + return 3f * imu * imu * (y1 - y0) + + 6f * imu * mu * (y2 - y1) + + 3f * mu * mu * (y3 - y2); + + } + + + /** + * 1D catmull rom spline second derivative + */ + public float EvaluateSecondDerivative(float y0, float y1, float y2, float y3, float mu) + { + + float imu = 1 - mu; + return 3f * imu * imu * (y1 - y0) + + 6f * imu * mu * (y2 - y1) + + 3f * mu * mu * (y3 - y2); + + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiCatmullRomInterpolator.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiCatmullRomInterpolator.cs.meta new file mode 100644 index 000000000..dfd028c1f --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiCatmullRomInterpolator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 93918aac247384d8289d151d77dc4dc2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiCatmullRomInterpolator3D.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiCatmullRomInterpolator3D.cs new file mode 100644 index 000000000..68bf48c67 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiCatmullRomInterpolator3D.cs @@ -0,0 +1,46 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public class ObiCatmullRomInterpolator3D : ObiInterpolator + { + private ObiCatmullRomInterpolator interpolator = new ObiCatmullRomInterpolator(); + + /** + * 3D spline interpolation + */ + public Vector3 Evaluate(Vector3 y0, Vector3 y1, Vector3 y2, Vector3 y3, float mu) + { + + return new Vector3(interpolator.Evaluate(y0.x, y1.x, y2.x, y3.x, mu), + interpolator.Evaluate(y0.y, y1.y, y2.y, y3.y, mu), + interpolator.Evaluate(y0.z, y1.z, y2.z, y3.z, mu)); + + } + + /** + * 3D spline first derivative + */ + public Vector3 EvaluateFirstDerivative(Vector3 y0, Vector3 y1, Vector3 y2, Vector3 y3, float mu) + { + + return new Vector3(interpolator.EvaluateFirstDerivative(y0.x, y1.x, y2.x, y3.x, mu), + interpolator.EvaluateFirstDerivative(y0.y, y1.y, y2.y, y3.y, mu), + interpolator.EvaluateFirstDerivative(y0.z, y1.z, y2.z, y3.z, mu)); + + } + + /** + * 3D spline second derivative + */ + public Vector3 EvaluateSecondDerivative(Vector3 y0, Vector3 y1, Vector3 y2, Vector3 y3, float mu) + { + + return new Vector3(interpolator.EvaluateSecondDerivative(y0.x, y1.x, y2.x, y3.x, mu), + interpolator.EvaluateSecondDerivative(y0.y, y1.y, y2.y, y3.y, mu), + interpolator.EvaluateSecondDerivative(y0.z, y1.z, y2.z, y3.z, mu)); + + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiCatmullRomInterpolator3D.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiCatmullRomInterpolator3D.cs.meta new file mode 100644 index 000000000..7d9398e20 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiCatmullRomInterpolator3D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 845dbd641b61b490bb94d745b6879e97 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiColorInterpolator3D.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiColorInterpolator3D.cs new file mode 100644 index 000000000..4f7b7f489 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiColorInterpolator3D.cs @@ -0,0 +1,49 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public class ObiColorInterpolator3D : ObiInterpolator + { + private ObiCatmullRomInterpolator interpolator = new ObiCatmullRomInterpolator(); + + /** + * 3D spline interpolation + */ + public Color Evaluate(Color y0, Color y1, Color y2, Color y3, float mu) + { + + return new Color(interpolator.Evaluate(y0.r, y1.r, y2.r, y3.r, mu), + interpolator.Evaluate(y0.g, y1.g, y2.g, y3.g, mu), + interpolator.Evaluate(y0.b, y1.b, y2.b, y3.b, mu), + interpolator.Evaluate(y0.a, y1.a, y2.a, y3.a, mu)); + + } + + /** + * 3D spline first derivative + */ + public Color EvaluateFirstDerivative(Color y0, Color y1, Color y2, Color y3, float mu) + { + + return new Color(interpolator.EvaluateFirstDerivative(y0.r, y1.r, y2.r, y3.r, mu), + interpolator.EvaluateFirstDerivative(y0.g, y1.g, y2.g, y3.g, mu), + interpolator.EvaluateFirstDerivative(y0.b, y1.b, y2.b, y3.b, mu), + interpolator.EvaluateFirstDerivative(y0.a, y1.a, y2.a, y3.a, mu)); + + } + + /** + * 3D spline second derivative + */ + public Color EvaluateSecondDerivative(Color y0, Color y1, Color y2, Color y3, float mu) + { + + return new Color(interpolator.EvaluateSecondDerivative(y0.r, y1.r, y2.r, y3.r, mu), + interpolator.EvaluateSecondDerivative(y0.g, y1.g, y2.g, y3.g, mu), + interpolator.EvaluateSecondDerivative(y0.b, y1.b, y2.b, y3.b, mu), + interpolator.EvaluateSecondDerivative(y0.a, y1.a, y2.a, y3.a, mu)); + + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiColorInterpolator3D.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiColorInterpolator3D.cs.meta new file mode 100644 index 000000000..c100772a5 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiColorInterpolator3D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c2bda61c040346db8efd82f64c2422e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiConstantInterpolator.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiConstantInterpolator.cs new file mode 100644 index 000000000..e404e94c5 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiConstantInterpolator.cs @@ -0,0 +1,33 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + public class ObiConstantInterpolator : ObiInterpolator + { + /** + * constant interpolator + */ + public int Evaluate(int y0, int y1, int y2, int y3, float mu) + { + return mu < 0.5f ? y1 : y2; + } + + /** + * derivative of constant value: + */ + public int EvaluateFirstDerivative(int y0, int y1, int y2, int y3, float mu) + { + return 0; + } + + + /** + * second derivative of constant value: + */ + public int EvaluateSecondDerivative(int y0, int y1, int y2, int y3, float mu) + { + return 0; + } + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiConstantInterpolator.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiConstantInterpolator.cs.meta new file mode 100644 index 000000000..a4c14046b --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiConstantInterpolator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 33f10aef9ed544b14a762a9c6e8bf411 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiInterpolator.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiInterpolator.cs new file mode 100644 index 000000000..1e03c33bd --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiInterpolator.cs @@ -0,0 +1,13 @@ +using UnityEngine; +using System.Collections; + +namespace Obi +{ + + public interface ObiInterpolator + { + T Evaluate(T v0, T v1, T v2, T v3, float mu); + T EvaluateFirstDerivative(T v0, T v1, T v2, T v3, float mu); + T EvaluateSecondDerivative(T v0, T v1, T v2, T v3, float mu); + } +} diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiInterpolator.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiInterpolator.cs.meta new file mode 100644 index 000000000..47fd49666 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/Interpolators/ObiInterpolator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: af25f2a4d723548bfafa551b6da56d25 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPath.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPath.cs new file mode 100644 index 000000000..6d5bb0b09 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPath.cs @@ -0,0 +1,408 @@ +using UnityEngine; +using UnityEngine.Events; +using System; +using System.Collections.ObjectModel; +using System.Collections.Generic; +using UnityEngine.Serialization; + +namespace Obi +{ + [System.Serializable] + public class PathControlPointEvent : UnityEvent + { + } + + [Serializable] + public class ObiPath + { + [HideInInspector] [SerializeField] List m_Names = new List(); + [HideInInspector] [SerializeField] public ObiPointsDataChannel m_Points = new ObiPointsDataChannel(); + [HideInInspector] [SerializeField] ObiNormalDataChannel m_Normals = new ObiNormalDataChannel(); + [HideInInspector] [SerializeField] ObiColorDataChannel m_Colors = new ObiColorDataChannel(); + [HideInInspector] [SerializeField] ObiThicknessDataChannel m_Thickness = new ObiThicknessDataChannel(); + [HideInInspector] [SerializeField] ObiMassDataChannel m_Masses = new ObiMassDataChannel(); + [HideInInspector] [SerializeField] ObiRotationalMassDataChannel m_RotationalMasses = new ObiRotationalMassDataChannel(); + + [FormerlySerializedAs("m_Phases")] + [HideInInspector] [SerializeField] ObiPhaseDataChannel m_Filters = new ObiPhaseDataChannel(); + + [HideInInspector] [SerializeField] private bool m_Closed = false; + + protected bool dirty = false; + protected const int arcLenghtSamples = 20; + [HideInInspector] [SerializeField] protected List m_ArcLengthTable = new List(); + [HideInInspector] [SerializeField] protected float m_TotalSplineLenght = 0.0f; + + public UnityEvent OnPathChanged = new UnityEvent(); + public PathControlPointEvent OnControlPointAdded = new PathControlPointEvent(); + public PathControlPointEvent OnControlPointRemoved = new PathControlPointEvent(); + public PathControlPointEvent OnControlPointRenamed = new PathControlPointEvent(); + + private IEnumerable GetDataChannels() + { + yield return m_Points; + yield return m_Normals; + yield return m_Colors; + yield return m_Thickness; + yield return m_Masses; + yield return m_RotationalMasses; + yield return m_Filters; + } + + public ObiPointsDataChannel points { get { return m_Points; }} + public ObiNormalDataChannel normals { get { return m_Normals; } } + public ObiColorDataChannel colors { get { return m_Colors; } } + public ObiThicknessDataChannel thicknesses { get { return m_Thickness; } } + public ObiMassDataChannel masses { get { return m_Masses; } } + public ObiRotationalMassDataChannel rotationalMasses { get { return m_RotationalMasses; } } + public ObiPhaseDataChannel filters { get { return m_Filters; } } + + public ReadOnlyCollection ArcLengthTable + { + get { return m_ArcLengthTable.AsReadOnly(); } + } + + public float Length + { + get { return m_TotalSplineLenght; } + } + + public int ArcLengthSamples + { + get { return arcLenghtSamples; } + } + + public int ControlPointCount + { + get { return m_Points.Count;} + } + + public bool Closed + { + get { return m_Closed; } + set + { + if (value != m_Closed) + { + m_Closed = value; + dirty = true; + } + } + } + + public int GetSpanCount() + { + return m_Points.GetSpanCount(m_Closed); + } + + public int GetSpanControlPointForMu(float mu, out float spanMu) + { + return m_Points.GetSpanControlPointAtMu(m_Closed, mu, out spanMu); + } + + public int GetClosestControlPointIndex(float mu) + { + float spanMu; + int cp = GetSpanControlPointForMu(mu, out spanMu); + + if (spanMu > 0.5f) + return (cp + 1) % ControlPointCount; + else + return cp % ControlPointCount; + } + + /** + * Returns the curve parameter (mu) at a certain length of the curve, using linear interpolation + * of the values cached in arcLengthTable. + */ + public float GetMuAtLenght(float length) + { + if (length <= 0) return 0; + if (length >= m_TotalSplineLenght) return 1; + + int i; + for (i = 1; i < m_ArcLengthTable.Count; ++i) + { + if (length < m_ArcLengthTable[i]) break; + } + + float prevMu = (i - 1) / (float)(m_ArcLengthTable.Count - 1); + float nextMu = i / (float)(m_ArcLengthTable.Count - 1); + + float s = (length - m_ArcLengthTable[i - 1]) / (m_ArcLengthTable[i] - m_ArcLengthTable[i - 1]); + + return prevMu + (nextMu - prevMu) * s; + } + + /** + * Recalculates spline arc lenght in world space using Gauss-Lobatto adaptive integration. + * @param acc minimum accuray desired (eg 0.00001f) + * @param maxevals maximum number of spline evaluations we want to allow per segment. + */ + public float RecalculateLenght(Matrix4x4 referenceFrame, float acc, int maxevals) + { + if (referenceFrame == null) + { + m_TotalSplineLenght = 0; + return 0; + } + + m_TotalSplineLenght = 0.0f; + m_ArcLengthTable.Clear(); + m_ArcLengthTable.Add(0); + + float step = 1 / (float)(arcLenghtSamples + 1); + int controlPoints = ControlPointCount; + + if (controlPoints >= 2) + { + + int spans = GetSpanCount(); + + for (int cp = 0; cp < spans; ++cp) + { + int nextCP = (cp + 1) % controlPoints; + var wp1 = m_Points[cp]; + var wp2 = m_Points[nextCP]; + + Vector3 _p = referenceFrame.MultiplyPoint3x4(wp1.position); + Vector3 p = referenceFrame.MultiplyPoint3x4(wp1.outTangentEndpoint); + Vector3 p_ = referenceFrame.MultiplyPoint3x4(wp2.inTangentEndpoint); + Vector3 p__ = referenceFrame.MultiplyPoint3x4(wp2.position); + + for (int i = 0; i <= Mathf.Max(1, arcLenghtSamples); ++i) + { + + float a = i * step; + float b = (i + 1) * step; + + float segmentLength = GaussLobattoIntegrationStep(_p, p, p_, p__, a, b, + m_Points.EvaluateFirstDerivative(_p, p, p_, p__, a).magnitude, + m_Points.EvaluateFirstDerivative(_p, p, p_, p__, b).magnitude, 0, maxevals, acc); + + m_TotalSplineLenght += segmentLength; + + m_ArcLengthTable.Add(m_TotalSplineLenght); + + } + + } + } + else + { + Debug.LogWarning("A path needs at least 2 control points to be defined."); + } + + return m_TotalSplineLenght; + } + + /** + * One step of the adaptive integration method using Gauss-Lobatto quadrature. + * Takes advantage of the fact that the arc lenght of a vector function is equal to the + * integral of the magnitude of first derivative. + */ + private float GaussLobattoIntegrationStep(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, + float a, float b, + float fa, float fb, int nevals, int maxevals, float acc) + { + + if (nevals >= maxevals) return 0; + + // Constants used in the algorithm + float alpha = Mathf.Sqrt(2.0f / 3.0f); + float beta = 1.0f / Mathf.Sqrt(5.0f); + + // Here the abcissa points and function values for both the 4-point + // and the 7-point rule are calculated (the points at the end of + // interval come from the function call, i.e., fa and fb. Also note + // the 7-point rule re-uses all the points of the 4-point rule.) + float h = (b - a) / 2; + float m = (a + b) / 2; + + float mll = m - alpha * h; + float ml = m - beta * h; + float mr = m + beta * h; + float mrr = m + alpha * h; + nevals += 5; + + float fmll = m_Points.EvaluateFirstDerivative(p1, p2, p3, p4, mll).magnitude; + float fml = m_Points.EvaluateFirstDerivative(p1, p2, p3, p4, ml).magnitude; + float fm = m_Points.EvaluateFirstDerivative(p1, p2, p3, p4, m).magnitude; + float fmr = m_Points.EvaluateFirstDerivative(p1, p2, p3, p4, mr).magnitude; + float fmrr = m_Points.EvaluateFirstDerivative(p1, p2, p3, p4, mrr).magnitude; + + // Both the 4-point and 7-point rule integrals are evaluted + float integral4 = (h / 6) * (fa + fb + 5 * (fml + fmr)); + float integral7 = (h / 1470) * (77 * (fa + fb) + 432 * (fmll + fmrr) + 625 * (fml + fmr) + 672 * fm); + + // The difference betwen the 4-point and 7-point integrals is the + // estimate of the accuracy + + if ((integral4 - integral7) < acc || mll <= a || b <= mrr) + { + if (!(m > a && b > m)) + { + Debug.LogError("Spline integration reached an interval with no more machine numbers"); + } + return integral7; + } + else + { + return GaussLobattoIntegrationStep(p1, p2, p3, p4, a, mll, fa, fmll, nevals, maxevals, acc) + + GaussLobattoIntegrationStep(p1, p2, p3, p4, mll, ml, fmll, fml, nevals, maxevals, acc) + + GaussLobattoIntegrationStep(p1, p2, p3, p4, ml, m, fml, fm, nevals, maxevals, acc) + + GaussLobattoIntegrationStep(p1, p2, p3, p4, m, mr, fm, fmr, nevals, maxevals, acc) + + GaussLobattoIntegrationStep(p1, p2, p3, p4, mr, mrr, fmr, fmrr, nevals, maxevals, acc) + + GaussLobattoIntegrationStep(p1, p2, p3, p4, mrr, b, fmrr, fb, nevals, maxevals, acc); + + } + } + + public void SetName(int index, string name) + { + m_Names[index] = name; + if (OnControlPointRenamed != null) + OnControlPointRenamed.Invoke(index); + dirty = true; + } + + public string GetName(int index) + { + return m_Names[index]; + } + + public void AddControlPoint(Vector3 position, Vector3 inTangentVector, Vector3 outTangentVector, Vector3 normal, float mass, float rotationalMass, float thickness, int filter, Color color, string name) + { + InsertControlPoint(ControlPointCount, position, inTangentVector, outTangentVector, normal, mass, rotationalMass, thickness, filter, color, name); + } + + public void InsertControlPoint(int index, Vector3 position, Vector3 inTangentVector, Vector3 outTangentVector, Vector3 normal, float mass, float rotationalMass, float thickness, int filter, Color color, string name) + { + m_Points.data.Insert(index, new ObiWingedPoint(inTangentVector,position,outTangentVector)); + m_Colors.data.Insert(index, color); + m_Normals.data.Insert(index, normal); + m_Thickness.data.Insert(index, thickness); + m_Masses.data.Insert(index, mass); + m_RotationalMasses.data.Insert(index, rotationalMass); + m_Filters.data.Insert(index, filter); + m_Names.Insert(index,name); + + if (OnControlPointAdded != null) + OnControlPointAdded.Invoke(index); + + dirty = true; + } + + public int InsertControlPoint(float mu) + { + + int controlPoints = ControlPointCount; + if (controlPoints >= 2) + { + + if (!System.Single.IsNaN(mu)) + { + + float p; + int i = GetSpanControlPointForMu(mu, out p); + + int next = (i + 1) % controlPoints; + + var wp1 = m_Points[i]; + var wp2 = m_Points[next]; + + Vector3 P0_1 = (1 - p) * wp1.position + p * wp1.outTangentEndpoint; + Vector3 P1_2 = (1 - p) * wp1.outTangentEndpoint + p * wp2.inTangentEndpoint; + Vector3 P2_3 = (1 - p) * wp2.inTangentEndpoint + p * wp2.position; + + Vector3 P01_12 = (1 - p) * P0_1 + p * P1_2; + Vector3 P12_23 = (1 - p) * P1_2 + p * P2_3; + + Vector3 P0112_1223 = (1 - p) * P01_12 + p * P12_23; + + wp1.SetOutTangentEndpoint(P0_1); + wp2.SetInTangentEndpoint(P2_3); + + m_Points[i] = wp1; + m_Points[next] = wp2; + + Color color = m_Colors.Evaluate(m_Colors[i], + m_Colors[i], + m_Colors[next], + m_Colors[next], p); + + Vector3 normal = m_Normals.Evaluate(m_Normals[i], + m_Normals[i], + m_Normals[next], + m_Normals[next], p); + + float thickness = m_Thickness.Evaluate(m_Thickness[i], + m_Thickness[i], + m_Thickness[next], + m_Thickness[next], p); + + float mass = m_Masses.Evaluate(m_Masses[i], + m_Masses[i], + m_Masses[next], + m_Masses[next], p); + + float rotationalMass = m_RotationalMasses.Evaluate(m_RotationalMasses[i], + m_RotationalMasses[i], + m_RotationalMasses[next], + m_RotationalMasses[next], p); + + int filter = m_Filters.Evaluate(m_Filters[i], + m_Filters[i], + m_Filters[next], + m_Filters[next], p); + + InsertControlPoint(i + 1, P0112_1223, P01_12 - P0112_1223, P12_23 - P0112_1223, normal, mass,rotationalMass, thickness, filter, color, GetName(i)); + + return i + 1; + } + } + return -1; + + } + + public void Clear() + { + for (int i = ControlPointCount-1; i >= 0; --i) + RemoveControlPoint(i); + + m_TotalSplineLenght = 0.0f; + m_ArcLengthTable.Clear(); + m_ArcLengthTable.Add(0); + } + + public void RemoveControlPoint(int index) + { + foreach (var channel in GetDataChannels()) + channel.RemoveAt(index); + + m_Names.RemoveAt(index); + + if (OnControlPointRemoved != null) + OnControlPointRemoved.Invoke(index); + + dirty = true; + } + + public void FlushEvents() + { + bool isDirty = dirty; + foreach (var channel in GetDataChannels()) + { + isDirty |= channel.Dirty; + channel.Clean(); + } + + if (OnPathChanged != null && isDirty) + { + dirty = false; + OnPathChanged.Invoke(); + } + } + + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPath.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPath.cs.meta new file mode 100644 index 000000000..8236881b3 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPath.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ee1575a4e45ef4a8ebafa0e5e2e51da5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPathFrame.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPathFrame.cs new file mode 100644 index 000000000..11f390881 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPathFrame.cs @@ -0,0 +1,168 @@ +using System; +using UnityEngine; + +namespace Obi +{ + public struct ObiPathFrame + { + public enum Axis + { + X = 0, + Y = 1, + Z = 2 + } + + public Vector3 position; + + public Vector3 tangent; + public Vector3 normal; + public Vector3 binormal; + + public Vector4 color; + public float thickness; + + public ObiPathFrame(Vector3 position, Vector3 tangent, Vector3 normal, Vector3 binormal, Vector4 color, float thickness){ + this.position = position; + this.normal = normal; + this.tangent = tangent; + this.binormal = binormal; + this.color = color; + this.thickness = thickness; + } + + public void Reset() + { + position = Vector3.zero; + tangent = Vector3.forward; + normal = Vector3.up; + binormal = Vector3.right; + color = Color.white; + thickness = 0; + } + + public static ObiPathFrame operator +(ObiPathFrame c1, ObiPathFrame c2) + { + return new ObiPathFrame(c1.position + c2.position,c1.tangent + c2.tangent,c1.normal + c2.normal,c1.binormal + c2.binormal,c1.color + c2.color, c1.thickness + c2.thickness); + } + + public static ObiPathFrame operator *(float f,ObiPathFrame c) + { + return new ObiPathFrame(c.position * f, c.tangent * f, c.normal * f, c.binormal * f,c.color * f, c.thickness * f); + } + + public static void WeightedSum(float w1, float w2, float w3, ref ObiPathFrame c1, ref ObiPathFrame c2, ref ObiPathFrame c3, ref ObiPathFrame sum) + { + sum.position.x = c1.position.x * w1 + c2.position.x * w2 + c3.position.x * w3; + sum.position.y = c1.position.y * w1 + c2.position.y * w2 + c3.position.y * w3; + sum.position.z = c1.position.z * w1 + c2.position.z * w2 + c3.position.z * w3; + + sum.tangent.x = c1.tangent.x * w1 + c2.tangent.x * w2 + c3.tangent.x * w3; + sum.tangent.y = c1.tangent.y * w1 + c2.tangent.y * w2 + c3.tangent.y * w3; + sum.tangent.z = c1.tangent.z * w1 + c2.tangent.z * w2 + c3.tangent.z * w3; + + sum.normal.x = c1.normal.x * w1 + c2.normal.x * w2 + c3.normal.x * w3; + sum.normal.y = c1.normal.y * w1 + c2.normal.y * w2 + c3.normal.y * w3; + sum.normal.z = c1.normal.z * w1 + c2.normal.z * w2 + c3.normal.z * w3; + + sum.binormal.x = c1.binormal.x * w1 + c2.binormal.x * w2 + c3.binormal.x * w3; + sum.binormal.y = c1.binormal.y * w1 + c2.binormal.y * w2 + c3.binormal.y * w3; + sum.binormal.z = c1.binormal.z * w1 + c2.binormal.z * w2 + c3.binormal.z * w3; + + sum.color.x = c1.color.x * w1 + c2.color.x * w2 + c3.color.x * w3; + sum.color.y = c1.color.y * w1 + c2.color.y * w2 + c3.color.y * w3; + sum.color.z = c1.color.z * w1 + c2.color.z * w2 + c3.color.z * w3; + sum.color.w = c1.color.w * w1 + c2.color.w * w2 + c3.color.w * w3; + + sum.thickness = c1.thickness * w1 + c2.thickness * w2 + c3.thickness * w3; + } + + public void SetTwist(float twist) + { + Quaternion twistQ = Quaternion.AngleAxis(twist, tangent); + normal = twistQ * normal; + binormal = twistQ * binormal; + } + + public void SetTwistAndTangent(float twist, Vector3 tangent) + { + this.tangent = tangent; + normal = new Vector3(tangent.y, tangent.x, 0).normalized; + binormal = Vector3.Cross(normal, tangent); + + Quaternion twistQ = Quaternion.AngleAxis(twist, tangent); + normal = twistQ * normal; + binormal = twistQ * binormal; + } + + public void Transport(ObiPathFrame frame, float twist) + { + // Calculate delta rotation: + Quaternion rotQ = Quaternion.FromToRotation(tangent, frame.tangent); + Quaternion twistQ = Quaternion.AngleAxis(twist, frame.tangent); + Quaternion finalQ = twistQ * rotQ; + + // Rotate previous frame axes to obtain the new ones: + normal = finalQ * normal; + binormal = finalQ * binormal; + tangent = frame.tangent; + position = frame.position; + thickness = frame.thickness; + color = frame.color; + } + + public void Transport(Vector3 newPosition, Vector3 newTangent, float twist) + { + // Calculate delta rotation: + Quaternion rotQ = Quaternion.FromToRotation(tangent, newTangent); + Quaternion twistQ = Quaternion.AngleAxis(twist, newTangent); + Quaternion finalQ = twistQ * rotQ; + + // Rotate previous frame axes to obtain the new ones: + normal = finalQ * normal; + binormal = finalQ * binormal; + tangent = newTangent; + position = newPosition; + + } + + // Transport, hinting the normal. + public void Transport(Vector3 newPosition, Vector3 newTangent, Vector3 newNormal, float twist) + { + normal = Quaternion.AngleAxis(twist, newTangent) * newNormal; + tangent = newTangent; + binormal = Vector3.Cross(normal, tangent); + position = newPosition; + } + + public Matrix4x4 ToMatrix(Axis mainAxis) + { + Matrix4x4 basis = new Matrix4x4(); + + int xo = ((int)mainAxis) % 3 * 4; + int yo = ((int)mainAxis + 1) % 3 * 4; + int zo = ((int)mainAxis + 2) % 3 * 4; + + basis[xo] = tangent[0]; + basis[xo + 1] = tangent[1]; + basis[xo + 2] = tangent[2]; + + basis[yo] = binormal[0]; + basis[yo + 1] = binormal[1]; + basis[yo + 2] = binormal[2]; + + basis[zo] = normal[0]; + basis[zo + 1] = normal[1]; + basis[zo + 2] = normal[2]; + + return basis; + } + + public void DebugDraw(float size) + { + Debug.DrawRay(position, binormal * size, Color.red); + Debug.DrawRay(position, normal * size, Color.green); + Debug.DrawRay(position, tangent * size, Color.blue); + } + } +} + diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPathFrame.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPathFrame.cs.meta new file mode 100644 index 000000000..b02d82d43 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPathFrame.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 237e9ecf813f646fd8502768445f4ab6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPathSmoother.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPathSmoother.cs new file mode 100644 index 000000000..4ddee1215 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPathSmoother.cs @@ -0,0 +1,379 @@ +using UnityEngine; +using Unity.Profiling; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Obi +{ + [ExecuteInEditMode] + [RequireComponent(typeof(ObiRopeBase))] + public class ObiPathSmoother : MonoBehaviour + { + static ProfilerMarker m_AllocateRawChunksPerfMarker = new ProfilerMarker("AllocateRawChunks"); + static ProfilerMarker m_GenerateSmoothChunksPerfMarker = new ProfilerMarker("GenerateSmoothChunks"); + + private Matrix4x4 w2l; + private Quaternion w2lRotation; + + [Range(0, 1)] + [Tooltip("Curvature threshold below which the path will be decimated. A value of 0 won't apply any decimation. As you increase the value, decimation will become more aggresive.")] + public float decimation = 0; + + [Range(0, 3)] + [Tooltip("Smoothing iterations applied to the path. A smoothing value of 0 won't perform any smoothing at all. Note that smoothing is applied after decimation.")] + public uint smoothing = 0; + + [Tooltip("Twist in degrees applied to each sucessive path section.")] + public float twist = 0; + + public event ObiActor.ActorCallback OnCurveGenerated; + + protected float smoothLength = 0; + protected int smoothSections = 0; + + [HideInInspector] public ObiList> rawChunks = new ObiList>(); + [HideInInspector] public ObiList> smoothChunks = new ObiList>(); + private Stack stack = new Stack(); + private BitArray decimateBitArray = new BitArray(0); + + public float SmoothLength + { + get { return smoothLength; } + } + + public float SmoothSections + { + get { return smoothSections; } + } + + private void OnEnable() + { + GetComponent().OnInterpolate += Actor_OnInterpolate; + } + + private void OnDisable() + { + GetComponent().OnInterpolate -= Actor_OnInterpolate; + } + + void Actor_OnInterpolate(ObiActor actor) + { + GenerateSmoothChunks(((ObiRopeBase)actor), smoothing); + + if (OnCurveGenerated != null) + OnCurveGenerated(actor); + } + + private void AllocateChunk(int sections) + { + if (sections > 1) + { + + if (rawChunks.Data[rawChunks.Count] == null) + { + rawChunks.Data[rawChunks.Count] = new ObiList(); + smoothChunks.Data[smoothChunks.Count] = new ObiList(); + } + + rawChunks.Data[rawChunks.Count].SetCount(sections); + + rawChunks.SetCount(rawChunks.Count + 1); + smoothChunks.SetCount(smoothChunks.Count + 1); + } + } + + private float CalculateChunkLength(ObiList chunk) + { + float length = 0; + for (int i = 1; i < chunk.Count; ++i) + length += Vector3.Distance(chunk[i].position, chunk[i - 1].position); + return length; + } + + /** + * Generates raw curve chunks from the rope description. + */ + private void AllocateRawChunks(ObiRopeBase actor) + { + using (m_AllocateRawChunksPerfMarker.Auto()) + { + rawChunks.Clear(); + + if (actor.path == null) + return; + + // Count particles for each chunk. + int particles = 0; + for (int i = 0; i < actor.elements.Count; ++i) + { + particles++; + // At discontinuities, start a new chunk. + if (i < actor.elements.Count - 1 && actor.elements[i].particle2 != actor.elements[i + 1].particle1) + { + AllocateChunk(++particles); + particles = 0; + } + } + AllocateChunk(++particles); + } + } + + private void PathFrameFromParticle(ObiRopeBase actor, ref ObiPathFrame frame, int particleIndex, bool interpolateOrientation = true) + { + // Update current frame values from particles: + frame.position = w2l.MultiplyPoint3x4(actor.GetParticlePosition(particleIndex)); + frame.thickness = actor.GetParticleMaxRadius(particleIndex); + frame.color = actor.GetParticleColor(particleIndex); + + // Use particle orientation if possible: + if (actor.usesOrientedParticles) + { + Quaternion current = actor.GetParticleOrientation(particleIndex); + Quaternion previous = actor.GetParticleOrientation(Mathf.Max(0, particleIndex - 1)); + Quaternion average = w2lRotation * (interpolateOrientation ? Quaternion.SlerpUnclamped(current, previous, 0.5f) : current); + frame.normal = average * Vector3.up; + frame.binormal = average * Vector3.right; + frame.tangent = average * Vector3.forward; + } + } + + /** + * Generates smooth curve chunks. + */ + public void GenerateSmoothChunks(ObiRopeBase actor, uint smoothingLevels) + { + using (m_GenerateSmoothChunksPerfMarker.Auto()) + { + smoothChunks.Clear(); + smoothSections = 0; + smoothLength = 0; + + if (!Application.isPlaying) + actor.RebuildElementsFromConstraints(); + + AllocateRawChunks(actor); + + w2l = actor.transform.worldToLocalMatrix; + w2lRotation = w2l.rotation; + + // keep track of the first element of each chunk + int chunkStart = 0; + + ObiPathFrame frame_0 = new ObiPathFrame(); // "next" frame + ObiPathFrame frame_1 = new ObiPathFrame(); // current frame + ObiPathFrame frame_2 = new ObiPathFrame(); // previous frame + + // generate curve for each rope chunk: + for (int i = 0; i < rawChunks.Count; ++i) + { + int elementCount = rawChunks[i].Count - 1; + + // Initialize frames: + frame_0.Reset(); + frame_1.Reset(); + frame_2.Reset(); + + PathFrameFromParticle(actor, ref frame_1, actor.elements[chunkStart].particle1, false); + + frame_2 = frame_1; + + for (int m = 1; m <= rawChunks[i].Count; ++m) + { + + int index; + if (m >= elementCount) + // second particle of last element in the chunk. + index = actor.elements[chunkStart + elementCount - 1].particle2; + else + //first particle of current element. + index = actor.elements[chunkStart + m].particle1; + + // generate curve frame from particle: + PathFrameFromParticle(actor, ref frame_0, index); + + if (actor.usesOrientedParticles) + { + // copy frame directly. + frame_2 = frame_1; + } + else + { + // perform parallel transport, using forward / backward average to calculate tangent. + frame_1.tangent = ((frame_1.position - frame_2.position) + (frame_0.position - frame_1.position)).normalized; + frame_2.Transport(frame_1, twist); + } + + // in case we wrapped around the rope, average first and last frames: + if (chunkStart + m > actor.activeParticleCount) + { + frame_2 = rawChunks[0][0] = 0.5f * frame_2 + 0.5f * rawChunks[0][0]; + } + + frame_1 = frame_0; + + rawChunks[i][m - 1] = frame_2; + } + + // increment chunkStart by the amount of elements in this chunk: + chunkStart += elementCount; + + // adaptive curvature-based decimation: + if (Decimate(rawChunks[i], smoothChunks[i], decimation)) + { + // if any decimation took place, swap raw and smooth chunks: + var aux = rawChunks[i]; + rawChunks[i] = smoothChunks[i]; + smoothChunks[i] = aux; + } + + // get smooth curve points: + Chaikin(rawChunks[i], smoothChunks[i], smoothingLevels); + + // count total curve sections and total curve length: + smoothSections += smoothChunks[i].Count; + smoothLength += CalculateChunkLength(smoothChunks[i]); + } + } + } + + public ObiPathFrame GetSectionAt(float mu) + { + float edgeMu = smoothSections * Mathf.Clamp(mu,0,0.9999f); + int index = (int)edgeMu; + float sectionMu = edgeMu - index; + + int counter = 0; + int chunkIndex = -1; + int indexInChunk = -1; + for (int i = 0; i < smoothChunks.Count; ++i) + { + if (counter + smoothChunks[i].Count > index) + { + chunkIndex = i; + indexInChunk = index - counter; + break; + } + counter += smoothChunks[i].Count; + } + + ObiList chunk = smoothChunks[chunkIndex]; + ObiPathFrame s1 = chunk[indexInChunk]; + ObiPathFrame s2 = chunk[Mathf.Min(indexInChunk + 1, chunk.Count - 1)]; + + return (1 - sectionMu) * s1 + sectionMu * s2; + } + + /** + * Iterative version of the Ramer-Douglas-Peucker path decimation algorithm. + */ + private bool Decimate(ObiList input, ObiList output, float threshold) + { + // no decimation, no work to do, just return: + if (threshold < 0.00001f || input.Count < 3) + return false; + + float scaledThreshold = threshold * threshold * 0.01f; + + stack.Push(new Vector2Int(0, input.Count - 1)); + + decimateBitArray.Length = Mathf.Max(decimateBitArray.Length, input.Count); + decimateBitArray.SetAll(true); + + while (stack.Count > 0) + { + var range = stack.Pop(); + + float dmax = 0; + int index = range.x; + float mu; + + for (int i = index + 1; i < range.y; ++i) + { + if (decimateBitArray[i]) + { + float d = Vector3.SqrMagnitude(ObiUtils.ProjectPointLine(input[i].position, input[range.x].position, input[range.y].position, out mu) - input[i].position); + + if (d > dmax) + { + index = i; + dmax = d; + } + } + } + + if (dmax > scaledThreshold) + { + stack.Push(new Vector2Int(range.x, index)); + stack.Push(new Vector2Int(index, range.y)); + } + else + { + for (int i = range.x + 1; i < range.y; ++i) + decimateBitArray[i] = false; + } + } + + output.Clear(); + for (int i = 0; i < input.Count; ++i) + if (decimateBitArray[i]) + output.Add(input[i]); + + return true; + } + + /** + * This method uses a variant of Chainkin's algorithm to produce a smooth curve from a set of control points. It is specially fast + * because it directly calculates subdivision level k, instead of recursively calculating levels 1..k. + */ + private void Chaikin(ObiList input, ObiList output, uint k) + { + // no subdivision levels, no work to do. just copy the input to the output: + if (k == 0 || input.Count < 3) + { + output.SetCount(input.Count); + for (int i = 0; i < input.Count; ++i) + output[i] = input[i]; + return; + } + + // calculate amount of new points generated by each inner control point: + int pCount = (int)Mathf.Pow(2, k); + + // precalculate some quantities: + int n0 = input.Count - 1; + float twoRaisedToMinusKPlus1 = Mathf.Pow(2, -(k + 1)); + float twoRaisedToMinusK = Mathf.Pow(2, -k); + float twoRaisedToMinus2K = Mathf.Pow(2, -2 * k); + float twoRaisedToMinus2KMinus1 = Mathf.Pow(2, -2 * k - 1); + + // allocate ouput: + output.SetCount((n0 - 1) * pCount + 2); + + // calculate initial curve points: + output[0] = (0.5f + twoRaisedToMinusKPlus1) * input[0] + (0.5f - twoRaisedToMinusKPlus1) * input[1]; + output[pCount * n0 - pCount + 1] = (0.5f - twoRaisedToMinusKPlus1) * input[n0 - 1] + (0.5f + twoRaisedToMinusKPlus1) * input[n0]; + + // calculate internal points: + for (int j = 1; j <= pCount; ++j) + { + // precalculate coefficients: + float F = 0.5f - twoRaisedToMinusKPlus1 - (j - 1) * (twoRaisedToMinusK - j * twoRaisedToMinus2KMinus1); + float G = 0.5f + twoRaisedToMinusKPlus1 + (j - 1) * (twoRaisedToMinusK - j * twoRaisedToMinus2K); + float H = (j - 1) * j * twoRaisedToMinus2KMinus1; + + for (int i = 1; i < n0; ++i) + ObiPathFrame.WeightedSum(F, G, H, + ref input.Data[i - 1], + ref input.Data[i], + ref input.Data[i + 1], + ref output.Data[(i - 1) * pCount + j]); + } + + // make first and last curve points coincide with original points: + output[0] = input[0]; + output[output.Count - 1] = input[input.Count - 1]; + } + + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPathSmoother.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPathSmoother.cs.meta new file mode 100644 index 000000000..3bc0efb08 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiPathSmoother.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 958c969cfb16745f192d4d7bd28b7178 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiWingedPoint.cs b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiWingedPoint.cs new file mode 100644 index 000000000..f3d37db8b --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiWingedPoint.cs @@ -0,0 +1,100 @@ +using UnityEngine; +using System; +using System.Collections; + +namespace Obi +{ + [Serializable] + public struct ObiWingedPoint + { + public enum TangentMode + { + Aligned, + Mirrored, + Free, + } + + public TangentMode tangentMode; + public Vector3 inTangent; + public Vector3 position; + public Vector3 outTangent; + + public Vector3 inTangentEndpoint + { + get { return position + inTangent; } + } + + public Vector3 outTangentEndpoint + { + get { return position + outTangent; } + } + + public ObiWingedPoint(Vector3 inTangent, Vector3 point, Vector3 outTangent) + { + this.tangentMode = TangentMode.Aligned; + this.inTangent = inTangent; + this.position = point; + this.outTangent = outTangent; + } + + public void SetInTangentEndpoint(Vector3 value) + { + Vector3 newTangent = value - position; + + switch (tangentMode) + { + case TangentMode.Mirrored: outTangent = -newTangent; break; + case TangentMode.Aligned: outTangent = -newTangent.normalized * outTangent.magnitude; break; + } + + inTangent = newTangent; + } + + public void SetOutTangentEndpoint(Vector3 value) + { + Vector3 newTangent = value - position; + + switch (tangentMode) + { + case TangentMode.Mirrored: inTangent = -newTangent; break; + case TangentMode.Aligned: inTangent = -newTangent.normalized * inTangent.magnitude; break; + } + + outTangent = newTangent; + } + + public void SetInTangent(Vector3 value) + { + Vector3 newTangent = value; + + switch (tangentMode) + { + case TangentMode.Mirrored: outTangent = -newTangent; break; + case TangentMode.Aligned: outTangent = -newTangent.normalized * outTangent.magnitude; break; + } + + inTangent = newTangent; + } + + public void SetOutTangent(Vector3 value) + { + Vector3 newTangent = value; + + switch (tangentMode) + { + case TangentMode.Mirrored: inTangent = -newTangent; break; + case TangentMode.Aligned: inTangent = -newTangent.normalized * inTangent.magnitude; break; + } + + outTangent = newTangent; + } + + public void Transform(Vector3 translation, Quaternion rotation, Vector3 scale) + { + position += translation; + inTangent = rotation * Vector3.Scale(inTangent, scale); + outTangent = rotation * Vector3.Scale(outTangent, scale); + } + } + +} diff --git a/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiWingedPoint.cs.meta b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiWingedPoint.cs.meta new file mode 100644 index 000000000..dd0c6fcde --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/DataStructures/Path/ObiWingedPoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 76ee869b5f2e5440ea0a1c8a1e161cde +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Rendering.meta b/Assets/Obi/Scripts/RopeAndRod/Rendering.meta new file mode 100644 index 000000000..30985468d --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Rendering.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07dfc7e6a316349cba9d3b434f09ee68 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeChainRenderer.cs b/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeChainRenderer.cs new file mode 100644 index 000000000..7bbb1a5ae --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeChainRenderer.cs @@ -0,0 +1,171 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using Unity.Profiling; + +namespace Obi +{ + [AddComponentMenu("Physics/Obi/Obi Rope Chain Renderer", 885)] + [ExecuteInEditMode] + public class ObiRopeChainRenderer : MonoBehaviour + { + static ProfilerMarker m_UpdateChainRopeRendererChunksPerfMarker = new ProfilerMarker("UpdateChainRopeRenderer"); + + [HideInInspector] [SerializeField] public List linkInstances = new List(); + + [SerializeProperty("RandomizeLinks")] + [SerializeField] private bool randomizeLinks = false; + + public Vector3 linkScale = Vector3.one; /**< Scale of chain links.*/ + public List linkPrefabs = new List(); + + [Range(0, 1)] + public float twistAnchor = 0; /**< Normalized position of twisting origin along rope.*/ + + public float sectionTwist = 0; /**< Amount of twist applied to each section, in degrees.*/ + + ObiPathFrame frame = new ObiPathFrame(); + + void Awake() + { + ClearChainLinkInstances(); + } + + public bool RandomizeLinks + { + get { return randomizeLinks; } + set + { + if (value != randomizeLinks) + { + randomizeLinks = value; + CreateChainLinkInstances(GetComponent()); + } + } + } + + void OnEnable() + { + GetComponent().OnInterpolate += UpdateRenderer; + } + + void OnDisable() + { + GetComponent().OnInterpolate -= UpdateRenderer; + ClearChainLinkInstances(); + } + + /** + * Destroys all chain link instances. Used when the chain must be re-created from scratch, and when the actor is disabled/destroyed. + */ + public void ClearChainLinkInstances() + { + + if (linkInstances == null) + return; + + for (int i = 0; i < linkInstances.Count; ++i) + { + if (linkInstances[i] != null) + GameObject.DestroyImmediate(linkInstances[i]); + } + linkInstances.Clear(); + } + + public void CreateChainLinkInstances(ObiRopeBase rope) + { + + ClearChainLinkInstances(); + + if (linkPrefabs.Count > 0) + { + + for (int i = 0; i < rope.particleCount; ++i) + { + + int index = randomizeLinks ? UnityEngine.Random.Range(0, linkPrefabs.Count) : i % linkPrefabs.Count; + + GameObject linkInstance = null; + + if (linkPrefabs[index] != null) + { + linkInstance = GameObject.Instantiate(linkPrefabs[index]); + linkInstance.transform.SetParent(rope.transform, false); + linkInstance.hideFlags = HideFlags.HideAndDontSave; + linkInstance.SetActive(false); + } + + linkInstances.Add(linkInstance); + } + } + } + + public void UpdateRenderer(ObiActor actor) + { + using (m_UpdateChainRopeRendererChunksPerfMarker.Auto()) + { + var rope = actor as ObiRopeBase; + + // In case there are no link prefabs to instantiate: + if (linkPrefabs.Count == 0) + return; + + // Regenerate instances if needed: + if (linkInstances == null || linkInstances.Count < rope.particleCount) + { + CreateChainLinkInstances(rope); + } + + var blueprint = rope.sourceBlueprint; + int elementCount = rope.elements.Count; + + float twist = -sectionTwist * elementCount * twistAnchor; + + //we will define and transport a reference frame along the curve using parallel transport method: + frame.Reset(); + frame.SetTwist(twist); + + int lastParticle = -1; + + for (int i = 0; i < elementCount; ++i) + { + ObiStructuralElement elm = rope.elements[i]; + + Vector3 pos = rope.GetParticlePosition(elm.particle1); + Vector3 nextPos = rope.GetParticlePosition(elm.particle2); + Vector3 linkVector = nextPos - pos; + Vector3 tangent = linkVector.normalized; + + if (rope.sourceBlueprint.usesOrientedParticles) + { + frame.Transport(nextPos, tangent, rope.GetParticleOrientation(elm.particle1) * Vector3.up, twist); + twist += sectionTwist; + } + else + { + frame.Transport(nextPos, tangent, sectionTwist); + } + + if (linkInstances[i] != null) + { + linkInstances[i].SetActive(true); + Transform linkTransform = linkInstances[i].transform; + linkTransform.position = pos + linkVector * 0.5f; + linkTransform.localScale = rope.GetParticleMaxRadius(elm.particle1) * 2 * linkScale; + linkTransform.rotation = Quaternion.LookRotation(tangent, frame.normal); + } + + lastParticle = elm.particle2; + + } + + for (int i = elementCount; i < linkInstances.Count; ++i) + { + if (linkInstances[i] != null) + linkInstances[i].SetActive(false); + } + } + } + } +} + diff --git a/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeChainRenderer.cs.meta b/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeChainRenderer.cs.meta new file mode 100644 index 000000000..0baf2dd5f --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeChainRenderer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 09ac962c0743c400aa230ebf871b6156 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 1289c40ad0e7c4fb3bd738f8a3f3e068, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeExtrudedRenderer.cs b/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeExtrudedRenderer.cs new file mode 100644 index 000000000..02b526b6a --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeExtrudedRenderer.cs @@ -0,0 +1,176 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using Unity.Profiling; + +namespace Obi +{ + [AddComponentMenu("Physics/Obi/Obi Rope Extruded Renderer", 883)] + [ExecuteInEditMode] + [RequireComponent(typeof(MeshRenderer))] + [RequireComponent(typeof(MeshFilter))] + [RequireComponent(typeof(ObiPathSmoother))] + public class ObiRopeExtrudedRenderer : MonoBehaviour + { + static ProfilerMarker m_UpdateExtrudedRopeRendererChunksPerfMarker = new ProfilerMarker("UpdateExtrudedRopeRenderer"); + + private List vertices = new List(); + private List normals = new List(); + private List tangents = new List(); + private List uvs = new List(); + private List vertColors = new List(); + private List tris = new List(); + + ObiPathSmoother smoother; // Each renderer should have its own smoother. The renderer then has a method to get position and orientation at a point. + + [HideInInspector] [NonSerialized] public Mesh extrudedMesh; + + [Range(0, 1)] + public float uvAnchor = 0; /**< Normalized position of texture coordinate origin along rope.*/ + + public Vector2 uvScale = Vector2.one; /**< Scaling of uvs along rope.*/ + + public bool normalizeV = true; + + public ObiRopeSection section = null; /**< Section asset to be extruded along the rope.*/ + + public float thicknessScale = 0.8f; /**< Scales section thickness.*/ + + void OnEnable() + { + smoother = GetComponent(); + smoother.OnCurveGenerated += UpdateRenderer; + CreateMeshIfNeeded(); + } + + void OnDisable() + { + smoother.OnCurveGenerated -= UpdateRenderer; + GameObject.DestroyImmediate(extrudedMesh); + } + + private void CreateMeshIfNeeded() + { + if (extrudedMesh == null) + { + extrudedMesh = new Mesh(); + extrudedMesh.name = "extrudedMesh"; + extrudedMesh.MarkDynamic(); + GetComponent().mesh = extrudedMesh; + } + } + + public void UpdateRenderer(ObiActor actor) + { + using (m_UpdateExtrudedRopeRendererChunksPerfMarker.Auto()) + { + if (section == null) + return; + + var rope = actor as ObiRopeBase; + + CreateMeshIfNeeded(); + ClearMeshData(); + + int sectionIndex = 0; + int sectionSegments = section.Segments; + int verticesPerSection = sectionSegments + 1; // the last vertex in each section must be duplicated, due to uv wraparound. + float vCoord = -uvScale.y * rope.restLength * uvAnchor; // v texture coordinate. + float actualToRestLengthRatio = smoother.SmoothLength / rope.restLength; + + Vector3 vertex = Vector3.zero, normal = Vector3.zero; + Vector4 texTangent = Vector4.zero; + Vector2 uv = Vector2.zero; + + for (int c = 0; c < smoother.smoothChunks.Count; ++c) + { + ObiList curve = smoother.smoothChunks[c]; + + for (int i = 0; i < curve.Count; ++i) + { + // Calculate previous and next curve indices: + int prevIndex = Mathf.Max(i - 1, 0); + + // advance v texcoord: + vCoord += uvScale.y * (Vector3.Distance(curve.Data[i].position, curve.Data[prevIndex].position) / + (normalizeV ? smoother.SmoothLength : actualToRestLengthRatio)); + + // calculate section thickness and scale the basis vectors by it: + float sectionThickness = curve.Data[i].thickness * thicknessScale; + + // Loop around each segment: + int nextSectionIndex = sectionIndex + 1; + for (int j = 0; j <= sectionSegments; ++j) + { + // make just one copy of the section vertex: + Vector2 sectionVertex = section.vertices[j]; + + // calculate normal using section vertex, curve normal and binormal: + normal.x = (sectionVertex.x * curve.Data[i].normal.x + sectionVertex.y * curve.Data[i].binormal.x) * sectionThickness; + normal.y = (sectionVertex.x * curve.Data[i].normal.y + sectionVertex.y * curve.Data[i].binormal.y) * sectionThickness; + normal.z = (sectionVertex.x * curve.Data[i].normal.z + sectionVertex.y * curve.Data[i].binormal.z) * sectionThickness; + + // offset curve position by normal: + vertex.x = curve.Data[i].position.x + normal.x; + vertex.y = curve.Data[i].position.y + normal.y; + vertex.z = curve.Data[i].position.z + normal.z; + + // cross(normal, curve tangent) + texTangent.x = normal.y * curve.Data[i].tangent.z - normal.z * curve.Data[i].tangent.y; + texTangent.y = normal.z * curve.Data[i].tangent.x - normal.x * curve.Data[i].tangent.z; + texTangent.z = normal.x * curve.Data[i].tangent.y - normal.y * curve.Data[i].tangent.x; + texTangent.w = -1; + + uv.x = (j / (float)sectionSegments) * uvScale.x; + uv.y = vCoord; + + vertices.Add(vertex); + normals.Add(normal); + tangents.Add(texTangent); + vertColors.Add(curve.Data[i].color); + uvs.Add(uv); + + if (j < sectionSegments && i < curve.Count - 1) + { + tris.Add(sectionIndex * verticesPerSection + j); + tris.Add(nextSectionIndex * verticesPerSection + j); + tris.Add(sectionIndex * verticesPerSection + (j + 1)); + + tris.Add(sectionIndex * verticesPerSection + (j + 1)); + tris.Add(nextSectionIndex * verticesPerSection + j); + tris.Add(nextSectionIndex * verticesPerSection + (j + 1)); + } + } + sectionIndex++; + } + + } + + CommitMeshData(); + } + } + + private void ClearMeshData() + { + extrudedMesh.Clear(); + vertices.Clear(); + normals.Clear(); + tangents.Clear(); + uvs.Clear(); + vertColors.Clear(); + tris.Clear(); + } + + private void CommitMeshData() + { + extrudedMesh.SetVertices(vertices); + extrudedMesh.SetNormals(normals); + extrudedMesh.SetTangents(tangents); + extrudedMesh.SetColors(vertColors); + extrudedMesh.SetUVs(0, uvs); + extrudedMesh.SetTriangles(tris, 0, true); + } + } +} + + diff --git a/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeExtrudedRenderer.cs.meta b/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeExtrudedRenderer.cs.meta new file mode 100644 index 000000000..042955dba --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeExtrudedRenderer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: c4747da60837c44f9ba4b4a86879bcc8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: + - extrudedMesh: {instanceID: 0} + - section: {fileID: 11400000, guid: a0bc36a59515f413e90e10895929c938, type: 2} + executionOrder: 0 + icon: {fileID: 2800000, guid: a552ed0e1c0fd47c38eeff6d60b5b115, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeLineRenderer.cs b/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeLineRenderer.cs new file mode 100644 index 000000000..e340a7b9d --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeLineRenderer.cs @@ -0,0 +1,199 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; +using Unity.Profiling; + +namespace Obi +{ + [AddComponentMenu("Physics/Obi/Obi Rope Line Renderer", 884)] + [ExecuteInEditMode] + [RequireComponent(typeof(MeshRenderer))] + [RequireComponent(typeof(MeshFilter))] + [RequireComponent(typeof(ObiPathSmoother))] + public class ObiRopeLineRenderer : MonoBehaviour + { + static ProfilerMarker m_UpdateLineRopeRendererChunksPerfMarker = new ProfilerMarker("UpdateLineRopeRenderer"); + + private List vertices = new List(); + private List normals = new List(); + private List tangents = new List(); + private List uvs = new List(); + private List vertColors = new List(); + private List tris = new List(); + + ObiRopeBase rope; + ObiPathSmoother smoother; + +#if (UNITY_2019_1_OR_NEWER) + System.Action renderCallback; +#endif + + [HideInInspector] [NonSerialized] public Mesh lineMesh; + + [Range(0, 1)] + public float uvAnchor = 0; /**< Normalized position of texture coordinate origin along rope.*/ + + public Vector2 uvScale = Vector2.one; /**< Scaling of uvs along rope.*/ + + public bool normalizeV = true; + + public float thicknessScale = 0.8f; /**< Scales section thickness.*/ + + void OnEnable() + { + + CreateMeshIfNeeded(); + +#if (UNITY_2019_1_OR_NEWER) + renderCallback = new System.Action((cntxt, cam) => { UpdateRenderer(cam); }); + RenderPipelineManager.beginCameraRendering += renderCallback; +#endif + Camera.onPreCull += UpdateRenderer; + + rope = GetComponent(); + smoother = GetComponent(); + } + + void OnDisable() + { + +#if (UNITY_2019_1_OR_NEWER) + RenderPipelineManager.beginCameraRendering -= renderCallback; +#endif + Camera.onPreCull -= UpdateRenderer; + + GameObject.DestroyImmediate(lineMesh); + } + + private void CreateMeshIfNeeded() + { + if (lineMesh == null) + { + lineMesh = new Mesh(); + lineMesh.name = "extrudedMesh"; + lineMesh.MarkDynamic(); + GetComponent().mesh = lineMesh; + } + } + + public void UpdateRenderer(Camera camera) + { + using (m_UpdateLineRopeRendererChunksPerfMarker.Auto()) + { + + if (camera == null || !rope.gameObject.activeInHierarchy) + return; + + CreateMeshIfNeeded(); + ClearMeshData(); + + float actualToRestLengthRatio = smoother.SmoothLength / rope.restLength; + + float vCoord = -uvScale.y * rope.restLength * uvAnchor; // v texture coordinate. + int sectionIndex = 0; + + Vector3 localSpaceCamera = rope.transform.InverseTransformPoint(camera.transform.position); + Vector3 vertex = Vector3.zero, normal = Vector3.zero; + Vector4 bitangent = Vector4.zero; + Vector2 uv = Vector2.zero; + + for (int c = 0; c < smoother.smoothChunks.Count; ++c) + { + + ObiList curve = smoother.smoothChunks[c]; + + for (int i = 0; i < curve.Count; ++i) + { + + // Calculate previous and next curve indices: + int prevIndex = Mathf.Max(i - 1, 0); + + // advance v texcoord: + vCoord += uvScale.y * (Vector3.Distance(curve.Data[i].position, curve.Data[prevIndex].position) / + (normalizeV ? smoother.SmoothLength : actualToRestLengthRatio)); + + // calculate section thickness (either constant, or particle radius based): + float sectionThickness = curve.Data[i].thickness * thicknessScale; + + + normal.x = curve.Data[i].position.x - localSpaceCamera.x; + normal.y = curve.Data[i].position.y - localSpaceCamera.y; + normal.z = curve.Data[i].position.z - localSpaceCamera.z; + normal.Normalize(); + + bitangent.x = -(normal.y * curve.Data[i].tangent.z - normal.z * curve.Data[i].tangent.y); + bitangent.y = -(normal.z * curve.Data[i].tangent.x - normal.x * curve.Data[i].tangent.z); + bitangent.z = -(normal.x * curve.Data[i].tangent.y - normal.y * curve.Data[i].tangent.x); + bitangent.w = 0; + bitangent.Normalize(); + + vertex.x = curve.Data[i].position.x - bitangent.x * sectionThickness; + vertex.y = curve.Data[i].position.y - bitangent.y * sectionThickness; + vertex.z = curve.Data[i].position.z - bitangent.z * sectionThickness; + vertices.Add(vertex); + + vertex.x = curve.Data[i].position.x + bitangent.x * sectionThickness; + vertex.y = curve.Data[i].position.y + bitangent.y * sectionThickness; + vertex.z = curve.Data[i].position.z + bitangent.z * sectionThickness; + vertices.Add(vertex); + + normals.Add(-normal); + normals.Add(-normal); + + bitangent.w = 1; + tangents.Add(bitangent); + tangents.Add(bitangent); + + vertColors.Add(curve.Data[i].color); + vertColors.Add(curve.Data[i].color); + + uv.x = 0; uv.y = vCoord; + uvs.Add(uv); + uv.x = 1; + uvs.Add(uv); + + if (i < curve.Count - 1) + { + tris.Add(sectionIndex * 2); + tris.Add((sectionIndex + 1) * 2); + tris.Add(sectionIndex * 2 + 1); + + tris.Add(sectionIndex * 2 + 1); + tris.Add((sectionIndex + 1) * 2); + tris.Add((sectionIndex + 1) * 2 + 1); + } + + sectionIndex++; + } + + } + + CommitMeshData(); + } + } + + private void ClearMeshData() + { + lineMesh.Clear(); + vertices.Clear(); + normals.Clear(); + tangents.Clear(); + uvs.Clear(); + vertColors.Clear(); + tris.Clear(); + } + + private void CommitMeshData() + { + lineMesh.SetVertices(vertices); + lineMesh.SetNormals(normals); + lineMesh.SetTangents(tangents); + lineMesh.SetColors(vertColors); + lineMesh.SetUVs(0, uvs); + lineMesh.SetTriangles(tris, 0, true); + } + } +} + + diff --git a/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeLineRenderer.cs.meta b/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeLineRenderer.cs.meta new file mode 100644 index 000000000..510cd3a77 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeLineRenderer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 18f853588397d4a80a561203ed92fc8a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 905a18c273af443d6bc588b59ebd56f6, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeMeshRenderer.cs b/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeMeshRenderer.cs new file mode 100644 index 000000000..32837e564 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeMeshRenderer.cs @@ -0,0 +1,260 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using Unity.Profiling; + +namespace Obi +{ + [AddComponentMenu("Physics/Obi/Obi Rope Mesh Renderer", 886)] + [ExecuteInEditMode] + [RequireComponent(typeof(MeshRenderer))] + [RequireComponent(typeof(MeshFilter))] + [RequireComponent(typeof(ObiPathSmoother))] + public class ObiRopeMeshRenderer : MonoBehaviour + { + static ProfilerMarker m_UpdateMeshRopeRendererChunksPerfMarker = new ProfilerMarker("UpdateMeshRopeRenderer"); + + [SerializeProperty("SourceMesh")] + [SerializeField] private Mesh mesh; + + [SerializeProperty("SweepAxis")] + [SerializeField] private ObiPathFrame.Axis axis; + + public float volumeScaling = 0; + public bool stretchWithRope = true; + public bool spanEntireLength = true; + + [SerializeProperty("Instances")] + [SerializeField] private int instances = 1; + + [SerializeProperty("InstanceSpacing")] + [SerializeField] private float instanceSpacing = 1; + + public float offset = 0; + public Vector3 scale = Vector3.one; + + [HideInInspector] [SerializeField] private float meshSizeAlongAxis = 1; + + private Vector3[] inputVertices; + private Vector3[] inputNormals; + private Vector4[] inputTangents; + + private Vector3[] vertices; + private Vector3[] normals; + private Vector4[] tangents; + + private int[] orderedVertices = new int[0]; + + private ObiPathSmoother smoother; + + public Mesh SourceMesh + { + set { mesh = value; PreprocessInputMesh(); } + get { return mesh; } + } + + public ObiPathFrame.Axis SweepAxis + { + set { axis = value; PreprocessInputMesh(); } + get { return axis; } + } + + public int Instances + { + set { instances = value; PreprocessInputMesh(); } + get { return instances; } + } + + public float InstanceSpacing + { + set { instanceSpacing = value; PreprocessInputMesh(); } + get { return instanceSpacing; } + } + + [HideInInspector] [NonSerialized] public Mesh deformedMesh; + + void OnEnable() + { + smoother = GetComponent(); + smoother.OnCurveGenerated += UpdateRenderer; + PreprocessInputMesh(); + } + + void OnDisable() + { + smoother.OnCurveGenerated -= UpdateRenderer; + GameObject.DestroyImmediate(deformedMesh); + } + + private void PreprocessInputMesh() + { + + if (deformedMesh == null) + { + deformedMesh = new Mesh(); + deformedMesh.name = "deformedMesh"; + deformedMesh.MarkDynamic(); + GetComponent().mesh = deformedMesh; + } + + deformedMesh.Clear(); + + if (mesh == null) + { + orderedVertices = new int[0]; + return; + } + + // Clamp instance count to a positive value. + instances = Mathf.Max(0, instances); + + // combine all mesh instances into a single mesh: + Mesh combinedMesh = new Mesh(); + CombineInstance[] meshInstances = new CombineInstance[instances]; + Vector3 pos = Vector3.zero; + + // initial offset for the combined mesh is half the size of its bounding box in the swept axis: + pos[(int)axis] = mesh.bounds.extents[(int)axis]; + + for (int i = 0; i < instances; ++i) + { + meshInstances[i].mesh = mesh; + meshInstances[i].transform = Matrix4x4.TRS(pos, Quaternion.identity, Vector3.one); + pos[(int)axis] = mesh.bounds.extents[(int)axis] + (i + 1) * mesh.bounds.size[(int)axis] * instanceSpacing; + } + combinedMesh.CombineMeshes(meshInstances, true, true); + + // get combined mesh data: + inputVertices = combinedMesh.vertices; + inputNormals = combinedMesh.normals; + inputTangents = combinedMesh.tangents; + + // sort vertices along curve axis: + float[] keys = new float[inputVertices.Length]; + orderedVertices = new int[inputVertices.Length]; + + for (int i = 0; i < keys.Length; ++i) + { + keys[i] = inputVertices[i][(int)axis]; + orderedVertices[i] = i; + } + + Array.Sort(keys, orderedVertices); + + // Copy the combined mesh data to deform it: + deformedMesh.vertices = combinedMesh.vertices; + deformedMesh.normals = combinedMesh.normals; + deformedMesh.tangents = combinedMesh.tangents; + deformedMesh.uv = combinedMesh.uv; + deformedMesh.uv2 = combinedMesh.uv2; + deformedMesh.uv3 = combinedMesh.uv3; + deformedMesh.uv4 = combinedMesh.uv4; + deformedMesh.colors = combinedMesh.colors; + deformedMesh.triangles = combinedMesh.triangles; + + vertices = deformedMesh.vertices; + normals = deformedMesh.normals; + tangents = deformedMesh.tangents; + + // Calculate scale along swept axis so that the mesh spans the entire lenght of the rope if required. + meshSizeAlongAxis = combinedMesh.bounds.size[(int)axis]; + + // destroy combined mesh: + GameObject.DestroyImmediate(combinedMesh); + + } + + public void UpdateRenderer(ObiActor actor) + { + using (m_UpdateMeshRopeRendererChunksPerfMarker.Auto()) + { + + if (mesh == null) + return; + + if (smoother.smoothChunks.Count == 0) + return; + + ObiList curve = smoother.smoothChunks[0]; + + if (curve.Count < 2) + return; + + var rope = actor as ObiRopeBase; + + float actualToRestLengthRatio = stretchWithRope ? smoother.SmoothLength / rope.restLength : 1; + + // squashing factor, makes mesh thinner when stretched and thicker when compresssed. + float squashing = Mathf.Clamp(1 + volumeScaling * (1 / Mathf.Max(actualToRestLengthRatio, 0.01f) - 1), 0.01f, 2); + + // Calculate scale along swept axis so that the mesh spans the entire lenght of the rope if required. + Vector3 actualScale = scale; + if (spanEntireLength) + actualScale[(int)axis] = rope.restLength / meshSizeAlongAxis; + + float previousVertexValue = 0; + float meshLength = 0; + int index = 0; + int nextIndex = 1; + int prevIndex = 0; + float sectionMagnitude = Vector3.Distance(curve[index].position, curve[nextIndex].position); + + // basis matrix for deforming the mesh: + Matrix4x4 basis = curve[0].ToMatrix(axis); + + for (int i = 0; i < orderedVertices.Length; ++i) + { + + int vIndex = orderedVertices[i]; + float vertexValue = inputVertices[vIndex][(int)axis] * actualScale[(int)axis] + offset; + + // Calculate how much we've advanced in the sort axis since the last vertex: + meshLength += (vertexValue - previousVertexValue) * actualToRestLengthRatio; + previousVertexValue = vertexValue; + + // If we have advanced to the next section of the curve: + while (meshLength > sectionMagnitude && sectionMagnitude > Mathf.Epsilon) + { + + meshLength -= sectionMagnitude; + index = Mathf.Min(index + 1, curve.Count - 1); + + // Calculate previous and next curve indices: + nextIndex = Mathf.Min(index + 1, curve.Count - 1); + prevIndex = Mathf.Max(index - 1, 0); + + // Calculate current tangent as the vector between previous and next curve points: + sectionMagnitude = Vector3.Distance(curve[index].position, curve[nextIndex].position); + + // Update basis matrix: + basis = curve[index].ToMatrix(axis); + + } + + float sectionThickness = curve[index].thickness; + + // calculate deformed vertex position: + Vector3 offsetFromCurve = Vector3.Scale(inputVertices[vIndex], actualScale * sectionThickness * squashing); + offsetFromCurve[(int)axis] = meshLength; + + vertices[vIndex] = curve[index].position + basis.MultiplyVector(offsetFromCurve); + normals[vIndex] = basis.MultiplyVector(inputNormals[vIndex]); + tangents[vIndex] = basis * inputTangents[vIndex]; // avoids expensive implicit conversion from Vector4 to Vector3. + tangents[vIndex].w = inputTangents[vIndex].w; + } + + CommitMeshData(); + } + } + + private void CommitMeshData() + { + deformedMesh.vertices = vertices; + deformedMesh.normals = normals; + deformedMesh.tangents = tangents; + deformedMesh.RecalculateBounds(); + } + } +} + + diff --git a/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeMeshRenderer.cs.meta b/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeMeshRenderer.cs.meta new file mode 100644 index 000000000..0ef5b36ce --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Rendering/ObiRopeMeshRenderer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4ec7e70e3318044b69e11352b1f2136b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: c5afdc6c291b44a68be8bf66702358a5, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Utils.meta b/Assets/Obi/Scripts/RopeAndRod/Utils.meta new file mode 100644 index 000000000..1f7030543 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Utils.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 55cc87411ee7647b4a078becb6a5ed01 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopeAttach.cs b/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopeAttach.cs new file mode 100644 index 000000000..63fc3b315 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopeAttach.cs @@ -0,0 +1,22 @@ +using UnityEngine; + +namespace Obi +{ + public class ObiRopeAttach : MonoBehaviour + { + public ObiPathSmoother smoother; + [Range(0,1)] + public float m; + + public void LateUpdate() + { + if (smoother != null) + { + ObiPathFrame section = smoother.GetSectionAt(m); + transform.position = smoother.transform.TransformPoint(section.position); + transform.rotation = smoother.transform.rotation * (Quaternion.LookRotation(section.tangent, section.binormal)); + } + } + + } +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopeAttach.cs.meta b/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopeAttach.cs.meta new file mode 100644 index 000000000..1ef0c917e --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopeAttach.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 93cd44c04a2944349b4fe311545b7e05 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopePrefabPlugger.cs b/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopePrefabPlugger.cs new file mode 100644 index 000000000..045b3d99d --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopePrefabPlugger.cs @@ -0,0 +1,106 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + + +namespace Obi +{ + /** + * This component plugs a prefab instance at each cut in the rope. Optionally, it will also place a couple instances at the start/end of an open rope. + */ + [RequireComponent(typeof(ObiRope))] + [RequireComponent(typeof(ObiPathSmoother))] + public class ObiRopePrefabPlugger : MonoBehaviour + { + public GameObject prefab; /**< prefab object being instantiated at the rope cuts.*/ + public Vector3 instanceScale = Vector3.one; + public bool plugTears = true; + public bool plugStart = false; + public bool plugEnd = false; + + private List instances; /**< instances of the prefab being rendered. */ + private ObiPathSmoother smoother; + + void OnEnable() + { + instances = new List(); + smoother = GetComponent(); + smoother.OnCurveGenerated += UpdatePlugs; + } + + void OnDisable() + { + smoother.OnCurveGenerated -= UpdatePlugs; + ClearPrefabInstances(); + } + + private GameObject GetOrCreatePrefabInstance(int index) + { + if (index < instances.Count) + return instances[index]; + + GameObject tearPrefabInstance = Instantiate(prefab); + tearPrefabInstance.hideFlags = HideFlags.HideAndDontSave; + instances.Add(tearPrefabInstance); + return tearPrefabInstance; + } + + public void ClearPrefabInstances() + { + for (int i = 0; i < instances.Count; ++i) + DestroyImmediate(instances[i]); + + instances.Clear(); + } + + // Update is called once per frame + void UpdatePlugs(ObiActor actor) + { + var rope = actor as ObiRopeBase; + + // cache the rope's transform matrix/quaternion: + Matrix4x4 l2w = rope.transform.localToWorldMatrix; + Quaternion l2wRot = l2w.rotation; + + int instanceIndex = 0; + + // place prefabs at the start/end of each curve: + for (int c = 0; c < smoother.smoothChunks.Count; ++c) + { + ObiList curve = smoother.smoothChunks[c]; + + if ((plugTears && c > 0) || + (plugStart && c == 0)) + { + var instance = GetOrCreatePrefabInstance(instanceIndex++); + instance.SetActive(true); + + ObiPathFrame frame = curve[0]; + instance.transform.position = l2w.MultiplyPoint3x4(frame.position); + instance.transform.rotation = l2wRot * (Quaternion.LookRotation(-frame.tangent, frame.binormal)); + instance.transform.localScale = instanceScale; + } + + if ((plugTears && c < smoother.smoothChunks.Count - 1) || + (plugEnd && c == smoother.smoothChunks.Count - 1)) + { + + var instance = GetOrCreatePrefabInstance(instanceIndex++); + instance.SetActive(true); + + ObiPathFrame frame = curve[curve.Count - 1]; + instance.transform.position = l2w.MultiplyPoint3x4(frame.position); + instance.transform.rotation = l2wRot * (Quaternion.LookRotation(frame.tangent, frame.binormal)); + instance.transform.localScale = instanceScale; + } + + } + + // deactivate remaining instances: + for (int i = instanceIndex; i < instances.Count; ++i) + instances[i].SetActive(false); + + } + } + +} \ No newline at end of file diff --git a/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopePrefabPlugger.cs.meta b/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopePrefabPlugger.cs.meta new file mode 100644 index 000000000..ce2b9a1cf --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopePrefabPlugger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4514513daf5b14cb689daa23e9d8575e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopeReel.cs b/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopeReel.cs new file mode 100644 index 000000000..be1c694b7 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopeReel.cs @@ -0,0 +1,53 @@ +using UnityEngine; + +namespace Obi +{ + [RequireComponent(typeof(ObiRopeCursor))] + public class ObiRopeReel : MonoBehaviour + { + private ObiRopeCursor cursor; + private ObiRope rope; + + [Header("Roll out/in thresholds")] + public float outThreshold = 0.8f; + public float inThreshold = 0.4f; + + [Header("Roll out/in speeds")] + public float outSpeed = 0.05f; + public float inSpeed = 0.15f; + + public void Awake() + { + cursor = GetComponent(); + rope = GetComponent(); + } + + public void OnValidate() + { + // Make sure the range thresholds don't cross: + outThreshold = Mathf.Max(inThreshold, outThreshold); + } + + // Update is called once per frame + void Update() + { + // get current and rest lengths: + float length = rope.CalculateLength(); + float restLength = rope.restLength; + + // calculate difference between current length and rest length: + float diff = Mathf.Max(0, length - restLength); + + // if the rope has been stretched beyond the reel out threshold, increase its rest length: + if (diff > outThreshold) + restLength += diff * outSpeed; + + // if the rope is not stretched past the reel in threshold, decrease its rest length: + if (diff < inThreshold) + restLength -= diff * inSpeed; + + // set the new rest length: + cursor.ChangeLength(restLength); + } + } +} diff --git a/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopeReel.cs.meta b/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopeReel.cs.meta new file mode 100644 index 000000000..4c46cb087 --- /dev/null +++ b/Assets/Obi/Scripts/RopeAndRod/Utils/ObiRopeReel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4793f08b8350d44db99d1bc98daf625b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Fishing/Rope/IRope.cs b/Assets/Scripts/Fishing/Rope/IRope.cs new file mode 100644 index 000000000..d714ee3ca --- /dev/null +++ b/Assets/Scripts/Fishing/Rope/IRope.cs @@ -0,0 +1,12 @@ +using UnityEngine; + +namespace NBF +{ + /// + /// 鱼线脚本 + /// + public interface IRope + { + void SetLineLength(float length); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Fishing/Rope/IRope.cs.meta b/Assets/Scripts/Fishing/Rope/IRope.cs.meta new file mode 100644 index 000000000..3fa698976 --- /dev/null +++ b/Assets/Scripts/Fishing/Rope/IRope.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e702dc5afb0a467e9e01a920d959a977 +timeCreated: 1775445873 \ No newline at end of file diff --git a/Assets/Scripts/Fishing/Rope/RopeBase.cs b/Assets/Scripts/Fishing/Rope/RopeBase.cs new file mode 100644 index 000000000..e0724855d --- /dev/null +++ b/Assets/Scripts/Fishing/Rope/RopeBase.cs @@ -0,0 +1,22 @@ +using UnityEngine; + +namespace NBF +{ + public abstract class RopeBase : MonoBehaviour, IRope + { + [Header("Anchors")] [SerializeField] public Rigidbody startAnchor; + [SerializeField] public Rigidbody endAnchor; + + public float CurrentLength { get; protected set; } + + public void SetLineLength(float length) + { + CurrentLength = length; + } + + protected virtual void OnSetLineLength(float length) + { + + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Fishing/Rope/RopeBase.cs.meta b/Assets/Scripts/Fishing/Rope/RopeBase.cs.meta new file mode 100644 index 000000000..50118ad95 --- /dev/null +++ b/Assets/Scripts/Fishing/Rope/RopeBase.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2b39290e64e04f27a02a273fab64d461 +timeCreated: 1775446264 \ No newline at end of file diff --git a/Assets/Scripts/Fishing/Rope/RopeByObi.cs b/Assets/Scripts/Fishing/Rope/RopeByObi.cs new file mode 100644 index 000000000..90d35fe3c --- /dev/null +++ b/Assets/Scripts/Fishing/Rope/RopeByObi.cs @@ -0,0 +1,36 @@ +using Obi; +using UnityEngine; + +namespace NBF +{ + /// + /// 基于obi rope的鱼线控制脚本 + /// + public class RopeByObi : RopeBase + { + [SerializeField] private ObiRope rope; + + [SerializeField] private ObiRopeCursor cursor; + + [SerializeField] private float percentageElasticity = 0.2f; + + + private float _stretchScale; + + private void Awake() + { + rope = GetComponent(); + } + + private void Update() + { + rope.stretchingScale = _stretchScale; + } + + protected override void OnSetLineLength(float length) + { + cursor = ((cursor == null) ? GetComponent() : cursor); + _stretchScale = Mathf.Clamp(length - percentageElasticity, 0f, float.PositiveInfinity); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Fishing/Rope/RopeByObi.cs.meta b/Assets/Scripts/Fishing/Rope/RopeByObi.cs.meta new file mode 100644 index 000000000..52a57f7c8 --- /dev/null +++ b/Assets/Scripts/Fishing/Rope/RopeByObi.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8b7f9ea147004095b3e8390654d061a9 +timeCreated: 1775445787 \ No newline at end of file diff --git a/Assets/Settings/Mobile_RPAsset.asset b/Assets/Settings/Mobile_RPAsset.asset index 0fdefd13e..fdaa26f7b 100644 --- a/Assets/Settings/Mobile_RPAsset.asset +++ b/Assets/Settings/Mobile_RPAsset.asset @@ -12,8 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} m_Name: Mobile_RPAsset m_EditorClassIdentifier: - k_AssetVersion: 12 - k_AssetPreviousVersion: 12 + k_AssetVersion: 13 + k_AssetPreviousVersion: 13 m_RendererType: 1 m_RendererData: {fileID: 0} m_RendererDataList: @@ -53,6 +53,7 @@ MonoBehaviour: m_AdditionalLightsShadowResolutionTierHigh: 1024 m_ReflectionProbeBlending: 1 m_ReflectionProbeBoxProjection: 1 + m_ReflectionProbeAtlas: 1 m_ShadowDistance: 50 m_ShadowCascadeCount: 1 m_Cascade2Split: 0.25 @@ -78,11 +79,11 @@ MonoBehaviour: m_UseAdaptivePerformance: 1 m_ColorGradingMode: 0 m_ColorGradingLutSize: 32 + m_AllowPostProcessAlphaOutput: 0 m_UseFastSRGBLinearConversion: 1 m_SupportDataDrivenLensFlare: 1 m_SupportScreenSpaceLensFlare: 1 m_GPUResidentDrawerMode: 0 - m_UseLegacyLightmaps: 0 m_SmallMeshScreenPercentage: 0 m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0 m_ShadowType: 1 @@ -109,6 +110,7 @@ MonoBehaviour: m_PrefilterDebugKeywords: 1 m_PrefilterWriteRenderingLayers: 1 m_PrefilterHDROutput: 1 + m_PrefilterAlphaOutput: 0 m_PrefilterSSAODepthNormals: 1 m_PrefilterSSAOSourceDepthLow: 1 m_PrefilterSSAOSourceDepthMedium: 0 @@ -126,8 +128,14 @@ MonoBehaviour: m_PrefilterSoftShadowsQualityHigh: 1 m_PrefilterSoftShadows: 0 m_PrefilterScreenCoord: 1 + m_PrefilterScreenSpaceIrradiance: 0 m_PrefilterNativeRenderPass: 1 m_PrefilterUseLegacyLightmaps: 0 + m_PrefilterBicubicLightmapSampling: 0 + m_PrefilterReflectionProbeRotation: 0 + m_PrefilterReflectionProbeBlending: 0 + m_PrefilterReflectionProbeBoxProjection: 0 + m_PrefilterReflectionProbeAtlas: 0 m_ShaderVariantLogLevel: 0 m_ShadowCascades: 0 m_Textures: diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset index c70116ffe..02c876b65 100644 --- a/UserSettings/EditorUserSettings.asset +++ b/UserSettings/EditorUserSettings.asset @@ -15,34 +15,34 @@ EditorUserSettings: value: 2550581500 flags: 0 RecentlyUsedSceneGuid-0: - value: 55540305570d0f0e0c5e5e2115710d44174e4e2b7b7e77662f2d1c61b5b06069 + value: 5b575500010c51595a5b097b12770b15134f1a797b2d22367b2f4c32e6e3306d flags: 0 RecentlyUsedSceneGuid-1: - value: 5452500303515f0a5f5b5a7445775e46401519787c717f677d784860e3b1676c + value: 550903565c575c0f0b575a7611775e124e151b7e797f20657e7a1836e7e26d69 flags: 0 RecentlyUsedSceneGuid-2: - value: 050402550007590a0f565f2714200c44144e492f2f70753175711f66e0b8303c + value: 525255535d0c500f5f0b587115775c1440161b732d7c2060747f1936e6b06639 flags: 0 RecentlyUsedSceneGuid-3: - value: 06070c5f5c075c5e5e085476427a0a44474e1c2f7f7a73362f2d4d36b5b1633d + value: 5b08515306560a0a0b0b542449770715474e4d7d7b7f7769792b1863e6b7313d flags: 0 RecentlyUsedSceneGuid-4: - value: 0005505f515750595e5f5f23412507441216497f2d7f24367e711c64b6b86c61 + value: 5705040755540d0b5c5f547b417707134216487d7b707e6529714c6be6e33169 flags: 0 RecentlyUsedSceneGuid-5: - value: 54070c5452075002590c0871127b5a4443161c2f797176312c2f1e6bb1b4353d + value: 00080756500d0d0355580a7049770a44454e19732f7b7f3575794566b2b6376a flags: 0 RecentlyUsedSceneGuid-6: - value: 5309035757065a0a54575f7216265c4444151d28792e72627d2f1935bbb8673a + value: 5702075052030b0e5458087142770745104f4a7d747d72667e2d4d36b2b8676f flags: 0 RecentlyUsedSceneGuid-7: - value: 00050c5150005f5f54560f2640270d4410161c28282b72357e7c4835e4b63760 + value: 5a520c0256040b0b0f5d5a7643775914474e412e2f70243678704c6ae0e16c6d flags: 0 RecentlyUsedSceneGuid-8: - value: 06090c5f54015f5a0f085b7b11765d444e4e1e287429773178704561b3b23561 + value: 0503575f5c57085954560d2447775e4513151e7c292c2035787f4b60b4e23760 flags: 0 RecentlyUsedSceneGuid-9: - value: 5505015f5c515a085f5b092149760f441716407a787d7564287b1b36e7e1366e + value: 02550255060d590c0c0b097016770b12444f1e2b7e2a2534797f4b60b6e46c60 flags: 0 UnityEditor.ShaderGraph.Blackboard: value: 18135939215a0a5004000b0e15254b524c030a3f2964643d120d1230e9e93a3fd6e826abbd2e2d293c4ead313b08042de6030a0afa240c0d020be94c4ba75e435d8715fa32c70d15d11612dacc11fee5d3c5d1fe9ab1bf968e93e2ffcbc3e7e2f0b3ffe0e8b0be9afeffa9ffff8e85dd8390e2969e8899daa7